23.4.2 Approximating solutions of the system v′=f(t,v)
This section covers using odesolve
to solve first order systems of
differential equations; using it to solve a single first order
differential equation was discussed last section.
The odesolve can be used to solve a system of the form
where x=[x1,…,xn] is a list of unknown functions and f
is a function of n+1 variables with an initial condition.
odesolve can take its arguments in various ways.
Letting t be the independent variable and x=[x1,…,xn] be
a vector of dependent variables, t0 and x0 be the initial values,
t1 the place where you want the value of x, f be the function
in the differential equation, f(t,x) be a list of expressions which
determines the function f (see Section 8.2.1 for the
difference between a function and an expression).
-
odesolve takes three or four mandatory arguments and
two optional arguments:
-
mandatory, mandatory arguments given by one of the following
sequences:
-
f(t,x),t=t0..t1,x,x0
- t0..t1,(t,y)↦ f(t,y),x0
- t0..t1,f,x0
- Optionally, curve, the symbol.
- odesolve(mandatory ⟨,curve ⟩)
returns an approximate value of x(t1) with x being the particular solution of
x′(t)=f(t,x(t)) statisfying the initial condition x(t0)=x0.
With an optional argument of curve, the list of all the
[t,[x(t)]] values that were computed by the solver are returned.
Examples
Solve the system of equations x′(t)=−y(t) and y′(t)=x(t):
odesolve([-y,x],t=0..pi,[x,y],[0,1]) |
|
| ⎡
⎣ | −1.79045146764×10−15,−1 | ⎤
⎦ |
| | | | | | | | | | |
|
Solve the system of equations x′(t)=−y(t) and y′(t)=x(t):
odesolve(0..pi,(t,v)->[-v[1],v[0]],[0,1]) |
or:
f(t,v):=[-v[1],v[0]]:; odesolve(0..pi,f,[0,1]) |
|
| ⎡
⎣ | −1.79045146764×10−15,−1 | ⎤
⎦ |
| | | | | | | | | | |
|
odesolve(0..pi/4,f,[0,1],curve) |
|
| ⎡
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣ | 0.0 | |
0.0165441856471 | ⎡
⎣ | −0.0165434309391,0.999863148082 | ⎤
⎦ |
|
0.0325491321983 | ⎡
⎣ | −0.0325433851614,0.999470323763 | ⎤
⎦ |
|
0.0486049854945 | ⎡
⎣ | −0.0485858499906,0.998819010222 | ⎤
⎦ |
|
⋮ | ⋮ |
0.747336757246 | ⎡
⎣ | −0.679687679865,0.733501641333 | ⎤
⎦ |
|
0.76509544295 | ⎡
⎣ | −0.692605846268,0.721316256377 | ⎤
⎦ |
|
0.78286231703 | ⎡
⎣ | −0.705311395415,0.708897619897 | ⎤
⎦ |
|
0.785398163397 | ⎡
⎣ | −0.707106781186,0.707106781186 | ⎤
⎦ |
|
| ⎤
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦ |
|
| | | | | | | | | | |
|