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

黑森语的反义词。 fjacipvt 用来构建黑森语的估计值。值None表示奇异矩阵,表示参数中的曲率 x 在数字上是平坦的。求出参数的协方差矩阵 xcov_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)