繁体   English   中英

使用dsolve和Matlab消除答案中的复数

[英]Eliminating complex number in an answer using dsolve and 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

如果您使用Matlab给出了一个答案,而您的体力劳动给出了另一个答案,请不要太快就以为matlab iis是有问题的。

话虽如此,获得数字的实部部分非常容易,我无法尝试,但是我相信使用符号工具箱就可以做到:

real(y)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM