/ / Eliminar números complejos en una respuesta usando dsolve y Matlab - matlab, ecuaciones diferenciales

Eliminando el número complejo en una respuesta usando dsolve y Matlab - matlab, ecuaciones diferenciales

He intentado:

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

Y obtuve esta respuesta:

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

La respuesta correcta generada a mano es:

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

¿Cómo elimino el número complejo en la respuesta de Matlab?

OK, probé esto:

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

Respuestas

0 para la respuesta № 1

Si su uso de matlab le da una respuesta y su trabajo manual le da otra, no se apresure a suponer que es culpa de matlab.

Dicho esto, obtener la parte real de un número es muy fácil, no puedo probarlo, pero con la caja de herramientas simbólica creo que puedes hacer lo siguiente:

real(y)