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