[Maxima] desolve cannot solve some differential equations that ode2 can?

Jaime Villate villate at fe.up.pt
Wed Nov 14 19:33:33 CST 2007


On Wed, 2007-11-14 at 15:05 -0800, novakyu wrote:
> eqn1: %i * 'diff(a(t),t) = exp(%i * d * t) * b(t);
> eqn2: %i * 'diff(b(t),t) = exp(-%i * d * t) * a(t);

> (%i27) desolve([eqn1, eqn2],[a(t),b(t)]);
> 
> `algsys' cannot solve - system too complicated.
> `desolve' can't handle this case.

desolve finds the Laplace transform of each equation and, only in the
simple cases when the resulting system is an algebraic system, it solves
it.
ode2 solves various different types of first and second order
differential equations.
desolve does not know how to simplify your system with a simple
substitution such as c(t)=exp(%i*d*t)*b(t). If you give it some help, it
will solve your system:

(%i24) eqn1: %i * 'diff(a(t),t) = exp(%i * d * t) * b(t)$
(%i25) eqn2: %i * 'diff(b(t),t) = exp(-%i * d * t) * a(t)$
(%i26) eqn1, b(t)=exp(-%i * d * t)*c(t);
(%o26) %i*'diff(a(t),t,1) = c(t)
(%i27) eqn2, b(t)=exp(-%i * d * t)*c(t), diff, ratsimp;
(%o27) %e^-(%i*d*t)*(%i*'diff(c(t),t,1)+d*c(t)) = %e^-(%i*d*t)*a(t)
(%i28) %*exp(%i * d * t);
(%o28) %i*'diff(c(t),t,1)+d*c(t) = a(t)
(%i29) desolve([%o26,%o28],[a(t),c(t)]);
(%o29) [a(t) = %e^(%i*d*t/2)*((2*(-%i*a(0)*d-%i*c(0))+%i*a(0)*d)
                             *sin(sqrt(d^2+4)*t/2)
                             /sqrt(d^2+4)
                             +a(0)*cos(sqrt(d^2+4)*t/2)),
        c(t) = %e^(%i*d*t/2)*((%i*c(0)*d-2*%i*a(0))*sin(sqrt(d^2+4)*t/2)
                             /sqrt(d^2+4)
                             +c(0)*cos(sqrt(d^2+4)*t/2))]

Regards,
Jaime Villate



More information about the Maxima mailing list