你如何在matlab中求解非线性方程组?

时间:2016-10-25 21:42:26

标签: matlab

我正在尝试使用MATLAB来查找

的关键值
f(x,y) = (y-2)ln(xy)

diff(f,x) = (y - 2)/x = 0
diff(f,y) = log(x*y) + (y - 2)/y = 0

手动求解上述2个方程和2个未知数,得到x = 1/2和y = 2.但是如何让MATLAB得到这个结果呢?

我知道我必须使用fsolvefzero,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

如果你真的想用fsolve解决这个问题,你可以这样做:

o = optimoptions('fsolve','MaxFunEvals',1e5,'MaxIter',1e5);

x0 = [.9;2.1]; % Note this IS SENSITIVE to the starting location!

f = @(x) [(x(2) - 2) / x(1); log(x(2)) + log(x(1)) + 1 - 2/x(2)];
x = fsolve(f,x0, o)