leastsq#
- scipy.optimize.leastsq(func, x0, args=(), Dfun=None, full_output=False, col_deriv=False, ftol=1.49012e-08, xtol=1.49012e-08, gtol=0.0, maxfev=0, epsfcn=None, factor=100, diag=None)[源代码]#
最小化一组方程的平方和。
x = arg min(sum(func(y)**2,axis=0)) y
- 参数:
- func可调用对象
应至少接受一个(可能长度为
N
的向量)参数,并返回M
个浮点数。它不能返回 NaNs,否则拟合可能会失败。M
必须大于或等于N
。- x0ndarray
最小化的初始估计值。
- args元组,可选
传递给 func 的任何额外参数都放在此元组中。
- Dfun可调用对象,可选
用于计算 func 的雅可比矩阵的函数或方法,导数按行排列。如果为 None,则将估计雅可比矩阵。
- full_output布尔值,可选
如果为
True
,则返回所有可选输出(不仅仅是 x 和 ier)。- col_deriv布尔值,可选
如果为
True
,则指定雅可比函数按列计算导数(更快,因为没有转置操作)。- ftol浮点数,可选
平方和中所需的相对误差。
- xtol浮点数,可选
近似解中所需的相对误差。
- gtol浮点数,可选
函数向量与雅可比矩阵列之间的所需正交性。
- maxfev整数,可选
函数的最大调用次数。如果 Dfun 被提供,则默认的 maxfev 为 100*(N+1),其中 N 是 x0 中的元素数量;否则,默认的 maxfev 为 200*(N+1)。
- epsfcn浮点数,可选
用于确定雅可比矩阵前向差分近似(当 Dfun=None 时)的合适步长的变量。通常实际步长为 sqrt(epsfcn)*x。如果 epsfcn 小于机器精度,则假定相对误差在机器精度数量级。
- factor浮点数,可选
确定初始步长范围的参数(
factor * || diag * x||
)。应在(0.1, 100)
区间内。- diag序列,可选
作为变量缩放因子的 N 个正数项。
- 返回:
- xndarray
解决方案(或不成功调用的最后一次迭代结果)。
- cov_xndarray
Hessian 矩阵的逆。fjac 和 ipvt 用于构建 Hessian 矩阵的估计。None 值表示奇异矩阵,这意味着参数 x 的曲率在数值上是平坦的。要获得参数 x 的协方差矩阵,cov_x 必须乘以残差的方差 – 请参见 curve_fit。仅当 full_output 为
True
时返回。- infodictdict
一个包含以下键的可选输出字典
nfev
函数调用次数
fvec
在输出处评估的函数
fjac
最终近似雅可比矩阵 QR 分解的 R 矩阵的置换,按列存储。结合 ipvt,可以近似估计的协方差。
ipvt
一个长度为 N 的整数数组,它定义了一个置换矩阵 p,使得 fjac*p = q*r,其中 r 是一个对角线元素非递增的上三角矩阵。p 的第 j 列是单位矩阵的 ipvt(j) 列。
qtf
向量 (transpose(q) * fvec)。
仅当 full_output 为
True
时返回。- mesgstr
一条字符串消息,提供关于失败原因的信息。仅当 full_output 为
True
时返回。- ierint
一个整数标志。如果等于 1、2、3 或 4,则找到了解决方案。否则,未找到解决方案。在任何一种情况下,可选输出变量“mesg”都会提供更多信息。
另请参阅
least_squares
用于解决具有变量边界的非线性最小二乘问题的新接口。特别参见
method='lm'
。
注意
“leastsq”是 MINPACK 的 lmdif 和 lmder 算法的封装。
cov_x 是最小二乘目标函数的 Hessian 矩阵的雅可比近似。此近似假设目标函数基于某些观测目标数据 (ydata) 与参数 f(xdata, params) 的(非线性)函数之间的差异
func(params) = ydata - f(xdata, params)
使得目标函数为
min sum((ydata - f(xdata, params))**2, axis=0) params
解决方案,x,始终是 1-D 数组,无论 x0 的形状如何,或 x0 是否为标量。
示例
>>> from scipy.optimize import leastsq >>> def func(x): ... return 2*(x-3)**2+1 >>> leastsq(func, 0) (array([2.99999999]), 1)