我有一个cosinus形状的数据集。我试着用函数拟合这个数据集:
a.cos(b-psi)+c
我的目标是估计最符合我的数据的参数a、b和c。所以我试着用西皮·莱斯特斯要将此最小化:data-a.cos(b-psi)+c
。在
(psi与数据一起找到)。在
我的初始参数是ndarray x (x=np.array([a0,b0,c0]))
,我的数据存储在一个元组args=(psi,data)
,我有我的函数:
然后我发射西皮·莱斯特斯使用以下行:
xopt = leastsq(coreg.func,x0,args,full_output=1)
(初始参数:)
Out[30]: array([ 3.8, 1.3, 0. ])
但结果是:
(array([ 3.8, 1.3, 0. ]),
None,
{'fjac': array([[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan],
[ nan, nan, nan, ..., nan, nan, nan]]),
'fvec': array([-3.17913524, -2.19610415, -2.06748506, ..., 1.76355583,
2.32077375, 2.89394884]),
'ipvt': array([1, 2, 3], dtype=int32),
'nfev': 4,
'qtf': array([ nan, nan, nan])},
'The cosine of the angle between func(x) and any column of the\n Jacobian is at most 0.000000 in absolute value',
4)
我不知道为什么它不能计算雅可比,我想这就是为什么它给我返回的参数和我最初输入的一样。在
如果有帮助,下面是每个对象的值:
Variable Type Data/Info
--------------------------------
args tuple n=2
np module <module 'numpy' from '/us<...>ages/numpy/__init__.pyc'>
psi ndarray 1201x1201: 1442401 elems, type `float64`, 11539208 bytes (11 Mb)
data ndarray 1201x1201: 1442401 elems, type `float64`, 11539208 bytes (11 Mb)
x ndarray 3: 3 elems, type `float64`, 24 bytes
你的函数的雅可比矩阵很容易解析地写出。把它交给Leatsq电话。在
谢谢你的回答!在
所以我这样输入雅可比矩阵?(抱歉,我是python初学者)
但现在又回来了:
^{pr2}$相关问题 更多 >
编程相关推荐