Merge branch 'rtoy-wrap-option-args'
[maxima.git] / doc / info / Differential.texi
bloba9a6a7bcc1ea97b1fe32178be9625fb2201ef4e8
1 @menu
2 * Introduction to Differential Equations::  
3 * Functions and Variables for Differential Equations::  
4 @end menu
6 @node Introduction to Differential Equations, Functions and Variables for Differential Equations, Differential Equations, Differential Equations
7 @section Introduction to Differential Equations
9 This section describes the functions available in Maxima to obtain
10 analytic solutions for some specific types of first and second-order
11 equations. To obtain a numerical solution for a system of differential
12 equations, see the additional package @code{dynamics}. For graphical
13 representations in phase space, see the additional package
14 @mref{plotdf}.
16 @node Functions and Variables for Differential Equations,  , Introduction to Differential Equations, Differential Equations
17 @section Functions and Variables for Differential Equations
19 @anchor{bc2}
20 @deffn {Function} bc2 (@var{solution}, @var{xval1}, @var{yval1}, @var{xval2}, @var{yval2})
21 Solves a boundary value problem for a second order differential equation.
22 Here: @var{solution} is a general solution to the equation, as found by
23 @mref{ode2}; @var{xval1} specifies the value of the independent variable
24 in a first point, in the form @code{@var{x} = @var{x1}}, and @var{yval1}
25 gives the value of the dependent variable in that point, in the form
26 @code{@var{y} = @var{y1}}. The expressions @var{xval2} and @var{yval2}
27 give the values for these variables at a second point, using the same
28 form.
30 See @mref{ode2} for an example of its usage.
32 @opencatbox{Categories:}
33 @category{Differential equations}
34 @closecatbox
35 @end deffn
37 @anchor{desolve}
38 @deffn {Function} desolve @
39 @fname{desolve} (@var{eqn}, @var{y}) @
40 @fname{desolve} ([@var{eqn_1}, ..., @var{eqn_n}], [@var{y_1}, ..., @var{y_n}])
42 The function @code{desolve} solves systems of linear ordinary
43 differential equations using Laplace transform. Here the @var{eqn}'s are
44 differential equations in the dependent variables @var{y_1}, ...,
45 @var{y_n}. The functional dependence of @var{y_1}, ..., @var{y_n} on an
46 independent variable, for instance @var{x}, must be explicitly indicated
47 in the variables and its derivatives. For example, the @emph{correct}
48 way to define the differential equations would be:
50 @example
51 eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
52 eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);
53 @end example
55 The call to the function @code{desolve} would then be:
56 @example
57 desolve([eqn_1, eqn_2], [f(x),g(x)]);
58 @end example
60 If initial conditions at @code{x=0} are known, they can be supplied before
61 calling @code{desolve} by using @mref{atvalue}.
63 @c ===beg===
64 @c 'diff(f(x),x)='diff(g(x),x)+sin(x);
65 @c 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
66 @c atvalue('diff(g(x),x),x=0,a);
67 @c atvalue(f(x),x=0,1);
68 @c desolve([%o1,%o2],[f(x),g(x)]);
69 @c [%o1,%o2],%o5,diff;
70 @c ===end===
71 @example
72 (%i1) 'diff(f(x),x)='diff(g(x),x)+sin(x);
73                  d           d
74 (%o1)            -- (f(x)) = -- (g(x)) + sin(x)
75                  dx          dx
76 (%i2) 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
77 @group
78                   2
79                  d            d
80 (%o2)            --- (g(x)) = -- (f(x)) - cos(x)
81                    2          dx
82                  dx
83 @end group
84 (%i3) atvalue('diff(g(x),x),x=0,a);
85 (%o3)                           a
86 (%i4) atvalue(f(x),x=0,1);
87 (%o4)                           1
88 (%i5) desolve([%o1,%o2],[f(x),g(x)]);
89                   x
90 (%o5) [f(x) = a %e  - a + 1, g(x) = 
92                                                 x
93                                    cos(x) + a %e  - a + g(0) - 1]
94 (%i6) [%o1,%o2],%o5,diff;
95              x       x      x                x
96 (%o6)   [a %e  = a %e , a %e  - cos(x) = a %e  - cos(x)]
98 @end example
100 If @code{desolve} cannot obtain a solution, it returns @code{false}.
102 See also @mrefcomma{ode2} @mref{drawdf} and @mrefdot{rk}
104 @opencatbox{Categories:}
105 @category{Differential equations}
106 @category{Laplace transform}
107 @closecatbox
108 @end deffn
109 @anchor{ic1}
110 @deffn {Function} ic1 (@var{solution}, @var{xval}, @var{yval})
111 Solves initial value problems for first order differential equations.
112 Here @var{solution} is a general solution to the equation, as found by
113 @mref{ode2}, @var{xval} gives an initial value for the independent
114 variable in the form @code{@var{x} = @var{x0}}, and @var{yval} gives the
115 initial value for the dependent variable in the form @code{@var{y} =
116 @var{y0}}.
118 See @mref{ode2} for an example of its usage.
120 @opencatbox{Categories:}
121 @category{Differential equations}
122 @closecatbox
123 @end deffn
124 @anchor{ic2}
125 @deffn {Function} ic2 (@var{solution}, @var{xval}, @var{yval}, @var{dval})
126 Solves initial value problems for second-order differential equations.
127 Here @var{solution} is a general solution to the equation, as found by
128 @code{ode2}, @var{xval} gives the initial value for the independent
129 variable in the form @code{@var{x} = @var{x0}}, @var{yval} gives the
130 initial value of the dependent variable in the form @code{@var{y} =
131 @var{y0}}, and @var{dval} gives the initial value for the first
132 derivative of the dependent variable with respect to independent
133 variable, in the form @code{'diff(@var{y},@var{x}) = @var{dy0}}.
135 See @mref{ode2} for an example of its usage.
137 @opencatbox{Categories:}
138 @category{Differential equations}
139 @closecatbox
140 @end deffn
142 @anchor{ode2}
143 @deffn {Function} ode2 (@var{eqn}, @var{dvar}, @var{ivar})
144 The function @code{ode2} solves an ordinary differential equation (ODE)
145 of first or second order. It takes three arguments: an ODE given by
146 @var{eqn}, the dependent variable @var{dvar}, and the independent
147 variable @var{ivar}. When successful, it returns either an explicit or
148 implicit solution for the dependent variable. @mref{%c} is used to
149 represent the integration constant in the case of first-order equations,
150 and @mref{%k1} and @mref{%k2} the constants for second-order
151 equations. The dependence of the dependent variable on the independent
152 variable does not have to be written explicitly, as in the case of
153 @mref{desolve}, but the independent variable must always be given as the
154 third argument.
156 If @code{ode2} cannot obtain a solution for whatever reason, it returns
157 @code{false}, after perhaps printing out an error message. The methods
158 implemented for first order equations in the order in which they are
159 tested are: linear, separable, exact - perhaps requiring an integrating
160 factor, homogeneous, Bernoulli's equation, and a generalized homogeneous
161 method. The types of second-order equations which can be solved are:
162 constant coefficients, exact, linear homogeneous with non-constant
163 coefficients which can be transformed to constant coefficients, the
164 Euler or equi-dimensional equation, equations solvable by the method of
165 variation of parameters, and equations which are free of either the
166 independent or of the dependent variable so that they can be reduced to
167 two first order linear equations to be solved sequentially.
169 In the course of solving ODE's, several variables are set purely for
170 informational purposes: @mref{method} denotes the method of solution
171 used (e.g., @code{linear}), @code{intfactor} denotes any integrating
172 factor used, @code{odeindex} denotes the index for Bernoulli's method or
173 for the generalized homogeneous method, and @mref{yp} denotes the
174 particular solution for the variation of parameters technique.
176 In order to solve initial value problems (IVP) functions @mref{ic1} and
177 @mref{ic2} are available for first and second order equations, and to
178 solve second-order boundary value problems (BVP) the function @mref{bc2}
179 can be used.
181 See also @mrefcomma{desolve} @mref{drawdf} and @mrefdot{rk}
183 Example:
185 @c ===beg===
186 @c x^2*'diff(y,x) + 3*y*x = sin(x)/x;
187 @c soln1: ode2(%,y,x);
188 @c ic1 (soln1,x=%pi,y=0);
189 @c 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
190 @c soln2: ode2(%,y,x);
191 @c ratsimp (ic2(soln2,x=0,y=0,'diff(y,x)=2));
192 @c bc2 (soln2,x=0,y=1,x=1,y=3);
193 @c ===end===
194 @example
195 (%i1) x^2*'diff(y,x)+3*x*y = sin(x)/x;
196                                      2 dy   sin(x)
197 (%o1)                       3 x y + x  -- = ------
198                                        dx     x
199 (%i2) soln1:ode2(%,y,x);
200                                     %c - cos(x)
201 (%o2)                           y = -----------
202                                          3
203                                         x
204 (%i3) ic1(soln1,x = %pi,y = 0);
205                                      1 + cos(x)
206 (%o3)                          y = - ----------
207                                           3
208                                          x
209 (%i4) 'diff(y,x,2)+y*('diff(y,x))^3 = 0;
210                                           2
211                                   dy 3   d y
212 (%o4)                          y (--)  + --- = 0
213                                   dx       2
214                                          dx
215 (%i5) soln2:ode2(%,y,x);
216                                        3
217                             6 %k1 y + y
218 (%o5)                       ------------ = %k2 + x
219                                  6
220 (%i6) ratsimp(ic2(soln2,x = 0,y = 0,'diff(y,x) = 2));
221                                         3
222                                  3 y + y
223 (%o6)                            -------- = x
224                                     6
225 (%i7) bc2(soln2,x = 0,y = 1,x = 1,y = 3);
227                                        3
228                              - 10 y + y      3
229 (%o7)                        ----------- = - - + x
230                                   6          2
231 @end example
233 @opencatbox{Categories:}
234 @category{Differential equations}
235 @closecatbox
236 @end deffn
238 @anchor{method}
239 @defvr {System variable} method
241 The variable @code{method} is set by @mref{ode2} to the successful solution
242 method. 
244 @opencatbox{Categories:}
245 @category{Differential equations}
246 @category{Package contrib_ode}
247 @closecatbox
249 @end defvr
251 @anchor{%c}
252 @defvr {Variable} %c
254 @code{%c} is the integration constant in the solutions of first
255 order ODEs returned from @mref{ode2}.
257 @opencatbox{Categories:}
258 @category{Differential equations}
259 @category{Package contrib_ode}
260 @closecatbox
262 @end defvr
264 @anchor{%k1}
265 @defvr {Variable} %k1
267 @code{%k1} is the first integration constant in the solutions of second
268 order ODEs returned from @mref{ode2}.
270 @opencatbox{Categories:}
271 @category{Differential equations}
272 @category{Package contrib_ode}
273 @closecatbox
275 @end defvr
277 @anchor{%k2}
278 @defvr {Variable} %k2
280 @code{%k2} is the second integration constant in the solutions of second
281 order ODEs returned from @mref{ode2}.
283 @opencatbox{Categories:}
284 @category{Differential equations}
285 @category{Package contrib_ode}
286 @closecatbox
288 @end defvr
291 @anchor{yp}
292 @defvr {Variable} yp
294 @mref{yp} is the particular solution of an ODE found by @mref{ode2}
295 when using the variation of parameters technique.
297 @opencatbox{Categories:}
298 @category{Differential equations}
299 @closecatbox
301 @end defvr