如何约束求解向量中的值?

时间:2015-05-18 12:12:50

标签: matlab

我的一组非线性方程的解决方案向量必须对其两个元素具有相同的值。即X(3)必须等于X(5)。如何在MATLAB中使用fsolve将其纳入我的程序?感谢

1 个答案:

答案 0 :(得分:1)

假设fsolve的原始fun参数返回大小为N的向量。

您需要重写系统的fun非线性LHS,使其返回长度为N+1的向量,返回向量中的最后一个元素为X(5)-X(3)。即只需在您的非线性系统中添加等式约束作为新的等式。

示例:假设您的非线性问题是fun(Xf) == 0,并且您可以从向量X0中解决问题。然后

  • 如果fun返回值,则:

    fun1 = @(X) [fun(X); X(5)-X(3)]
    
  • 如果fun返回值,则:

    fun1 = @(X) [fun(X), X(5)-X(3)]
    

然后你打电话:

Xf = fsolve(fun1, X0, ...);  %// here add the parameters that you want