MATLAB求解非线性代数方程

MATLAB求解非线性代数方程,matlab,algebra,equation-solving,nonlinear-functions,Matlab,Algebra,Equation Solving,Nonlinear Functions,我试图解一个向量方程,其中向量是极坐标形式的 方程式是 100*exppi/3*j+200*expx1j-300x2*j-315=0 正如你所看到的,在这个方程x1和x2中有两个未知数,因为它是一个复杂的方程,我应该能够通过方程得到它们,实部和虚部为0 我试着使用fsolve,但是精确度很差,而且随着我的增加,它没有得到任何改善 我的剧本: function F = myfun(x) F = [real(100*exp((pi/3)*1i) + 200*exp(x(1)*1i) - 300*ex

我试图解一个向量方程,其中向量是极坐标形式的

方程式是

100*exppi/3*j+200*expx1j-300x2*j-315=0


正如你所看到的,在这个方程x1和x2中有两个未知数,因为它是一个复杂的方程,我应该能够通过方程得到它们,实部和虚部为0

我试着使用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);
x2的给定答案是2.1246,但实际答案是2.1237,这个差异对我来说太大了

有什么想法吗


提前感谢

Matlab工作正常,我的代码中有一个输入错误,正确的公式是

100*exppi/3*j+200*expx1j-300x2*j-315=0,pi/3不是3/pi


感谢大家

我在使用x1时计算F等于fsolve的结果,x2=2.1237,函数值大约为[-0.241,-0.149],但在fsolve给出的解中计算F得到的结果是1e-10*[-.0694,0.565],这要小得多。为什么你认为fsolve是错的,而你是对的?我有方程的精确解,试试x1=0.8931116058和x2 2.123746846,你就会知道我对这些值的意思,我得到的结果是[25.724928248606034,-17.860980634387658].因为这是一个复杂的方程,我应该能够通过方程得到它们的实部和虚部为0不。您可能能够解决某些问题,但如果您想要唯一的解决方案,则需要提供一些关于x1和x2的附加约束或附加信息。你假设的真实答案不是你最初函数的根。你的方程很简单,可以用符号来解。你可以试着解决这个问题。抱歉,大卫,我给了你错误的分数,试试x1=1.003683025和x2=2.123746846,问题是这个问题可以用图形解决,我在cad软件上解决了。这就是为什么我知道这个解决方案,但我也需要用matlab解决并确认它