/ / Eliminando número complexo em uma resposta usando dsolve e Matlab - matlab, equações diferenciais

Eliminando o número complexo em uma resposta usando dsolve e Matlab - matlab, equações diferenciais

Eu tentei:

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

E recebi esta resposta:

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

A resposta correta gerada manualmente é:

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

Como faço para eliminar o número complexo na resposta do Matlab?

OK, tentei o seguinte:

>> 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

Respostas:

0 para resposta № 1

Se o uso do matlab fornece uma resposta e o trabalho manual dá outra, não seja muito rápido para presumir que o matlab está errado.

Dito isto, é muito fácil obter a parte real de um número, não posso tentar, mas com a caixa de ferramentas simbólica acredito que você pode fazer:

real(y)