Differential Equations Using Scilab: Kannan M. Moudgalya IIT Bombay Kannan@iitb - Ac.in
Differential Equations Using Scilab: Kannan M. Moudgalya IIT Bombay Kannan@iitb - Ac.in
Scilab
Kannan M. Moudgalya
IIT Bombay
[email protected]
Scilab Workshop
13 September 2010
dx
= −0.1x
dt
Initial conditions:
x = 100 at t=0
dx
Z Z
= −0.1 dt
x
C + ln x(t) = −0.1t
Kannan Moudgalya Differential equations using Scilab 4/31
Analytical Solution of Simple Model II
C = − ln 100
x(t)
ln = −0.1t or x(t) = 100e−0.1t
100
90
80
70
60
50
40
30
20
10 Time, in months
0
0 4 8 12 16 20 24
1 exec ( ” d i f f 1 . s c i ” ) ;
2 exec ( ” Euler . s c i ” ) ;
3 x0 =1; t 0 =0; T = 0 : 1 : 2 4 ;
4 s o l = E u l e r ( x0 , t0 , T , d i f f 1 ) ;
5 // s o l = o d e ( x0 , t0 , T , d i f f 1 ) ;
6 p l o t 2 d (T , s o l ) , p a u s e
7 p l o t 2 d (T,1+2∗T+5∗Tˆ 2 , 5 )
8 x t i t l e ( ’ x v s . t : P o l y n o m i a l Problem ’ , ’ t ’ , ’ x
1 f u n c t i o n x = E u l e r ( x0 , t0 , t , g )
2 n = l e n g t h ( t ) , x = x0 ;
3 f o r j = 1 : n−1
4 x0 = x0 + ( t ( j +1)− t ( j ) ) ∗ g ( t ( j ) , x0 ) ;
5 x = [ x x0 ] ;
6 end ;
7 endfunction
1 f u n c t i o n xdot = d i f f 1 ( t , x )
2 x d o t = (2+18∗ t +68∗ t ˆ2+180∗ t ˆ3+250∗ t ˆ4+250∗ t
3 endfunction
2800
2400
2000
1600
1200
800
400
t
0
0 4 8 12 16 20 24
dx1
= g1 (x1 , . . . , xn , t)
dt
..
.
dxN
= gn (x1 , . . . , xn , t)
dt
g1 ((x1 , . . . , xn )|t−1 , t − 1)
x1 x1
... = ... + ∆t ..
.
xn t xn t−1 gN ((x1 , . . . , xn )|t−1 , t − 1)
xt = xt−1 + ∆tg(xt−1 )
1 exec ( ” pred . s c i ” ) ;
2 exec ( ” Euler . s c i ” ) ;
3 x0 = [ 8 0 , 3 0 ] ’ ; t 0 =0; T = 0 : 0 . 1 : 2 0 ; T=T ’ ;
4 s o l = E u l e r ( x0 , t0 , T , p r e d ) ;
5 // s o l = o d e ( x0 , t0 , T , p r e d ) ;
6 clf ();
7 p l o t 2 d (T , s o l ’ )
8 x s e t ( ’ window ’ , 1 )
9 plot2d ( sol (2 ,:) , sol (1 ,:))
1 f u n c t i o n xdot = pred ( t , x )
2 xdot ( 1 ) = 0 . 2 5 ∗ x (1) −0.01∗ x ( 1 ) ∗ x ( 2 ) ;
3 x d o t ( 2 ) = −x ( 2 ) + 0 . 0 1 ∗ x ( 1 ) ∗ x ( 2 ) ;
4 endfunction
130
120
110
100
90
80
70
Predator
60
10 14 18 22 26 30 34 38 42 46
6 clf ();
7 p l o t 2 d (T , s o l ’ )
8 x s e t ( ’ window ’ , 1 )
Kannan Moudgalya Differential equations using Scilab 23/31
Predator-Prey Problem by Scilab
Integrator II
1 f u n c t i o n xdot = pred ( t , x )
2 xdot ( 1 ) = 0 . 2 5 ∗ x (1) −0.01∗ x ( 1 ) ∗ x ( 2 ) ;
3 x d o t ( 2 ) = −x ( 2 ) + 0 . 0 1 ∗ x ( 1 ) ∗ x ( 2 ) ;
4 endfunction
120
110
100
90
80
Predator
70
15 19 23 27 31 35 39
um+1
j − um
j c c∆t
= (um m m
j−1 − 2uj + uj+1 ), µ=
∆t (∆x)2 (∆x)2
um+1
j = um m m m
j + µ(uj−1 − 2uj + uj+1 )
= µum m m
j−1 + (1 − 2µ)uj + µuj+1
um+1
1 = µum m m
0 + (1 − 2µ)u1 + µu2
um+1
2 = µum m m
1 + (1 − 2µ)u2 + µu3
..
.
um+1
N = µum m m
N−1 + (1 − 2µ)uN + µuN+1
um+1
1 = µum m m
0 + (1 − 2µ)u1 + µu2
um+1
2 = µum m m
1 + (1 − 2µ)u2 + µu3
..
.
um+1
N = µum m m
N−1 + (1 − 2µ)uN + µuN+1
In matrix form,
m+1 m
u1 1 − 2µ µ u1 µ
u2 µ 1 − 2µ µ u
.2 +
.
.. = .. ..
.
uN µ 1 − 2µ uN µu