3 MAXIMA's ordinary differential equation (ODE) solver ODE2 solves
4 elementary linear ODEs of first and second order. The function
5 contrib_ode extends ODE2 with additional methods. The code may be
6 integrated into MAXIMA at some stage.
8 The calling convention for contrib_ode is identical to ODE2. It takes
9 three arguments: an ODE (only the left hand side need be given if the
10 right hand side is 0), the dependent variable, and the independent
11 variable. When successful, it returns a list of solutions.
13 A solution can have a number of forms:
14 o an explicit solution for the dependent variable,
15 o an implicit solution for the dependent variable,
16 o a parametric solution in terms of variable %t, or
17 o a tranformation into another ODE in variable %u.
19 %c is used to represent the constant in the case of first order equations,
20 and %k1 and %k2 the constants for second order equations. If contrib_ode
21 cannot obtain a solution for whatever reason, it returns false, after
22 perhaps printing out an error message.
24 (C1) eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;
27 (D1) x (--) - (x y + 1) -- + y = 0
30 (C2) contrib_ode(eqn,y,x);
33 (D2) [y = log(x) + %c, y = %c %e ]
40 Nonlinear odes can have singular solutions without constants of
43 (C4) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
46 (D4) (--) + x -- - y = 0
49 (C5) contrib_ode(eqn,y,x);
53 (D5) [y = %C x + %C , y = - --]
60 The following ode has two parametric solutions in terms of the dummy
61 variable %t. In this case the parametric solutions can be manipulated
62 to give explicit solutions.
64 (C7) eqn:'diff(y,x)=(x+y)^2;
70 (C8) contrib_ode(eqn,y,x);
72 (D8) [[x = %C - ATAN(SQRT(%T)), y = - x - SQRT(%T)],
73 [x = ATAN(SQRT(%T)) + %C, y = SQRT(%T) - x]]
79 The following Riccati equation is transformed into a linear
80 second order ODE in the variable %u. maxima is unable to
83 (%i7) eqn:'diff(y,x)+1-x=(x+y)*y;
86 (%o7) -- - x + 1 = y (y + x)
89 (%i8) contrib_ode(eqn,y,x);
94 (%o8) [[y = - ---, - --- x + %u (x - 1) + ---- = 0]]
103 For first order ODEs contrib_ode calls ode2. It then tries the
104 following methods: factorization, Clairault, Lagrange, Riccati,
105 Abel and Lie symmetry methods. The Lie method is not attempted
106 on Abel equations if the Abel method fails, but it is tried
107 if the Riccati method returns an unsolved second order ODE.
109 For second order ODEs contrib_ode calls ode2. No other methods are
112 Extensive debugging traces and messages are displayed if the command
113 put('contrib_ode,true,'verbose) is executed.
119 These routines are work in progress. I still need to:
121 * Extend the FACTOR method ode1_factor to work for multiple roots.
123 * Extend the FACTOR method ode1_factor to attempt to solve higher
124 order factors. At present it only attemps to solve linear factors.
126 * Fix the LAGRANGE routine ode1_lagrange to prefer real roots over
129 * Add additional methods for Riccati equations.
131 * Improve the detection of Abel equations of second kind. The exisiting
132 pattern matching is weak.
134 * Work on the Lie symmetry group routine ode1_lie. There are quite a
135 few problems with it: some parts are unimplemented; some test cases
136 seem to run forever; other test cases crash; yet others return very
137 complex "solutions". I wonder if it really ready for release yet.
139 * Add more test cases.
144 The routines have been tested on a few hundred test cases from Murphy,
145 Kamke and Zwillinger. These are included in the tests subdirectory.
147 * The Clairault routine ode1_clairault finds all known solutions,
148 including singular soultions. (This statement is asking for
151 * The other routines often return a single solution when multiple
154 * Some of the "solutions" from ode1_lie are overly complex and
157 * There are some crashes.
163 [1] E Kamke, Differentialgleichungen Losungsmethoden und Losungen, Vol 1,
164 Geest & Portig, Leipzig, 1961
166 [2] G M Murphy, Ordinary Differential Equations and Their Solutions,
167 Van Nostrand, New York, 1960
169 [3] D Zwillinger, Handbook of Differential Equations, 3rd edition,
172 [4] F Schwarz, Symmetry Analysis of Abel's Equation, Studies in
173 Applied Mathematics, 100:269-294 (1998)
175 [5] F Schwarz, Algorithmic Solution of Abel's Equation,
176 Computing 61, 39-49 (1998)
178 [6] E. S. Cheb-Terrab, A. D. Roche, Symmetries and First Order
179 ODE Patterns, Computer Physics Communications 113 (1998), p 239.
180 (http://lie.uwaterloo.ca/papers/ode_vii.pdf)
182 [7] E. S. Cheb-Terrab, T. Koloknikov, First Order ODEs,
183 Symmetries and Linear Transformations, European Journal of
184 Applied Mathematics, Vol. 14, No. 2, pp. 231-246 (2003).
185 (http://arxiv.org/abs/math-ph/0007023)
186 (http://lie.uwaterloo.ca/papers/ode_iv.pdf)
188 [8] G W Bluman, S C Anco, Symmetry and Integration Methods for
189 Differential Equations, Springer, (2002)