2

我有一个系统如下:

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

系数 [AO] 的值是已知的,我正在尝试估计 [x,y](通过最小化 p 的值)。如有必要,我有一个起始猜测 [x0,y0]。

我对matlab中的函数处理不是很精通。我该如何编程(使用 RLS 解决方案——这让我想到了 lsqnonlin)?我应该使用 lsqnonlin 吗?

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

PS:有时我使用一个额外的方程(类似于这两个),因此使系统超定。它还会起作用吗?

4

1 回答 1

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 来实现。

干杯

于 2013-07-26T07:47:06.987 回答