MATLAB求解非线性代数方程

时间:2014-11-27 22:19:38

标签: matlab algebra equation-solving nonlinear-functions

我正在尝试解决矢量为极坐标形式的矢量方程

等式是

100 * exp((pi / 3)* j)+ 200 * exp(x(1) j) - 300 (x(2)* j) - 315 = 0;

正如你所看到的,在这个等式x(1)和x(2)中有两个未知数,因为它是一个复杂的等式,我应该能够通过等式将实部和虚部得到它们。

我尝试使用fsolve,但准确性非常差,并且随着我的增加它没有变得更好

我的剧本:

function F = myfun(x)
F = [real(100*exp((pi/3)*1i) + 200*exp(x(1)*1i) - 300*exp(x(2)*1i) - 315); imag(100*exp((pi/3)*1i) + 200*exp(x(1)*1i) - 300*exp(x(2)*1i) - 315)];

我的matlab代码:

x0 = [0,0];
options = optimset(optimset('fsolve'), 'TolFun', 1.0e-25, 'TolX',1.0e-25);
[x,fval] = fsolve(@myfun,x0,options);

x(2)的给定答案是2.1246,但真正的答案是2.1237,这个差异对我来说太大了。

任何想法?

提前致谢

1 个答案:

答案 0 :(得分:0)

Matlab工作正常,我的代码中有一个错字,正确的等式是

100 * exp((pi / 3)* j)+ 200 * exp(x(1)j) - 300(x(2)* j) - 315 = 0,pi / 3不是3 / pi

谢谢大家