[Maxima] Homogeneous differential equations

Jaime Villate villate at fe.up.pt
Tue Sep 25 02:01:03 CDT 2007


On Mon, 2007-09-24 at 17:06 -0300, Ismael Garrido wrote:
> I'm trying to solve Homogeneous ODEs and I get the following:
> 
> Maxima 5.10.0 http://maxima.sourceforge.net
> Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL)
> (Under Ubuntu Feisty)
> 
> (%i1) a : 'diff(y,x,3)+'diff(y,x,2)+'diff(y,x)+y=0;
> (%o1) 'diff(y,x,3)+'diff(y,x,2)+'diff(y,x,1)+y=0
> (%i2) ode2(a, x, y);
> (%t2) 'diff(y,x,3)+'diff(y,x,2)+'diff(y,x,1)+y=0
> msg1
> (%o2) false

The documentation says:

(%i5) ? ode2

 -- Function: ode2 (<eqn>, <dvar>, <ivar>)
     The function `ode2' solves an ordinary differential equation (ODE)
     of first or second order. It takes three arguments: an ODE given by
     <eqn>, the dependent variable <dvar>, and the independent variable
     <ivar>. 

Your equation is of third order, so ode2 will not work.

> I would expect Maxima to take the characteristic polynomial (lambda^3
> + 
> l^2 + l + 1), found it's roots and return the general solution. Why 
> isn't it? 

It will! If you use the "desolve" function:
ve 
(%i13) a : diff(y(x),x,3)+diff(y(x),x,2)+diff(y(x),x)+y(x)=0;

(%o13) 'diff(y(x),x,3)+'diff(y(x),x,2)+'diff(y(x),x,1)+y(x) = 0

(%i14) desolve(a,y(x));

(%o14) y(x) = sin(x)*(?%at('diff(y(x),x,2),x = 0)
              +2*(?%at('diff(y(x),x,1),x = 0)) + y(0))/2
              +%e^-x*(?%at('diff(y(x),x,2),x = 0) + y(0))/2
              -cos(x)*(?%at('diff(y(x),x,2),x = 0) - y(0))/2

I have not seen how ode2 works and how it solves a second-order
homogeneous linear equation, so I cannot tell you how easy or hard it
would be to extend it into higher orders. desolve uses Laplace
transforms.

Regards,
Jaime Villate



More information about the Maxima mailing list