lsqcurvefit
用最小二乘求解非线性曲线拟合(数据拟合)问题
语法
说明
非线性最小二乘求解器
找到求解以下问题的系数 x
给定输入数据 xdata,观察到的输出 ydata,其中 xdata 和 ydata 是矩阵或向量,F (x, xdata) 是与 ydata 大小相同的矩阵值或向量值函数。
(可选)x 的分量需满足以下约束
参量 x、lb 和 ub 可以是向量或矩阵;请参阅矩阵参量。
lsqcurvefit
函数使用与 lsqnonlin
相同的算法。lsqcurvefit
只是为数据拟合问题提供一个方便的接口。
lsqcurvefit
要求基于用户定义的函数来计算向量值函数
,而不是计算平方和
示例
输入参数
输出参量
局限性
信赖域反射算法不能求解欠定方程组;它要求方程个数(即 F 的行维度)至少与变量个数一样。在欠定的情况下,
lsqcurvefit
使用莱文贝格-马夸特算法。lsqcurvefit
可以直接求解复数值问题。请注意,约束对于复数值没有意义,因为复数不能很好地排序;询问一个复数值是大于还是小于另一个复数值没有意义。对于具有边界约束的复数问题,请将变量分成实部和虚部。不要对复数数据使用'interior-point'
算法。请参阅对复数值数据进行模型拟合。信赖域反射方法的预条件共轭梯度部分中使用的预条件子计算在计算预条件子之前形成 JTJ(其中 J 是雅可比矩阵)。因此,如果 J 的一行包含许多非零值(这会导致近乎稠密的乘积 JTJ),则可能导致大型问题的求解过程成本高昂。
如果 x 的分量没有上界(或下界),
lsqcurvefit
更倾向于ub
(或lb
)的对应分量设置为inf
(对于下界,则为-inf
),而不是任意但非常大的正数(对于下界,则为负数)。
您可以在 lsqnonlin
、lsqcurvefit
、fsolve
中使用信赖域反射算法求解中小规模问题,而无需计算 fun
中的雅可比矩阵或提供雅可比矩阵稀疏模式。(这也适用于使用 fmincon
或 fminunc
而不计算黑塞矩阵或提供黑塞矩阵稀疏模式的情况。)中小规模有多小?没有绝对的答案,因为这取决于您的计算机系统配置中的虚拟内存量。
假设您的问题有 m
个方程和 n
个未知数。如果命令 J = sparse(ones(m,n))
导致您的计算机上出现 Out of memory
错误,则这肯定是因为问题太大。即使它没有导致错误,问题仍可能太大。只有运行它并查看 MATLAB 是否在系统可用的虚拟内存量内运行,您才能找到答案。
算法
莱文贝格-马夸特和信赖域反射方法基于非线性最小二乘算法,这些算法也在 fsolve
中使用。
'interior-point'
算法使用 fmincon
'interior-point'
算法,但有一些修正。有关详细信息,请参阅针对约束最小二乘修正的 fmincon 算法。
替代功能
App
优化实时编辑器任务为 lsqcurvefit
提供可视化界面。
参考
[1] Coleman, T.F. and Y. Li. “An Interior, Trust Region Approach for Nonlinear Minimization Subject to Bounds.” SIAM Journal on Optimization, Vol. 6, 1996, pp. 418–445.
[2] Coleman, T.F. and Y. Li. “On the Convergence of Reflective Newton Methods for Large-Scale Nonlinear Minimization Subject to Bounds.” Mathematical Programming, Vol. 67, Number 2, 1994, pp. 189–224.
[3] Dennis, J. E. Jr. “Nonlinear Least-Squares.” State of the Art in Numerical Analysis, ed. D. Jacobs, Academic Press, pp. 269–312.
[4] Levenberg, K. “A Method for the Solution of Certain Problems in Least-Squares.” Quarterly Applied Mathematics 2, 1944, pp. 164–168.
[5] Marquardt, D. “An Algorithm for Least-squares Estimation of Nonlinear Parameters.” SIAM Journal Applied Mathematics, Vol. 11, 1963, pp. 431–441.
[6] Moré, J. J. “The Levenberg-Marquardt Algorithm: Implementation and Theory.” Numerical Analysis, ed. G. A. Watson, Lecture Notes in Mathematics 630, Springer Verlag, 1977, pp. 105–116.
[7] Moré, J. J., B. S. Garbow, and K. E. Hillstrom. User Guide for MINPACK 1. Argonne National Laboratory, Rept. ANL–80–74, 1980.
[8] Powell, M. J. D. “A Fortran Subroutine for Solving Systems of Nonlinear Algebraic Equations.” Numerical Methods for Nonlinear Algebraic Equations, P. Rabinowitz, ed., Ch.7, 1970.