Subject: Contributing some first order ode routines
From: Dan Stanger
Date: Sun, 25 Jan 2004 09:38:16 -0500
I have been converting Alan Head's Lie53 symmetry code to maxima.
Can we integrate this code with yours?
"Billinghurst, David (CALCRTS)" wrote:
> Over my summer break I have managed to work on my first order ode
> routines. I have attached a brief description below. I'd like to
> create a share/contrib/diffequations directory and put them there
> to mature for a while. Any objections.
>
> ========================== contrib_ode.usg ========================
> -*- mode: Text; -*-
>
> MAXIMA's ordinary differential equation (ODE) solver ODE2 solves
> elementary linear ODEs of first and second order. The function
> contrib_ode extends ODE2 with additional methods. The code may be
> integrated into MAXIMA at some stage.
>
> The calling convention for contrib_ode is identical to ODE2. It takes
> three arguments: an ODE (only the left hand side need be given if the
> right hand side is 0), the dependent variable, and the independent
> variable. When successful, it returns a list of solutions. Each
> solution can be: an explicit solution for the dependent variable; an
> implicit solution for the dependent variable; or a parametric solution
> in terms of variable %t. %C is used to represent the constant in the
> case of first order equations, and %K1 and %K2 the constants for
> second order equations. If contrib_ode cannot obtain a solution for
> whatever reason, it returns FALSE, after perhaps printing out an error
> message.
>
> (C1) eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;
>
> dy 2 dy
> (D1) x (--) - (x y + 1) -- + y = 0
> dx dx
>
> (C2) contrib_ode(eqn,y,x);
>
> x
> (D2) [y = LOG(x) + %C, y = %C %E ]
>
> (C3) method;
>
> (D3) FACTOR
>
> Nonlinear odes can have singular solutions without constants of
> integration.
>
> (C4) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
>
> dy 2 dy
> (D4) (--) + x -- - y = 0
> dx dx
>
> (C5) contrib_ode(eqn,y,x);
>
> 2
> 2 x
> (D5) [y = %C x + %C , y = - --]
> 4
> (C6) method;
>
> (D6) clairault
>
> The following ode has two parametric solutions in terms of the dummy
> variable %t. In this case the parametric solutions can be manipulated
> to give explicit solutions.
>
> (C7) eqn:'diff(y,x)=(x+y)^2;
>
> dy 2
> (D7) -- = (y + x)
> dx
>
> (C8) contrib_ode(eqn,y,x);
>
> (D8) [[x = %C - ATAN(SQRT(%T)), y = - x - SQRT(%T)],
> [x = ATAN(SQRT(%T)) + %C, y = SQRT(%T) - x]]
>
> (C9) method;
>
> (D9) lagrange
>
> For first order ODEs contrib_ode calls ode2. It then tries the
> following methods: factorization, Clairault, Lagrange, Riccati and Lie
> symmetry methods.
>
> For second order ODEs contrib_ode calls ode2. No other methods are
> implemented yet.
>
> Extensive debugging traces and messages are displayed if the command
> put('contrib_ode,true,'verbose) is executed.
>
> TO DO
> =====
>
> These routines are work in progress. I still need to:
>
> * Extend the FACTOR method ode1_factor to work for multiple roots.
>
> * Extend the FACTOR method ode1_factor to attempt to solve higher
> order factors. At present it only attemps to solve linear factors.
>
> * Fix the LAGRANGE routine ode1_lagrange to prefer real roots over
> complex roots.
>
> * Add additional methods for Riccati equations.
>
> * Work out how to return partial solutions, such as those obtained for
> Riccati equations.
>
> * Add routines for Abel equations.
>
> * Work on the Lie symmetry group routine ode1_lie. There are quite a
> few problems with it: some parts are unimplemented; some test cases
> seem to run forever; other test cases crash; yet others return very
> complex "solutions". I wonder if it really ready for release yet.
>
> * Add more test cases.
>
> TEST CASES
> ==========
>
> The routines have been tested on a few hundred test cases from Murphy,
> Kamke and Zwillinger. These are included in the tests subdirectory.
>
> * The Clairault routine ode1_clairault finds all known solutions,
> including singular soultions. (This statement is asking for
> trouble).
>
> * The other routines often return a single solution when multiple
> solutions exist.
>
> * Some of the "solutions" from ode1_lie are overly complex and
> impossible to check.
>
> * There are some crashes.
>
> References
> ==========
>
> [1] E Kamke, Differentialgleichungen Losungsmethoden und Losungen, Vol 1,
> Geest & Portig, Leipzig, 1961
>
> [2] G M Murphy, Ordinary Differential Equations and Their Solutions,
> Van Nostrand, New York, 1960
>
> [3] D Zwillinger, Handbook of Differential Equations, 3rd edition,
> Academic Press, 1998
>
> _______________________________________________
> Maxima mailing list
> Maxima@www.math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima