2014-11-27 4 views
0

Я пытаюсь решить векторное уравнение, где векторы в полярной формеMATLAB решения нелинейного алгебраическое уравнение

уравнение

100 * ехр ((пи/3) * к) + 200 * exp (x (1) j) - 300 (x (2) * j) - 315 = 0;

, как вы можете видеть, что есть два неизвестных в этом уравнении х (1) и х (2) и так как это сложное уравнение я должен быть в состоянии получить их уравнения как реальная и мнимая часть 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); 

данный ответ для x (2) равен 2.1246, однако реальный ответ равен 2.1237, и эта разница слишком велика для меня.

любые идеи?

Заранее спасибо

+1

я оценил 'f' при использовании' х (1) 'равны к результату из 'fsolve' и' x (2) = 2.1237', а значение функции было примерно '[-0.241, -0.149]', но оценка 'F' в решении, заданном' fsolve', дала результаты ' 1e-10 * [-. 0694,0.565] ', который является m uch, намного меньше. Почему вы думаете, что 'fsolve' ошибается, и вы правы? – David

+0

У меня есть точное решение для уравнения, попробуйте x (1) = 0.8931116058 и x (2) 2.123746846, и вы узнаете, что я имею в виду – MChawa

+1

. Для этих значений я получил результат '[25.724928248606034, -17.860980634387658]'. – David

ответ

0

Matlab работает нормально, у меня была опечатка в моем коде, правильное уравнение

100 * ехр ((пи/3) * к) + 200 * ехр (х (1) к) - 300 (х (2) * к) - 315 = 0 с пи/3 не 3/пи

Благодаря для всех

Смежные вопросы