【问题标题】:MATLAB - lsqnonlin for equation systemsMATLAB - 用于方程系统的 lsqnonlin
【发布时间】:2013-07-26 02:46:59
【问题描述】:

我的系统如下:

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:有时我会使用一个额外的方程(类似于这两个),从而使系统超定。还能用吗?

【问题讨论】:

    标签: algorithm matlab equation-solving nonlinear-optimization


    【解决方案1】:

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

    干杯

    【讨论】:

      猜你喜欢
      • 2016-09-09
      • 2014-08-22
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多