MATLAB - 用于方程系统的lsqnonlin

时间:2013-07-26 00:36:55

标签: algorithm matlab equation-solving nonlinear-optimization

我有一个系统如下:

A*(B-C-D) - ( sqrt( (E-x)^2 + (F-y)^2 ) - sqrt( (G-x)^2 + (H-y)^2 ) = p

A*(I-J-K) - ( sqrt( (L-x)^2 + (M-y)^2 ) - sqrt( (N-x)^2 + (O-y)^2 ) = p

系数[A-O]的值是已知的,我试图估计[x,y](通过最小化p的值)。如果有必要,我有一个开始猜测[x0,y0]。

我不太熟悉matlab中的函数处理。我如何编程(使用RLS解决方案 - 这让我想到了lsqnonlin)?我应该使用lsqnonlin吗?

我正在使用MATLAB 2010b。谢谢你们。

PS:有时我使用额外的等式(类似于这两个),因此使系统超定。它还能用吗?

1 个答案:

答案 0 :(得分:0)

使用lsqnonlin是有道理的;

考虑文档符号(http://www.mathworks.fr/fr/help/optim/ug/lsqnonlin.html),功能如下:

f1 = sqrt( (E-x)^2 + (F-y)^2 ) + sqrt( (G-x)^2 + (H-y)^2 ) + p - A(B-C-D)
f2 = sqrt( (L-x)^2 + (M-y)^2 ) - sqrt( (N-x)^2 + (O-y)^2 ) + p - A(I-J-K)

求解器将最小化f1 ^ 2 + f2 ^ 2。当然,您可以添加其他方程式,但不会将它们视为硬约束。

如果您希望解决方案强制执行约束,您应该可以使用fsolve执行此操作。

干杯