课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
10分钟

最小二乘法拟合数据1

最小二乘法拟合数据:

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)
  • func:是个可调用对象,给出每次拟合的残差。最开始的参数是待优化参数;后面的参数由args给出
  • x0:初始迭代值
  • args:一个元组,用于给func提供额外的参数。
  • Dfun:用于计算func的雅可比矩阵(按行排列)。默认情况下,算法自动推算。它给出残差的梯度。最开始的参数是待优化参数;后面的参数由args给出
  • full_output:如果非零,则给出更详细的输出
  • col_deriv:如果非零,则计算雅可比矩阵更快(按列求导)
  • ftol:指定相对的均方误差的阈值
  • xtol:指定参数解收敛的阈值
  • gtol:Orthogonality desired between the function vector and the columns of the Jacobian
  • maxfev:设定算法迭代的最大次数。如果为零:如果为提供了Dfun,则为 100*(N+1)Nx0的长度;如果未提供Dfun,则为200*(N+1)
  • epsfcn:采用前向差分算法求解雅可比矩阵时的步长。
  • factor:它决定了初始的步长
  • diag:它给出了每个变量的缩放因子

返回值:

  • x:拟合解组成的数组
  • cov_x:Uses the fjac and ipvt optional outputs to construct an estimate of the jacobian around the solution
  • infodict:给出了可选的输出。它是个字典,其中的键有:
    • nfevfunc调用次数
    • fvec:最终的func输出
    • fjac:A permutation of the R matrix of a QR factorization of the final approximate Jacobian matrix, stored column wise.
    • ipvt:An integer array of length N which defines a permutation matrix, p, such that fjacp = qr, where r is upper triangular with diagonal elements of nonincreasing magnitude
  • ier:一个整数标记。如果为 1/2/3/4,则表示拟合成功
  • mesg:一个字符串。如果解未找到,则它给出详细信息

假设我们拟合的函数是 f(x,y;a,b,c),其中 a,b,c 为参数。假设数据点的横坐标为 X,纵坐标为 Y,那么我们可以给出func为:

def func(p,x,y):
    a,b,c=p.tolist() # 这里p 为数组,形状为 (3,); x,y 也是数组,形状都是 (N,)
    return f(x,y;a,b,c))

其中 args=(X,Y)

而雅可比矩阵为 [∂f/∂a,∂f/∂b,∂f/∂c],给出Dfun为:

 def func(p,x,y):
    a,b,c=p.tolist()
    return np.c_[df/da,df/db,df/dc]# 这里p为数组,形状为 (3,);x,y 也是数组,形状都是 (N,)

其中 args=(X,Y)