/ / Eliminare un numero complesso in una risposta usando dsolve e Matlab - matlab, equazioni differenziali

Eliminare il numero complesso in una risposta usando dsolve e Matlab - matlab, equazioni differenziali

Ho provato:

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

E ho ottenuto questa risposta:

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

La risposta corretta generata a mano è:

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

Come posso eliminare il numero complesso nella risposta di Matlab?

OK, ho provato questo:

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

risposte:

0 per risposta № 1

Se il tuo uso di matlab dà una risposta e il tuo lavoro manuale ne dà un'altra, non essere troppo veloce per presumere che Matlab sia in colpa.

Detto questo, ottenere la parte reale di un numero è molto semplice, non posso provarlo ma con la cassetta degli attrezzi simbolica credo che tu possa semplicemente fare:

real(y)