Dropping more non-ASCII characters from a comment in ifactor.lisp
[maxima.git] / share / contrib / diffequations / contrib_ode.usg
blobbb51ccc532f06bd6b00ede942411129bdb483922
1 -*- mode: Text;  -*-
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;
26                            dy 2             dy
27 (D1)                    x (--)  - (x y + 1) -- + y = 0
28                            dx               dx
30 (C2) contrib_ode(eqn,y,x);
32                                                     x
33 (D2)                     [y = log(x) + %c, y = %c %e ]
36 (C3) method;
38 (D3)                                factor
40 Nonlinear odes can have singular solutions without constants of
41 integration.
43 (C4) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
45                               dy 2     dy
46 (D4)                         (--)  + x -- - y = 0
47                               dx       dx
49 (C5) contrib_ode(eqn,y,x);
51                                                   2
52                                         2        x
53 (D5)                      [y = %C x + %C , y = - --]
54                                                  4
55 (C6) method;
57 (D6)                               clairault
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;
66                                  dy          2
67 (D7)                             -- = (y + x)
68                                  dx
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]]
75 (C9) method;
77 (D9)                              lagrange
79 The following Riccati equation is transformed into a linear
80 second order ODE in the variable %u.  maxima is unable to
81 solve the new ODE.
83 (%i7) eqn:'diff(y,x)+1-x=(x+y)*y;
85                             dy
86 (%o7)                       -- - x + 1 = y (y + x)
87                             dx
89 (%i8) contrib_ode(eqn,y,x);
91                         d%u
92                         ---                          2
93                         dx     d%u                  D %u
94 (%o8)           [[y = - ---, - --- x + %u (x - 1) + ---- = 0]]
95                         %u     dx                     2
96                                                     dx
98 (%i9) method;
100 (%o9)                               riccati
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
110 implemented yet.
112 Extensive debugging traces and messages are displayed if the command
113 put('contrib_ode,true,'verbose) is executed.
116 TO DO
117 =====
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
127   complex roots.
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.
141 TEST CASES
142 ==========
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
149   trouble).
151 * The other routines often return a single solution when multiple
152   solutions exist.
154 * Some of the "solutions" from ode1_lie are overly complex and
155   impossible to check.
157 * There are some crashes.
160 References
161 ==========
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,
170     Academic Press, 1998
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)