如何在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

手工解上述两个方程和两个未知数,得到x = 1/2和y = 2。但是我如何让MATLAB产生这个结果呢?

我知道我必须使用fsolve或f0,但我不确定如何使用。

如果你真的想用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)

最新更新