scipy.optimize.leastsq¶
- scipy.optimize.leastsq(func, x0, args=(), Dfun=None, full_output=0, col_deriv=0, 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可调用,可选
用跨行导数计算函数的雅可比的函数或方法。如果该值为None,则将估计雅可比。
- full_output布尔值,可选
非零表示返回所有可选输出。
- col_deriv布尔值,可选
非零值指定Jacobian函数沿列向下计算导数(速度更快,因为没有转置操作)。
- ftol浮动,可选
平方和所需的相对误差。
- xtol浮动,可选
近似解中所需的相对误差。
- gtol浮动,可选
函数向量和雅可比矩阵的列之间所需的正交性。
- maxfev整型,可选
对函数的最大调用次数。如果 Dfun ,则默认设置为 maxfev 是100 (N+1) where N is the number of elements in x0, otherwise the default `maxfev` is 200 (n+1)。
- epsfcn浮动,可选
用于确定雅可比前向差分近似的合适步长的变量(DFUN=NONE)。通常情况下,如果epsfcn小于机器精度,则实际步长为sqrt(Epsfcn)*x,假设相对误差为机器精度的量级。
- factor浮动,可选
确定初始步长界限的参数 (
factor * || diag * x||
)。应在间隔内(0.1, 100)
。- diag序列,可选
N个正条目,用作变量的比例因子。
- 退货
- xndarray
解决方案(或上次迭代失败调用的结果)。
- cov_xndarray
黑森语的反义词。 fjac 和 ipvt 用来构建黑森语的估计值。值None表示奇异矩阵,表示参数中的曲率 x 在数字上是平坦的。求出参数的协方差矩阵 x , cov_x 必须乘以残差的方差--请参阅curve_fit。
- infodictDICT
带有键的可选输出字典:
nfev
函数调用的数量
fvec
在输出时计算的函数
fjac
按列存储的最终近似雅可比矩阵的QR因式分解的R矩阵的排列。与IPVT一起,可以近似估计的协方差。
ipvt
长度为N的整数数组,其定义置换矩阵p,使得fjac p = q r,其中r是具有非增量值的对角元素的上三角形。p的列j是单位矩阵的列ipvt(J)。
qtf
向量(转置(Q)*fvec)。
- mesg应力
提供有关故障原因信息的字符串消息。
- ier集成
整数标志。如果它等于1、2、3或4,则表示找到了解。否则,将找不到解决方案。在这两种情况下,可选的输出变量‘mesg’都会提供更多信息。
参见
least_squares
更新的界面,用于解决变量有界的非线性最小二乘问题。看见
method=='lm'
尤其是。
注意事项
“leastsq”是MINPACK的lmdif和lmder算法的包装器。
CoVx是对最小二乘目标函数的Hessian的雅可比近似。该近似假设目标函数基于某些观测目标数据(Ydata)和参数的(非线性)函数之间的差 f(xdata, params) ::
func(params) = ydata - f(xdata, params)
因此,目标函数为:
min sum((ydata - f(xdata, params))**2, axis=0) params
解决方案是, x ,始终是一维数组,而不管其形状如何 x0 ,或者是否 x0 是一个标量。
示例
>>> from scipy.optimize import leastsq >>> def func(x): ... return 2*(x-3)**2+1 >>> leastsq(func, 0) (array([2.99999999]), 1)