解决非线性曲线拟合(数据拟合)在最小二乘意义上的问题
非线性最小二乘解算器
找到系数x,解决问题
给定的输入数据xdata和观察到的输出ydata,在那里xdata和ydata矩阵或向量,然后呢F(x,xdata)是一个矩阵值或向量值函数相同的大小ydata。
可选的组件x可以上下界限吗磅,乌兰巴托。的参数x,磅,乌兰巴托可以是向量或矩阵;看到矩阵的参数。
的lsqcurvefit
函数使用相同的算法lsqnonlin
。lsqcurvefit
仅仅提供了一个方便的接口数据拟合问题。
而不是计算平方和,lsqcurvefit
需要用户定义函数计算向量价值函数
trust-region-reflective算法不能解决欠定的系统;它要求方程的数目,即。的行维度F,至少是大数量的变量。在欠定的情况下,lsqcurvefit
使用Levenberg-Marquardt算法。
lsqcurvefit
可以直接解决复数的问题。一个绑定约束为复杂的值做没有意义。绑定约束一个复杂的问题,将变量分为实部和虚部。看到适合一个复数的数据模型。
中使用的预调节器计算条件共轭梯度trust-region-reflective方法形式的一部分JTJ(J雅可比矩阵)计算预调节器。因此,一排J与许多非零,导致近密集的产品JTJ大,可能会导致一个昂贵的解决方案过程问题。
如果组件x没有上(或下),lsqcurvefit
喜欢,相应的组成部分乌兰巴托
(或磅
)被设置为正
(或负
下界)而不是任意但非常大的积极(或消极下界)号码。
您可以使用信赖域反射算法lsqnonlin
,lsqcurvefit
,fsolve
小到中等规模的问题,没有计算雅可比矩阵有趣的
或提供雅可比矩阵稀疏模式。(这也适用于使用fmincon
或fminunc
没有计算黑森或提供黑森稀疏模式。)小到中等规模的有多小?没有绝对的答案是,这取决于虚拟内存的数量在你的电脑系统配置。
假设你的问题米
方程和n
未知数。如果命令J =稀疏((m, n))
导致一个内存不足
错误在您的机器上,那么这肯定是太大的问题。如果它不会导致一个错误,这个问题可能仍然太大。你可以找到只有运行它,看到如果MATLAB运行在系统上可用的虚拟内存的数量。
Levenberg-Marquardt和trust-region-reflective方法是基于非线性最小二乘算法用于fsolve
。
默认trust-region-reflective算法是一个子空间信赖域方法和基于interior-reflective牛顿方法中描述[1]和[2]。每个迭代都包括近似解大型线性系统使用条件共轭梯度法(PCG)。看到Trust-Region-Reflective最小二乘。
Levenberg-Marquardt方法中描述的引用[4],[5],[6]。看到Levenberg-Marquardt方法。
的优化住编辑任务提供了一个可视化界面lsqcurvefit
。
[1]科尔曼,T.F.和y。“内部,信赖域方法对非线性最小化范围。”暹罗杂志上优化》第六卷,1996年,页418 - 445。
[2]科尔曼,T.F.和y。“大规模非线性最小化的反光牛顿方法的收敛范围。”数学规划2号,卷。67年,1994年,页189 - 224。
[3]丹尼斯,j·e·Jr .)“非线性最小二乘。”先进的数值分析艾德。d . Jacobs学术出版社,页269 - 312。
[4]Levenberg, k”解决某些问题的一种方法,在最小二乘。”2季度应用数学,1944年,页164 - 168。
[5]马夸特,“非线性参数的最小二乘估计算法。”暹罗《应用数学11卷,1963年,页431 - 441。
[6],j。j“Levenberg-Marquardt算法:实现和理论”。数值分析,艾德。g·a·沃森在630年数学课堂讲稿,施普林格-,1977年,页105 - 116。
[7],J·J。,B. S. Garbow, and K. E. Hillstrom.用户指南MINPACK 1。阿贡国家实验室,报告。退火- 80 - 74,1980。
[8]鲍威尔,m . j . d .“一个Fortran子例程求解非线性代数方程组。”非线性代数方程的数值方法,艾德。p . Rabinowitz Ch.7, 1970年。