0% found this document useful (0 votes)
56 views

Odes

This document describes the ODES package, which contains commands that help work with ordinary differential equations (ODEs) in the computer algebra system Maxima. The package contains functions such as odecv for making changes of variable in ODEs, dchange for performing dependent variable changes, odeC for solving ODEs with respect to an expression, and odeL and ode2 for solving first- and second-order linear ODEs. Examples are provided for each function showing how to use them to solve various ODEs.

Uploaded by

Rikárdo Campos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views

Odes

This document describes the ODES package, which contains commands that help work with ordinary differential equations (ODEs) in the computer algebra system Maxima. The package contains functions such as odecv for making changes of variable in ODEs, dchange for performing dependent variable changes, odeC for solving ODEs with respect to an expression, and odeL and ode2 for solving first- and second-order linear ODEs. Examples are provided for each function showing how to use them to solve various ODEs.

Uploaded by

Rikárdo Campos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

ODES Package

Aleksas Domarkas

[email protected]
[email protected]
December 1, 2013

We use open-source computer algebra system(CAS) maxima 5.31.2.


The ODES package contains commands that help you work with ordinary
differential equations. List of functions in ODES package:

odecv intfactor1
dchange odeL
odeC odeL ic
solvet fs
ode1 ic partsol
ode2 ic odeM
P iter odeM ic
ode1taylor matrix exp
ode2taylor odelinsys
ode1exact wronskian
odecv.wxm 1 / 2

odecv
Function: odecv(tr,eq,y,x)
Makes the change of independed variable in ODE.

(%i1) load(odes)$

Examples:

1. x^3y''' + xy' - y = x

(%i2) eq:x^3*'diff(y,x,3)+x*'diff(y,x)-y=x$

(%i3) odecv(x=exp(t),eq,y,x);
d3  d2   d 
(%o3) y - 3  y  + 3  y  - y = %e t
dt 3
d t 2
  d t 

(%i4) odeL(%,y,t);
t 3 %e t
(%o4) y = t 2 %e t C3 + t %e t C2 + %e t C1 +
6

(%i5) sol:subst(t=log(x),%);
2 x log( x )3
(%o5) y = x log( x ) C3 + x log( x ) C2 + x C1 +
6

2. (1 + x^2)y'' + xy' + y = 0

(%i6) eq:(1+x^2)*'diff(y,x,2)+x*'diff(y,x)+y=0$

(%i7) trans(eq):=block(
coeff(lhs(eq),'diff(y,x))/coeff(lhs(eq),'diff(y,x,2)),
t=radcan(integrate(exp(-integrate(%%,x)),x)))$

(%i8) itr:trans(eq); tr:solve(itr,x)[1];


(%o8) t = asinh( x )
(%o9) x = sinh( t )

(%i10) odecv(tr,eq,y,x);
d2
(%o10) y +y =0
d t2

(%i11) ode2(%,y,t);
(%o11) y = %k1 sin( t )+ %k2 cos( t )

(%i12) sol:subst(itr,%);
(%o12) y = %k1 sin( asinh( x ))+ %k2 cos( asinh( x ))
odecv.wxm 2 / 2

3. y'' - y'/x + 4x^2y = 0

(%i13) eq:'diff(y,x,2)-1/x*'diff(y,x)+4*x^2*y=0$

(%i14) itr:t=x^2; tr:x=sqrt(t);


(%o14) t = x 2
(%o15) x = t

(%i16) odecv(t=x^2,eq,y,x);
 d2 
(%o16) 4 t  y + 4 t y = 0
2 
 d t 

(%i17) ode2(%,y,t);
(%o17) y = %k1 sin( t )+ %k2 cos( t )

(%i18) sol:subst(itr,%);
(%o18) y = %k1 sin( x 2 )+ %k2 cos( x 2 )

4. kamke 3.74. 4x^4 y'''-4x^3 y'' + 4x^2 y' = 1

(%i19) eq:4*x^4*'diff(y,x,3)-4*x^3*'diff(y,x,2)+4*x^2*'diff(y,x)=1$

(%i20) odecv(x=exp(t),eq,y,x);
 d3   d2   d 
(%o20) 4 %e t  y  - 16 %e t  y  + 16 %e t  y = 1
d t3  d t2  d t 

(%i21) eq1:%/4/exp(t),expand;
d3  d2   d  %e - t
(%o21) y - 4  y  + 4  y =
d t3 d t2  d t  4

(%i22) odeL(eq1,y,t);
%e - t ( 3 t %e 3 t - 2 )
(%o22) y = t %e 2 t C3 + %e 2 t C2 + C1 +
72

(%i23) subst(t=log(x),%),expand;
x 2 log( x ) 1
(%o23) y = x 2 log( x ) C3 + x 2 C2 + C1 + -
24 36 x

(%i24) y=collectterms(rhs(%),log(x),x);
 1 1
(%o24) y = x 2 log( x ) C3 +  + x 2 C2 + C1 -
 24  36 x

(%i25) sol:subst([C1=%k1,C2=%k2,C3=%k3-1/24],%);
1
(%o25) y = %k3 x 2 log( x )+ %k2 x 2 - + %k1
36 x
dchange.wxm 1 / 3

dchange
Function: dchange(tr,eq,y,x,new_func,new_var)
Makes the change tr:x=f(new_var) of independent variable x.

(%i1) load(odes)$ load(contrib_ode)$

1. (1-x^2)y'' - xy' + n^2y = 0

(%i3) eq:(1-x^2)*diff(y(x),x,2)-x*diff(y(x),x)+n^2*y(x)=0$

(%i4) assume(n>0)$

(%i5) tr:x=cos(t); itr:t=acos(x);


(%o5) x = cos( t )
(%o6) t = acos( x )

(%i7) dchange(tr,eq,y(x),x,y(t),t)$ eq1:trigsimp(%);


d2
(%o8) y( t )+ n 2 y( t )= 0
d t2

(%i9) ode2(%,y(t),t);
(%o9) y( t )= %k1 sin( n t )+ %k2 cos( n t )

(%i10) sol:dchange(itr,%,y(t),t,y(x),x);
(%o10) y( x )= %k1 sin( n acos( x ))+ %k2 cos( n acos( x ))

2. xy'' + y'/2-y = 0

(%i11) eq:x*diff(y(x),x,2)+diff(y(x),x)/2-y(x)=0$

(%i12) tr:x=t^2/4; itr:solve(%,t)[2];


t2
(%o12) x =
4
(%o13) t = 2 x

(%i14) eq1:dchange(tr,eq,y(x),x,y(t),t),ratsimp;
d2
(%o14) y( t )- y( t )= 0
d t2

(%i15) ode2(%,y(t),t);
(%o15) y( t )= %k1 %e t + %k2 %e - t

(%i16) sol:dchange(itr,%,y(t),t,y(x),x);
(%o16) y( x )= %k1 %e 2 x + %k2 %e - 2 x
dchange.wxm 2 / 3

3. x^2y'' - 2xy' + 2y = x^5*log(x)

(%i17) eq:x^2*diff(y(x),x,2)-2*x*diff(y(x),x)+2*y(x)=x^5*log(x);
 d2   d 
(%o17) x 2  y( x ) - 2 x  y( x ) + 2 y( x )= x 5 log( x )
d x 2
 d x 

(%i18) tr:x=exp(t); itr:solve(%,t)[1];


(%o18) x = %e t
(%o19) t = log( x )

(%i20) eq1:dchange(tr,eq,y(x),x,y(t),t);
d2  d 
(%o20) y( t )- 3  y( t ) + 2 y( t )= t %e 5 t
dt 2  d t 

(%i21) ode2(%,y(t),t);
( 12 t - 7 ) %e 5 t
(%o21) y( t )= + %k1 %e 2 t + %k2 %e t
144

(%i22) sol:dchange(itr,%,y(t),t,y(x),x);
x 5 ( 12 log( x )- 7 )
(%o22) y( x )= + %k1 x 2 + %k2 x
144

4. kamke 2.284

(%i23) eq:(2*x+1)^2*diff(y(x),x,2)-2*(2*x+1)*diff(y(x),x)-12*y(x)=3*x+1$

(%i24) tr:x=(%e^t-1)/2; itr:solve(tr,t)[1];


%e t - 1
(%o24) x =
2
(%o25) t = log( 2 x + 1 )

(%i26) eq1:dchange(tr,eq,y(x),x,y(t),t);
 d2   d  3( %e t - 1 )

(%o26) 4  
y( t ) - 8  y( t ) - 12 y( t )= +1
d t2  d t  2

(%i27) ode2(eq1,y(t),t);
9 %e t - 4
(%o27) y( t )= %k1 %e 3 t - + %k2 %e - t
96

(%i28) sol:dchange(itr,%,y(t),t,y(x),x);
%k2 9( 2 x + 1 )- 4
(%o28) y( x )= %k1( 2 x + 1 )3 + -
2 x+1 96

(%i29) y(x)=map(factor,rhs(sol));
%k2 18 x + 5
(%o29) y( x )= %k1( 2 x + 1 )3 + -
2 x+1 96
dchange.wxm 3 / 3

5.

(%i30) eq:diff(y(x),x,2)-diff(y(x),x)+exp(4*x)*y(x)=0;
d2 d
(%o30) y( x )- y( x )+ %e 4 x y( x )= 0
d x2 dx

(%i31) tr:x=log(t)/4;
log( t )
(%o31) x =
4

(%i32) itr:solve(tr,t)[1];
(%o32) t = %e 4 x

(%i33) eq1:dchange(tr,eq,y(x),x,y(t),t);
 d2   d 
(%o33) 16 t 2  y( t ) + 12 t  y( t ) + t y( t )= 0
d t 2
 d t 

(%i34) eq2:subst(y(t)=y,eq1);
 d2   d 
(%o34) 16 t 2  y  + 12 t  y + t y = 0
d t2  d t 

(%i35) contrib_ode(eq2,y,t);
1 t 1 t
(%o35) [ y = bessel_y ,  %k2 t 1 / 8 + bessel_j ,  %k1 t 1 / 8 ]
 4 2   4 2 

(%i36) sol:subst(itr,%[1]);
 1 %e 2 x  1 %e 2 x 
(%o36) y = bessel_y ,  %k2 %e x / 2 + bessel_j ,  %k1 %e x / 2
4 2   4 2 
odeC.wxm 1 / 2

odeC
Function: odeC(eq,r,x)
Solves ODE in respect to expression r.

Examples:

(%i1) load(odes)$

1. Bernoulli differential equation

(%i2) eq:'diff(y,x)+2*y/(x+1)=2*sqrt(y)/(x+1);
d 2y 2 y
(%o2) y+ =
dx x+1 x+1

(%i3) odeC(eq,sqrt(y),x);
x %c
(%o3) y= +
x+1 x+1

(%i4) ode2(eq,y,x);
(%o4) - log( y - 1 )= log( x + 1 )+ %c

2. boj 360.

(%i5) eq:x*'diff(y,x,3)-'diff(y,x,2)-x*'diff(y,x)+y=-2*x^3;
 d3  d2  d 
(%o5) x  y  - y -x  y + y = - 2 x3
 d x 3
 d x 2  d x 

(%i6) odeC(eq,'diff(y,x,2)+y,x);
d2
(%o6) y + y = 2 y - x 3 + %c x
d x2

(%i7) ode2(%,y,x);
(%o7) y = %k1 %e x + %k2 %e - x + x 3 +( 6 - %c )x

(%i8) sol:subst(%c=6-%k3,%);
(%o8) y = %k1 %e x + %k2 %e - x + x 3 + %k3 x

3. sam 4.35.

(%i9) eq1:'diff(x,t)=y+z$
eq2:'diff(y,t)=x+z$
eq3:'diff(z,t)=x+y$

(%i12) odeC(eq1+eq2+eq3,x+y+z,t)$
s1:subst(%c=3*C1,%);
(%o13) z + y + x = 3 %e 2 t C1
odeC.wxm 2 / 2

(%i14) odeC(eq1-eq2,y-x,t)$
s2:subst(%c=3*C2,%);
(%o15) y - x = 3 %e - t C2

(%i16) odeC(eq2-eq3,z-y,t)$
s3:subst(%c=3*C3,%);
(%o17) z - y = 3 %e - t C3

(%i18) sol:solve([s1,s2,s3],[x,y,z])[1],expand;
(%o18) [ x = - %e - t C3 - 2 %e - t C2 + %e 2 t C1 , y = - %e - t C3 + %e - t C2 + %e 2 t C1 , z = 2
%e - t C3 + %e - t C2 + %e 2 t C1 ]

Test:

(%i19) subst(sol,[eq1,eq2,eq3])$
ev(%, nouns)$
makelist(rhs(%[k])-lhs(%[k]),k,1,3);
(%o21) [ 0 , 0 , 0 ]

4. filipov 65.

(%i22) eq:'diff(y,x)=sqrt(4*x+2*y-1);
d
(%o22) y = 2 y +4 x-1
dx

(%i23) ode2(eq,y,x);
(%o23) false

(%i24) load(contrib_ode)$

(%i25) contrib_ode(eq,y,x);
Is p positive, negative or zero? p;
- 8 log( 2 y + 4 x - 1 + 2 )+ 4 2 y+4 x-1 -4 x+1
(%o25) [ - = %c ]
4

(%i26) odeC(eq,2*y+4*x-1,x);
(%o26) - 2 log( 2 y + 4 x - 1 + 2 )+ 2 y + 4 x - 1 + 2 = x + %c
solvet.wxm 1 / 1

solvet
Function: solvet(eq,x)
Returns rectform solution of polynomial equation.
In "casus irreducibilis" give real solutions expressed
in trigonometric functions.

One version of "solvet" is:

(%i1) solvet(eq,x):=block([polf,spr,k],
spr:solve(eq,x),
polf(x):=block([rx],
rx:rectform(x),
if freeof(%i,x) or atom(x) or
freeof(sin,rx) then return(rx) else
map(polarform,x),
rectform(%%),
trigsimp(%%),
trigreduce(%%)),
makelist(x=polf(rhs(spr[k])),k,1,length(spr)),
sort(%%)
)$

Examples:

(%i2) solvet(x^3-3*x^2+1,x);
 5  7 
(%o2) [ x = 2 cos  + 1 , x = 2 cos  + 1 , x = 2 cos  + 1 ]
9  9   9 

(%i3) solvet(x^6-3*x^5-3*x^4+12*x^3-3*x^2-6*x+2=0,x);
2  4  8 
(%o3) [ x = 1 , x = 1 - 3 , x = 3 + 1 , x = 2 cos  , x = 2 cos  , x = 2 cos  ]
 9   9   9 

(%i4) solvet(x^3-15*x-5,x);
 atan( 19 ) 2    atan( 19 ) 2  
(%o4) [ x = 2 5 cos , x = 2 5 cos , x = 2
3  3 
- + 5
 3  3
 atan( 19 )
cos  ]
 3 

(%i5) solve(x^3-15*x-5,x);
 3 %i 1 
5 - 
 3 %i 1   5 19 %i 5 1 / 3  2 2  3 %i 1 
(%o5) [ x =  - -   +  + , x =  - 
 2 2  2 2  5 19 %i 5 
1/3  2 2
 + 
 2 2
 3 %i 1 
5 - - 
 5 19 %i 5 1 / 3  2 2  5 19 %i 5 1 / 3 5
 +  + , x =  +  + ]
 2 2  5 19 %i 5 
1 / 3  2 2  5 19 %i 5 
1/3
 +   + 
 2 2  2 2
ode1_ic.wxm 1 / 1

ode1_ic
Function: ode1_ic(eqn, dvar, ivar, ic)
The function ode1_ic solves an ordinary differential equation(ODE)
of first order with initial condition y(x0) = y0.
Here ic is list [x0,y0].

Examples:

(%i1) load(odes)$

1. x^2y'+3xy = sin(x)/x, y(pi) = 0.

(%i2) ode1_ic(x^2*'diff(y,x) + 3*y*x = sin(x)/x,y,x,[%pi,0]);


cos( x )+ 1
(%o2) y = -
x3

2. (y^4e^y+2x)y' = y, y(0) = 1.

(%i3) eq:(y^4*exp(y)+2*x)*'diff(y,x)=y$

(%i4) ode1_ic(eq,y,x,[0,1]);
( y 3 - y 2 ) %e y - x
(%o4) =0
y2

(%i5) solve(%,x);
(%o5) [ x =( y 3 - y 2 ) %e y ]

3. xy' + y = 2y^2log(x), y(1)=1/2.

(%i6) eq:x*'diff(y,x)+y=2*y^2*log(x)$

(%i7) ode1_ic(eq,y,x,[1,1/2]);
1
(%o7) y =
2 log( x )+ 2

4. (x^2-1)y' + 2xy^2 = 0, y(0) = 1.

(%i8) eq:(x^2-1)*'diff(y,x)+2*x*y^2=0$

(%i9) ode1_ic(eq,y,x,[0,1]);
1
(%o9) y =
log( 1 - x 2 )+ 1
ode2_ic.wxm 1 / 1

ode2_ic
Function: ode2_ic(eqn, dvar, ivar, ic)
The function ode2_ic solve an ordinary differential equation(ODE) of second order
with initial conditions y(x0) = y0, y'(x0) = y1. Here ic is list [x0, y0, y1].

Examples:

(%i1) load(odes)$

1. y'' + yy'^3=0, y(0)=0, y'(0)=2

(%i2) eq:'diff(y,x,2) + y*'diff(y,x)^3 = 0$

(%i3) sol:ode2_ic(eq,y,x,[0,0,2]);
1/3 1
(%o3) y =( 9 x 2 + 1 + 3 x ) -
1/3
( 9 x2 + 1 + 3 x)

Test:

(%i4) ev(rhs(sol),x=0);
(%o4) 0

(%i5) diff(rhs(sol),x)$ ev(%,x=0);


(%o6) 2

(%i7) subst(sol,eq)$
ev(%, nouns)$
radcan(%);
(%o9) 0 = 0

2. y'' = 128*y^3, y(0) = 1, y'(0) = 8.

(%i10) eq:'diff(y,x,2)=128*y^3$

(%i11) ode2_ic(eq,y,x,[0,1,8]);
1
(%o11) y = -
8 x-1

3. y'' + y = 1/cos(x), y(0)=1, y'(0)=0.

(%i12) eq:'diff(y,x,2)+y = 1/cos(x)$

(%i13) sol:ode2_ic(eq,y,x,[0,1,0]);
(%o13) y = cos( x ) log( cos( x ))+ x sin( x )+ cos( x )
P_iter.wxm 1 / 1

P_iter
Function: P_iter(eq, x, y, x0, y0, n).
Solves first order differential equation using Picard iterative process.
http://www.sosmath.com/diffeq/first/picard/picard.html

(%i10) load(odes)$

Examples:

1. y'=x^2+y^2, y(0)=0

(%i11) eq:'diff(y,x)=x^2+y^2$

(%i12) x0:0$ y0:0$

(%i14) for k:0 thru 3 do


print(P_iter(eq,x,y,x0,y0,k))$
0
x3
3
x7 x3
+
63 3
x 15 2 x 11 x 7 x 3
+ + +
59535 2079 63 3

2. y' = 2x(1 + y), y(0) = 0.

(%i15) eq:'diff(y,x)=2*x*(1+y)$

(%i16) x0:0$ y0:0$

(%i18) for k:0 thru 5 do


print(P_iter(eq,x,y,x0,y0,k))$
0
x2
x4
+ x2
2
x6 x4
+ + x2
6 2
x 8 x6 x4
+ + + x2
24 6 2
x 10 x 8 x6 x4
+ + + + x2
120 24 6 2
ode1taylor.wxm 1 / 1

ode1taylor
Function: ode1taylor(eq, x0, y0, n).
Solves first order differential equation using Taylor-series expansion.

(%i1) load(odes)$

1. y'=x+y^2, y(0)=1

(%i2) eq:diff(y(x),x)=x+y(x)^2;
d
(%o2) y( x )= y( x )2 + x
dx

(%i3) ode1taylor(eq,0,1,6);
3 x 2 4 x 3 17 x 4 31 x 5 149 x 6
(%o3)/T/ 1 + x + + + + + + ...
2 3 12 20 90

2. y'=x^2+y^2, y(0)=0

(%i4) eq:diff(y(x),x)=x^2+y(x)^2;
d
(%o4) y( x )= y( x )2 + x 2
dx

(%i5) ode1taylor(eq,0,0,15);
x 3 x 7 2 x 11 13 x 15
(%o5)/T/ + + + + ...
3 63 2079 218295

3. y'=x-y^2, y(1)=-1

(%i6) eq:diff(y(x),x)=x-y(x)^2;
d
(%o6) y( x )= x - y( x )2
dx

(%i7) ode1taylor(eq,1,-1,5);
( x - 1 )2 ( x - 1 )3 ( x - 1 )4 ( x - 1 )5
(%o7)/T/ - 1 + + + + + ...
2 3 6 60
ode2taylor.wxm 1 / 1

ode2taylor
Function: ode2taylor(eq, x0, y0, y1, n).
Solves second order differential equation using Taylor-series expansion.

(%i1) load(odes)$

Examples:

1. Airy's Equation y''-xy=0, y(0)=1, y'(0)=0.

(%i2) eq:'diff(y(x),x,2)-x*y(x)=0;
d2
(%o2) y( x )- x y( x )= 0
d x2

(%i3) ode2taylor(eq,0,1,0,15);
x3 x6 x9 x 12 x 15
(%o3)/T/ 1 + + + + + + ...
6 180 12960 1710720 359251200

2. y''=(y')^2+xy, y(1)=1, y'(0)=0

(%i4) eq:'diff(y(x),x,2)='diff(y(x),x,1)^2+x*y(x);
d2  d 2
(%o4) y( x )=  y( x ) + x y( x )
d x2 d x 

(%i5) ode2taylor(eq,1,1,0,5);
( x - 1 )2 ( x - 1 )3 ( x - 1 )4 ( x - 1 )5
(%o5)/T/ 1 + + + + + ...
2 6 8 12

3.

(%i6) eq:'diff(y(x),x,2)+x*'diff(y(x),x)+y(x)=0;
d2  d 
(%o6) y( x )+ x  y( x ) + y( x )= 0
dx 2 d x 

(%i7) ode2taylor(eq,0,0,1,15);
x3 x5 x7 x9 x 11 x 13 x 15
(%o7)/T/ x - + - + - + - + ...
3 15 105 945 10395 135135 2027025

(%i8) sum((-1)^n*2^n*n!*x^(2*n+1)/(2*n+1)!,n,0,7);
x 15 x 13 x 11 x9 x7 x5 x3
(%o8) - + - + - + - +x
2027025 135135 10395 945 105 15 3
ode1exact.wxm 1 / 1

ode1exact
(%i1) load(odes)$

Function: ode1exact(eq).
Solves first order exact equation.
http://www.math24.net/exact-equations.html

Examples:

1.

(%i2) eq:2*x*y*dx+(x^2+3*y^2)*dy=0;
(%o2) dy( 3 y 2 + x 2 )+ 2 dx x y = 0

(%i3) ode1exact(eq);
(%o3) y 3 + x 2 y = C

2.

(%i4) eq:(6*x^2-y+3)*dx+(3*y^2-x-3)*dy=0;
(%o4) dy( 3 y 2 - x - 3 )+ dx( - y + 6 x 2 + 3 )= 0

(%i5) ode1exact(eq);
(%o5) y 3 - x y - 3 y + 2 x 3 + 3 x = C

3.

(%i6) eq:exp(y)*dx+(2*y+x*exp(y))*dy=0;
(%o6) dy( x %e y + 2 y )+ dx %e y = 0

(%i7) ode1exact(eq);
(%o7) x %e y + y 2 = C

4.

(%i8) eq:(x*dx+y*dy)/sqrt(x^2+y^2)+(x*dy-y*dx)/x^2=0;
dy y + dx x dy x - dx y
(%o8) + =0
y 2 + x2 x2

(%i9) ode1exact(eq);
y
(%o9) y 2 + x2 + = C
x
intfactor1.wxm 1 / 2

intfactor1
Function: intfactor(eq, omega).
Find intfactor mu = mu(omega) of the first order differential equation.
http://www.math24.net/using-integrating-factor.html

Examples:

(%i1) load(odes)$

1.

(%i2) eq:(1+y^2)*dx+x*y*dy=0$

(%i3) intfactor1(eq,x);
(%o3) x

(%i4) ode1exact(eq*%);
x2 y 2 x2
(%o4) + =C
2 2

2.

(%i5) eq:(x*y^2-2*y^3)*dx+(3-2*x*y^2)*dy=0$

(%i6) intfactor1(eq,y);
1
(%o6)
y2

(%i7) ode1exact(eq*%);
3 x2
(%o7) - 2 x y - + =C
y 2

3.

(%i8) eq:y*dx+(x^2+y^2-x)*dy=0$

(%i9) ode1exact(eq);
(%o9) false

(%i10) intfactor1(eq,x^2+y^2);
1
(%o10)
y + x2
2

(%i11) ode1exact(eq*%);
x
(%o11) y + atan  = C
y 
intfactor1.wxm 2 / 2

4.

(%i12) eq:x*y*dx+(2*x^2+3*y^2-20)*dy=0$

(%i13) intfactor1(eq,y);
(%o13) y 3

(%i14) ode1exact(eq*%);
y 6 x2 y 4
(%o14) + -5 y4= C
2 2

5.

(%i15) eq:(x^2*y^3+6*y^5)*dx+(2*x^3*y^2+12*x^4)*dy=0$

(%i16) intfactor1(eq/y,x*y);
1
(%o16)
x4 y 4

(%i17) ode1exact(-eq/y*%);
1 3 2
(%o17) + + =C
xy 2 y 4 x3

Other method:

(%i18) mu:x^a*y^b;
(%o18) x a y b

(%i19) diff(mu*(x^2*y^3+6*y^5),y)=diff(mu*(2*x^3*y^2+12*x^4),x)$

(%i20) factor(lhs(%)-rhs(%));
(%o20) x a y b ( 6 b y 4 + 30 y 4 + b x 2 y 2 - 2 a x 2 y 2 - 3 x 2 y 2 - 12 a x 3 - 48 x 3 )

(%i21) collectterms(%/mu,x,y);
(%o21) ( 6 b + 30 ) y 4 +( b - 2 a - 3 ) x 2 y 2 +( - 12 a - 48 ) x 3

(%i22) solve([coeff(%,y^4),coeff(%,x^2*y^2),coeff(%,x^3)],[a,b]);
solve: dependent equations eliminated: (2)
(%o22) [ [ a = - 4 , b = - 5 ] ]

(%i23) 'mu=subst(%[1],mu);
1
(%o23)  =
x y5
4
odeL.wxm 1 / 1

odeL
Function: odeL(eqn, dvar, ivar)
The function odeL solves an linear ODEs with constant coefficients.

Examples:

(%i1) load(odes)$ load(contrib_ode)$

1. y''' - 2y'' + y' = 0.

(%i3) eq:'diff(y,x,3)-2*'diff(y,x,2)+'diff(y,x) = 0$

(%i4) odeL(eq,y,x);
(%o4) y = x %e x C3 + %e x C2 + C1

2. y'''' + 8y'' + 16y = x exp(3x) + sin(x)^2 + 1

(%i5) eq:'diff(y,x,4)+8*'diff(y,x,2)+16*y=x*exp(3*x)+sin(x)^2+1$

(%i6) sol:odeL(eq,y,x);
(%o6) y = x sin( 2 x ) C4 + sin( 2 x ) C3 + x cos( 2 x ) C2 + cos( 2 x ) C1 +
2197 x 2 cos( 2 x )+( 832 x - 768 ) %e 3 x + 13182
140608

(%i7) ode_check(eq,sol);
(%o7) 0

3. y'''- 3y'' + y = sin(x)^3.

(%i8) eq:'diff(y,x,3)-3*'diff(y,x,2)+y=sin(x)^3;
d3  d2 
(%o8) y - 3  y  + y = sin( x )3
dx 3
d x 2

(%i9) solvet(k^3-3*k^2+1=0,k);
5  7  
(%o9) [ k = 2 cos  + 1 , k = 2 cos  + 1 , k = 2 cos  + 1 ]
 9   9  9

(%i10) sol:odeL(eq,y,x);

2 cos
7  x + x 5  x + x 
 2 cos  2 cos  x + x
(%o10) y = %e  
9
C3 + %e  
9
C2 + %e 9 C1 -
28 sin( 3 x )+ 27 cos( 3 x )- 1068 sin( x )- 267 cos( x )
6052

(%i11) ode_check(eq,sol);
(%o11) 0
odeL_ic.wxm 1 / 1

odeL_ic
Function: odeL_ic(eqn, dvar, ivar, ic)
The function odeL_ic solves initial value problems for linear ODEs with constant coefficients.

Examples:

(%i1) load(odes)$ load(contrib_ode)$

1. y''' + y'' = x + exp(-x), y(0) = 1, y'(0) = 0, y''(0) = 1.

(%i3) eq:'diff(y,x,3)+'diff(y,x,2)=x + exp(-x);


d3 d2
(%o3) y+ y = %e - x + x
d x3 d x2

(%i4) odeL_ic(eq, y, x, [0, 1, 0, 1]),expand;


x3 x2
(%o4) y = x %e - x + 4 %e - x + - +3 x-3
6 2

2. y''''-y=8*exp(x), y(0)=0, y'(0)=2, y''(0)=4, y'''(0)=6.

(%i5) eq:'diff(y,x,4)-y=8*exp(x);
d4
(%o5) y - y = 8 %e x
d x4

(%i6) odeL_ic(eq, y, x, [0, 0, 2, 4, 6]);


(%o6) y = 2 x %e x

3. y''''' - y' = 0, y(0)=0, y'(0)=1, y''(0)=0, y'''(0)=1, y''''(0)=2.

(%i7) eq:'diff(y,x,5)-'diff(y,x)=0;
d5 d
(%o7) y- y=0
d x5 dx

(%i8) sol:odeL_ic(eq,y,x,[0,0,1,0,1,2]);
(%o8) y = cos( x )+ %e x - 2

Test:

(%i9) ode_check(eq,sol);
(%o9) 0

(%i10) makelist(diff(rhs(sol),x,k),k,0,4)$
ev(%,x=0);
(%o11) [ 0 , 1 , 0 , 1 , 2 ]
fs.wxm 1 / 2

fs
Function: fs(eq, y, x).
Find fundamental system of solutions of the linear n-th order differential equation with constant coeficients.

Examples:

(%i1) load(odes)$

1.

(%i2) eq:'diff(y,x,3)+3*'diff(y,x,2)-10*'diff(y,x)=x-1;
d3  d2   d 
(%o2) y + 3  y  - 10  y = x - 1
d x3 d x2  d x 

(%i3) fs(eq,y,x);
(%o3) [ 1 , %e - 5 x , %e 2 x ]

(%i4) odeL(eq,y,x);
5 x2 - 7 x
(%o4) y = %e 2 x C3 + %e - 5 x C2 + C1 -
100

2.

(%i5) eq:'diff(y,x,4)+8*'diff(y,x,2)+16*y=x^2*exp(x)*sin(x);
d4  d2 
(%o5) y + 
8 y  + 16 y = x 2 %e x sin( x )
dx 4
d x 2

(%i6) fs(eq,y,x);
(%o6) [ cos( 2 x ), x cos( 2 x ), sin( 2 x ), x sin( 2 x )]

(%i7) sol:odeL(eq,y,x);
(%o7) y = x sin( 2 x ) C4 + sin( 2 x ) C3 + x cos( 2 x ) C2 + cos( 2 x ) C1 +
( 75 x 2 - 260 x + 268 ) %e x sin( x )+( - 100 x 2 + 180 x + 26 ) %e x cos( x )
2500

3.

(%i8) eq:'diff(y,x,8)+'diff(y,x,2)=x^5$

(%i9) solvet(k^8+k^2=0,k);
%i 3 %i 3 3 %i %i 3
(%o9) [ k = %i , k = - ,k=- - , k = - %i , k = - ,k= + ,k=0]
2 2 2 2 2 2 2 2
fs.wxm 2 / 2

(%i10) fs(eq,y,x);
3 x 3 x 3 x 3 x
- x x - x x
(%o10) [ 1 , x , %e 2 cos  , %e 2 cos  , %e 2 sin  , %e 2 sin  ,
2 2 2 2
cos( x ), sin( x )]

(%i11) sol:odeL(eq,y,x);
3 x 3 x 3 x
x - x
(%o11) y = sin( x ) C8 + cos( x ) C7 + %e 2 sin  C6 + %e 2 sin  C5 + %e 2
2 2
3 x
x - x x 7 - 5040 x
cos  C4 + %e 2 cos  C3 + x C2 + C1 +
2 2 42

Test:

(%i12) load(contrib_ode)$

(%i13) ode_check(eq,sol);
(%o13) 0

4.

(%i14) eq:'diff(y,x,6)-3*'diff(y,x,5)-3*'diff(y,x,4)+12*'diff(y,x,3)
-3*'diff(y,x,2)-6*'diff(y,x,1)+2*y=2*x^7+sin(x)^3;
d6  d5   d4   d3   d2   d 
(%o14) y - 3  y  - 3  y  + 12  y  - 3  y  - 6  y  + 2 y = sin( x )3 +
dx 6
d x 5
 d x 4
 d x 3
 d x 2
  d x 
2x 7

(%i15) fs(eq,y,x);

2 cos
2  x 4  x 8  x
 2 cos  2 cos 
(%o15) [ %e x , %e  9  , %e  9  , %e  9  , %e x - 3 x , %e 3 x + x ]

(%i16) sol:odeL(eq,y,x)$

(%i17) expand(%);
8  x
2 cos
4  x
 2 cos 
(%o17) y = %e 3 x + x C6 + %e x - 3 x C5 + %e  9  C4 + %e  9  C3 +
2  x
2 cos 
%e  9  C2 + %e x C1 + 943 sin( 3 x )- 1071 cos( 3 x )+ 3 sin( x )+ 63 cos( x )+ x 7 + 21 x 6 +
8145160 8145160 1768 1768
441 x 5 + 6300 x 4 + 74970 x 3 + 644490 x 2 + 3734010 x + 10735200

Test:

(%i18) ode_check(eq,sol)$
trigreduce(%)$
trigrat(%);
(%o20) 0
partsol.wxm 1 / 2

partsol
Function: partsol(eq, y, x).
Find partial solution of the linear n-th order differential equation
with constant coefficients.

Examples:

(%i1) load(odes)$

1.

(%i2) eq:'diff(y,x,3)+3*'diff(y,x,2)-10*'diff(y,x)=x-1;
d3  d2   d 
(%o2) y + 3  y  - 10  y = x - 1
dx 3
d x 2
 d x 

(%i3) partsol(eq,y,x);
5 x2 - 7 x
(%o3) -
100

(%i4) odeL(eq,y,x);
5 x2 - 7 x
(%o4) y = %e 2 x C3 + %e - 5 x C2 + C1 -
100

2.

(%i5) eq:'diff(y,x,4)+'diff(y,x,3)-3*'diff(y,x,2)-5*'diff(y,x)-2*y=
exp(2*x)-exp(-x);
d4 d3  d2   d 
(%o5) y+ y - 3  y  - 5  y  - 2 y = %e 2 x - %e - x
dx 4 dx 3
 d x 2
  d x 

(%i6) partsol(eq,y,x);
%e - x ( 2 x %e 3 x + 3 x 3 + 4 x 2 + 2 x )
(%o6)
54

(%i7) odeL(eq,y,x);
(%o7) y = %e 2 x C4 + x 2 %e - x C3 + x %e - x C2 + %e - x C1 +
%e - x ( 2 x %e 3 x + 3 x 3 + 4 x 2 + 2 x )
54

(%i8) expand(%)$

(%i9) y=collectterms(rhs(%),exp(-x),exp(2*x));
 x  x3 2 x2 x 
(%o9) y = %e 2 x  C4 +  + %e - x  x 2 C3 + x C2 + C1 + + + 
 27   18 27 27 
partsol.wxm 2 / 2

3.

(%i10) eq:'diff(y,x,3)+'diff(y,x,1)=1/cos(x)$

(%i11) partsol(eq,y,x);
 sin( x )- 1 
log  - 2 sin( x ) log( cos( x ))+ 2 x cos( x )
 sin( x )+ 1 
(%o11) -
2

(%i12) sol:odeL(eq,y,x);
 sin( x )- 1 
log  - 2 sin( x ) log( cos( x ))+ 2 x cos( x )
 sin( x )+ 1 
(%o12) y = sin( x ) C3 + cos( x ) C2 + C1 -
2

Test:

(%i13) load(contrib_ode)$

(%i14) ode_check(eq,sol);
(%o14) 0

4.

(%i15) eq:'diff(y,x,3)+8*'diff(y,x,1)+9*y=cos(x)^3;
d3  d 
(%o15) y +8  y  + 9 y = cos( x )3
dx 3 d x 

(%i16) partsol(eq,y,x);
13 sin( 3 x )- 39 cos( 3 x )- 63 sin( x )- 81 cos( x )
(%o16) -
1560

(%i17) sol:odeL(eq,y,x);
 5 7 x  5 7 x
(%o17) y = %e x / 2 sin  C3 + %e x / 2 cos  C2 + %e - x C1 -
 2   2 
13 sin( 3 x )- 39 cos( 3 x )- 63 sin( x )- 81 cos( x )
1560

Test:

(%i18) load(contrib_ode)$

(%i19) ode_check(eq,sol);
(%o19) 0
odeM.wxm 1 / 2

odeM
Function: odeM(A,F,t)
Find solutions of linear system of ODEs
with constant coefficients in matrix form:
Y' = AY + F

Examples:

(%i1) load(odes)$

1. Y' = AY + F.

(%i2) A:matrix([1,1],[4,1]);
1 1
(%o2)
4 1

(%i3) F:transpose([t-2,4*t-1]);
t-2
(%o3)
4 t-1

(%i4) sol:odeM(A,F,t);
 %e 3 t %e - t   %e 3 t %e - t 
 4 - 4  C2 +  2 + 2  C1 - t
   
(%o4)
 %e 3 t %e - t 
 2 + 2  C2 +( %e 3 t - %e - t ) C1 + 1
 

Test:

(%i5) diff(sol,t)-A.sol-F$
expand(%);
0
(%o6)
0

2. Y' = AY.

(%i7) A:matrix([2,0,-8,-3],[-18,-1,0,0],[-9,-3,-25,-9],[33,10,90,32]);
2 0 -8 -3
- 18 - 1 0 0
(%o7)
-9 - 3 - 25 - 9
33 10 90 32

(%i8) F:transpose([0,0,0,0])$
odeM.wxm 2 / 2

(%i9) charpoly(A, x),factor;


2
(%o9) ( x 2 - 4 x + 13 )

(%i10) solve(%);
(%o10) [ x = 2 - 3 %i , x = 3 %i + 2 ]

(%i11) odeM(A,F,t)$

(%i12) sol:ratsimp(%);
(%o12)
( - 3 t - 1 ) %e 2 t sin( 3 t ) C4 +(( - 9 t - 3 ) %e 2 t sin( 3 t )+ t %e 2 t cos( 3 t )) C3 -

(( 9 t + 3 ) %e 2 t sin( 3 t )- 9 t %e 2 t cos( 3 t )) C4 +(( 24 t + 10 ) %e 2 t sin( 3 t )- 30 t %e 2 t cos( 3 t )) C3 +(3 t %

- 3 %e 2 t sin( 3 t ) C4 +( %e 2 t cos( 3 t )- 9 %e 2 t sin( 3 t )) C

( 9 %e 2 t sin( 3 t )+( 3 t + 1 ) %e 2 t cos( 3 t )) C4 +(( t + 27 ) %e 2 t sin( 3 t )+ 9 t %e 2 t cos( 3 t )) C3 +(3

(%i13) sol[1,1];
(%o13) ( - 3 t - 1 ) %e 2 t sin( 3 t ) C4 +(( - 9 t - 3 ) %e 2 t sin( 3 t )+ t %e 2 t cos( 3 t )) C3 -
t %e 2 t sin( 3 t ) C2 +( %e 2 t cos( 3 t )- 3 t %e 2 t sin( 3 t ))C1

(%i14) sol[2,1];
(%o14) (( 9 t + 3 ) %e 2 t sin( 3 t )- 9 t %e 2 t cos( 3 t )) C4 +
(( 24 t + 10 )%e 2 t sin( 3 t )- 30 t %e 2 t cos( 3 t ))C3 +
( 3 t %e 2 t sin( 3 t )+( 1 - 3 t ) %e 2 t cos( 3 t ))C2 +
(( 9 t - 3 ) %e 2 t sin( 3 t )- 9 t %e 2 t cos( 3 t ))C1

(%i15) sol[3,1];
(%o15) - 3 %e 2 t sin( 3 t ) C4 +( %e 2 t cos( 3 t )- 9 %e 2 t sin( 3 t )) C3 - %e 2 t sin( 3 t )
C2 - 3 %e 2 t sin( 3 t ) C1

(%i16) sol[4,1];
(%o16) ( 9 %e 2 t sin( 3 t )+( 3 t + 1 ) %e 2 t cos( 3 t )) C4 +
(( t + 27 )%e 2 t sin( 3 t )+ 9 t %e 2 t cos( 3 t ))C3 +( 3 %e 2 t sin( 3 t )+ t %e 2 t cos( 3 t ))
C2 +( 10 %e 2 t sin( 3 t )+ 3 t %e 2 t cos( 3 t ))C1

Test:

(%i17) diff(sol,t)-A.sol$
expand(%);
0
0
(%o18)
0
0
odeM_ic.wxm 1 / 2

odeM_ic
Function: odeM_ic(A, F, t, t0, Y0)
Find solutions of initial problem for linear system of ODEs
in matrix form:

Y' = AY + F, Y(t0) = Y0.

(updated version of odelinsys)

Examples:

(%i1) load(odes)$

1. Y' = AY + F, Y(0)=Y0

(%i2) A:matrix([2,-4],[2,-2]);
2 -4
(%o2)
2 -2

(%i3) F:transpose([4*%e^(-2*t),0]);
4 %e - 2 t
(%o3)
0

(%i4) Y0:transpose([0,0]);
0
(%o4)
0

(%i5) sol:odeM_ic(A,F,t,0,Y0);
2 sin( 2 t )
(%o5)
sin( 2 t )- cos( 2 t )+ %e - 2 t

Test:

(%i6) diff(sol,t)-A.sol-F$ expand(%);


0
(%o7)
0

(%i8) ev(sol,t=0);
0
(%o8)
0
odeM_ic.wxm 2 / 2

2. Y' = AY, Y(0)=transpose([15,35,55,75]).

(%i9) A:matrix([4,1,1,7],[1,4,10,1],[1,10,4,1],[7,1,1,4]);
4 1 1 7
1 4 10 1
(%o9)
1 10 4 1
7 1 1 4

(%i10) F:transpose([0,0,0,0])$

(%i11) Y0:transpose([15,35,55,75]);
15
35
(%o11)
55
75

(%i12) charpoly(A, x),factor;


(%o12) ( x - 15 )( x - 10 )( x + 3 )( x + 6 )

(%i13) sol:odeM_ic(A,F,t,0,Y0);
27 %e 15 t + 18 %e 10 t - 30 %e - 3 t

54 %e 15 t - 9 %e 10 t - 10 %e - 6 t
(%o13)
54 %e 15 t - 9 %e 10 t + 10 %e - 6 t

27 %e 15 t + 18 %e 10 t + 30 %e - 3 t

Test:

(%i14) diff(sol,t)-A.sol$
expand(%);
0
0
(%o15)
0
0

(%i16) ev(sol,t=0);
15
35
(%o16)
55
75
matrix_exp.wxm 1 / 1

matrix_exp
Function: matrix_exp(A,t)
Returns matrix exponential e^(At)
computed via Laplace transforms.

(%i1) matrix_exp(A,r):=
block([n,B,s,t,Lap,f],
n:length(A),
B:invert(s*ident(n)-A),
Lap(f):=ilt(f, s, t),
matrixmap(Lap,B),
subst(t=r,%%))$

Examples:

1.

(%i2) A:matrix([1,1],[0,1]);
1 1
(%o2)
0 1

(%i3) matrix_exp(A,t);
%e t t %e t
(%o3)
0 %e t

(%i4) e^'A=matrix_exp(A,1);
%e %e
(%o4) e A =
0 %e

2.

(%i5) A:matrix([21,17,6],[-5,-1,-6],[4,4,16]);
21 17 6

(%o5) - 5 - 1 - 6
4 4 16

(%i6) e^'A=matrix_exp(A,1);
13 %e 16 %e 4 13 %e 16 5 %e 4 %e 16 %e 4
- - -
4 4 4 4 2 2

(%o6) e A = %e 4 9 %e 16 5 %e 4 9 %e 16 %e 4 %e 16
- - -
4 4 4 4 2 2

4 %e 16 4 %e 16 %e 16
odelinsys.wxm 1 / 1

odelinsys
Function: odelinsys(A, F, x, x0, Y0)
Find solutions of initial problem for linear system of ODEs
in matrix form: Y' = AY + F, Y(x0) = Y0.

(%i1) load(odes)$ load(diag)$

Examples:

1. Solve Y' = AY + F, Y(0) = Y0

(%i3) A:matrix([1,3],[-1,5]);
1 3
(%o3)
-1 5

(%i4) F:transpose([-x,2*x])$ Y0:transpose([3,1])$

(%i6) sol:odelinsys(A,F,x,0,Y0);
7 %e 4 x 15 %e 2 x 11 x 29
+ + +
32 8 8 32
(%o6)
7 %e 4 x 5 %e 2 x x 5
+ - +
32 8 8 32

Test:

(%i7) diff(sol,x)-A.sol-F,expand;
0
(%o7)
0

2. Solve Y' = AY

(%i8) A:matrix([4,-1,0],[3,1,-1],[1,0,1]);
4 -1 0

(%o8) 3 1 -1
1 0 1

(%i9) sol:odelinsys(A,[0,0,0],t,0,[C1,C2,C3]),factor;
%e 2 t ( t 2 C3 - t 2 C2 - 2 t C2 + t 2 C1 + 4 t C1 + 2 C1 )
2

(%o9) %e 2 t ( t 2 C3 - t C3 - t 2 C2 - t C2 + C2 + t 2 C1 + 3 t C1 )
%e 2 t ( t 2 C3 - 2 t C3 + 2 C3 - t 2 C2 + t 2 C1 + 2 t C1 )
2
wronskian.wxm 1 / 1

wronskian
Function: wronskian ([f_1, ..., f_n], x)
Returns the Wronskian matrix of the list of expressions [f_1, ..., f_n]
in the variable x.

(%i1) load(odes)$

Examples:

1.

(%i2) wronskian([f(x),g(x),h(x)],x);
f( x ) g( x ) h( x )
d d d
f( x ) g( x ) h( x )
(%o2) dx dx dx

d2 d2 d2
f( x ) g( x ) h( x )
d x2 d x2 d x2

2. Form a linear homogeneous differential equation,


knowing its fundamental system of solutions:
y1=x, y2=x^3.

(%i3) depends(y,x);
(%o3) [ y( x )]

(%i4) wronskian([x,x^3,y],x);
x x3 y
d
1 3 x2 y
(%o4) dx

d2
0 6x y
d x2

(%i5) determinant(%)=0;
  d2   d  3  d 2 
(%o5) x  3 x 2  y  - 6 x  y -x  y + 6 x y = 0
 d x2   d x  d x2 

(%i6) eq:expand(%/x/2);
 d2   d 
(%o6) x 2  y  - 3 x  y + 3 y = 0
d x2  d x 

(%i7) ode2(eq,y,x);
(%o7) y = %k1 x 3 + %k2 x
References:

1. http://maxima.sourceforge.net/

2. Kamke, E., 1944. Differentialgleichungen. Losungsmethoden und Lo-


sungen. AkademischeVerlagsgesellschaft, Leipzig.

3.

You might also like