From: David Billinghurst <billingd@us...>  20040127 05:13:13

Update of /cvsroot/maxima/maxima/share/contrib/diffequations In directory sc8prcvs1.sourceforge.net:/tmp/cvsserv400 Modified Files: contrib_ode.usg Log Message: Remove \r line termination Index: contrib_ode.usg =================================================================== RCS file: /cvsroot/maxima/maxima/share/contrib/diffequations/contrib_ode.usg,v retrieving revision 1.1 retrieving revision 1.2 diff u d r1.1 r1.2  contrib_ode.usg 27 Jan 2004 04:21:10 0000 1.1 +++ contrib_ode.usg 27 Jan 2004 05:12:14 0000 1.2 @@ 1,143 +1,143 @@ * 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 +* 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 