【发布时间】:2013-01-15 06:35:38
【问题描述】:
我有一个复数数据集,我希望能够找到最适合数据的参数。您可以使用 Python 中的 scipy 实现的 minimumsq 将数据拟合为复数吗?
例如,我的代码是这样的:
import cmath
from scipy.optimize import leastsq
def residuals(p,y,x):
L,Rs,R1,C=p
denominator=1+(x**2)*(C**2)*(R1**2)
sim=complex(Rs+R1/denominator,x*L-(R1**2)*x*C/denominator)
return(y-sim)
z=<read in data, store as complex number>
x0=np.array[1, 2, 3, 4]
res = leastsq(residuals,x0, args=(z,x))
但是,residuals 不喜欢使用我的复数,我收到错误:
File "/tmp/tmp8_rHYR/___code___.py", line 63, in residuals
sim=complex(Rs+R1/denominator,x*L-(R1**_sage_const_2 )*x*C/denominator)
File "expression.pyx", line 1071, in sage.symbolic.expression.Expression.__complex__ (sage/symbolic/expression.cpp:7112)
TypeError: unable to simplify to complex approximation
我猜我只需要使用浮点数/双精度数而不是复数。在这种情况下,我如何分别评估真实和复杂的部分,然后将它们重新组合成一个单一的错误度量以供residuals 返回?
【问题讨论】:
标签: python scipy least-squares cmath