2014-01-22 3 views
1

Я пробовал:Устранение комплексного числа в ответ, используя dsolve и Matlab

>> dsolve('Dy=(x+2)/(x*(3-x))','y(1)=2','x') 

И получил такой ответ:

ans = (pi*5*i)/3 - (5*log(x - 3))/3 + (5*log(2))/3 + (2*log(x))/3 + 2 

Правильная рука генерируется ответ:

y = 2/3*log(x) -5/3*log(3-x) + (2+5/3*log(2)) 

Как устранить комплексное число в ответе Matlab?

OK, попытался это:

>> dsolve(diff(y)==(x+2)/(x*(3-x)),y(1)==2,x) 

ans = 

(pi*5*i)/3 - (5*log(x - 3))/3 + (5*log(2))/3 + (2*log(x))/3 + 2 

>> real(ans) 

ans = 

(2*log(abs(x)))/3 + (5*log(2))/3 - (5*log(abs(x - 3)))/3 + 2 

>> pretty(ans) 

    2 log(|x|) 5 log(2) 5 log(|x - 3|) 
    ---------- + -------- - -------------- + 2 
     3   3    3 

ответ

0

Если использование MATLAB дает один ответ и ваш ручной труд дает другой, не слишком быстро, чтобы предположить, что MATLAB Iis в вине.

Это, как говорится, получить реальную часть числа очень легко, я не могу попробовать, но с символическими инструментариями я полагаю, вы можете просто сделать:

real(y) 
+0

Смотрите выше, что я получил. Похож на решение проблемы. – David

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

  • Нет связанных вопросов^_^