用dsolve和Matlab消除答案中的复数
我试过:用dsolve和Matlab消除答案中的复数,matlab,differential-equations,Matlab,Differential Equations,我试过: >> 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答案中的复数 好的,试过这个: >> dsolve(diff(y)==(x+2)/(x*(3
>> 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答案中的复数
好的,试过这个:
>> 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
如果您使用matlab给出了一个答案,而您的手工劳动给出了另一个答案,那么不要太快地认为matlab是错误的 也就是说,获取数字的真实部分非常容易,我无法尝试,但使用符号工具箱,我相信您可以做到:
real(y)
看看上面我得到了什么。看来是解决问题的办法。