a di una
molla di costante elastica k `
e descritto dallequazione differenziale
lineare del secondo ordine (equazione delloscillatore armonico
semplice smorzato):
Prof. F. Pitolli
(A.A. 2012-2013)
CALCOLO NUMERICO
ANALISI NUMERICA
dx
d2x
+ kx = 0
m 2 +b
dt
dt
dx
: forza di attrito
dt
k x:
legge di Hooke
m =
k
b2
pulsazione
:
m 4m2 delloscillatore
e
Nei problemi reali lespressione dellequazione differenziale `
complicata e, in genere, non si riesce a calcolare esplicitamente
la soluzione.
Problema di Cauchy:
dx
d2x
+b
+ kx = 0
m
dt
dt
x(0) = x0
dx
(0) = v0
dt
c.i.
c.i.
ebt/2m cos(m t + m)
x > 0
x(t) = xm
xm =
cos m
v0 2m
tan m =
x0 b
1.5
dx
(0) = 0
dt
x0
dx/dt
0.5
m = 250g
k = 85 N/m
b = 70 g/s
0
0.5
(t0) = 0
1
1.5
2
0
Esempio
Le oscillazioni di un pendolo possono essere descritte dallequazione
differenziale del secondo ordine non lineare
g
d2
sin = 0
t > t0
dt2
L
dove L `
e la lunghezza del pendolo, g `
e laccelerazione di gravit`
a e
`
e langolo tra il pendolo e la verticale. Il problema `
e completato con
le condizioni iniziali
Esempio:
x(0) = 1
10
t
15
20
(t0) = v0
y (k)(t0) = yk
t > t0
Condizioni iniziali
k = 0, 1, . . . , n 1
y2 (t)
y3 (t)
yn (t)
y1(t) = y(t)
y1 (t) = y2(t)
y2(t) = y3(t)
y10 = y0
y
20 = y1
..................
yn0 = yn1
.........................
yn1
(t) = yn(t)
Condizioni
iniziali
t > t0
condizione iniziale
K>0
Soluzione esatta:
y(x)
y2
y1
t>0
1 = k1 1
y1
y
y2
2 = k2 1
y (0) = y
y2(0) = y20
1
10
dove k1, k2, 1, 2 sono costanti positive e y10, y20 sono le condizioni iniziali.
y (t) = Ky(t)
y(t0) = y0
y(t) = y0 eK(tt0)
Il pi`
u semplice modello che descrive la competizione tra due specie `
e il
modello preda-predatore di Lotka-Volterra. Si tratta di una coppia
di equazioni differenziali in cui y1(t) rappresenta il numero di prede
e y2(t) rappresenta il numero di predatori. In assenza di predatori
le prede crescono in modo esponenziale; i predatori invece, in assenza
e
di prede, muoiono rapidamente. Linterazione tra le due specie `
descritta da un termine proporzionale a entrambe le popolazioni:
x
0
2.2
10
2
1.8
10
1.6
P(t)
1.4
P(t)
x 10
10
1.2
dP (t)
= bP (t)
dt
P (0) = 50976
Equazione logistica
10
0.8
0.6
dP (t)
dt
P (0) = 50976
0.4
10
20
30
40
50
10
50
100
t
lim P (t) =
150
lim P (t) =
200
b
k
1 kb P (0)(1 ebt)
8
Esistenza e unicit`
a della
soluzione del problema di Cauchy
Q := (t, y) IR2 |t [t0, t0 + a]; y [y0 b, y0 + b]
e sia lipschitziana in y,
rispetto a t
y(x)
y
uniformemente
y b
0
x +a
Definizione. Una funzione f (t, y) si dice lipschitziana in y uniformemente rispetto a t in D IR2, se esiste una costante
L > 0 tale che
|f (t, y1) f (t, y2)| L |y1 y2|
(t, y1), (t, y2) D.
a,
b
, M = maxQ|f (t, y)|.
M
e sia lipschitziana in y,
rispetto a x
uniformemente
S
y(x)
y
x0
10
x0+
Metodo di Eulero
(
Problema di Cauchy:
Discretizzazione di I: ti = t0 + ih
i = 0, . . . , n
h=
condizione iniziale
`
e ben posto se, dette y(t; y0) e y(t; y0 + ) le soluzioni con condizioni
iniziali y(t0) = y0 e y(t0) = y0 + rispettivamente, si ha
|y(t; y0) y(t; y0 + )| <
t [t0, t0 + ]
condizione iniziale
t [a, b]
y
3
1
2
y(t1) = y(t0 + h) = y(t0) +
0 )h + y (1 )h =
y
2
1
y
2
= y(t0) + f (t0 , y(t0))h + y (1 )h2
2
y(x +3h)
y1
1 [t0, t1]
y (t
r1
t0
Soluzione approssimata:
y1 = y0 + hf (t0, y0)
12
y0(x0)
t0
y(x0+3h)
T1
y(x0+2h)
y(x0+h)
Algoritmo:
yi+1 = yi + hf (ti , yi)
T2
T3
i = 0, 1, . . . , n
r1
y2
y
P3
T1
y(x0+h)
P2
P1
y0(x0)
P0
0
P2
t0
y(x0+3h)
x +h
0
x +2h
0
x +3h
x0+2h
x0+3h
x +2h
13
y(x0+2h)
P0
x0+h
r2
P1
x0
x +h
y1
P0
x
r1
y2
T3
y0(x0)
y(x0+h)
P2
r2
y3
P3
T1
y(x0+2h)
dove > 0 `
e una prefissata tolleranza, purch
e = () sia sufficientemente piccolo.
x0+3h
Primo ordine
r2
y
y(x)
Dalla figura `
e evidente che, se si riduce
il passo h, si riduce anche lerrore
ei = PiTi . Per di pi`
u
y(x)
y(x0+3h)
r
T1
r1
T22
T3
P
T1
y(x0+2h)
P4
y1
T4
y2
T2
t0
y(x0+h/2)
h0 1in
y2
r
y
y(x0+h)
y(x0+h)
P1
y(x +h)
0
P1
y(x +h/2)
0
y(x )
Il metodo di Eulero `
e convergente
x +3h/2
x +h/2
x0+h
y(x )
y0(x0)
x +2h
0
P0
x0
R(t, y; h; f )
=0
h
P2
x0+h
x0+3h
x0+2h
P0
x0 x +h/2
0
x +3h/2
0
x +h
0
x0+2h
17
Metodi di Runge-Kutta
i (ti , ti+1)
m (k1)
X
f
(ti , yi) k1
yi+1 = yi + h
h
k!
k=1
hm+1
y (m+1)(i)
(m + 1)!
r1
Stabile:
Consistente:
lim
T4
Un metodo numerico `
e convergente se `
e
h0
P0
T3
P3
(k1)
(k1)
k1
18
con
(t, y; h; f ) =
r
X
al kl (t, y)
l=1
k1(t, y) = f
(t, y)
l1
k (t, y) = f t + l h, y + h
blj kj (t, y)
l
j=1
l = 2, . . . , r
Relazione esatta
= h f (t, y) +
con
h2
ft (t, y) + fy (t, y) f (t, y) + O(h3)
2
k1(t, y) = f (t, y)
Affinch
e il metodo sia del secondo ordine devono essere
nulli i termini in h e h2
1
y(t + h) = y(t) + y (t) h + y (t) h2 + 0(h3) =
2
1
ft (t, y) + fy (t, y) f (t, y) h2 + O(h3)
= y(t) + f (t, y) h +
1 a1 a2 = 0
a2 = 0
20
Metodo di Heun
1
2
=1
i = 0, 1, . . . , n
y = y(t )
0
0
t1
y
Secondo ordine
T1
y(x1)
P0
x0
y0 = y(t0)
h
k1(ti , yi) + 2k2(ti , yi) + 2k3(ti, yi) + k4(ti , yi)
6
i = 0, 1, . . . , n
h
h
t
+
k
(t
,
y
)
=
f
,
y
+
k
i
i
1
2 i i
2
2
yi+1 = yi +
h
h
,
y
+
k
k
(t
,
y
)
=
f
t
+
i
2
3 i i
i
2
2
k (t , y ) = f (t + h, y + hk )
4 i i
i
i
3
y(x)
y1
21
h
R(t, y; h; f ) = O(h3)
infinite soluzioni
a1 = a2 =
22
23
Script MATLAB
Esempio
Problema di Cauchy:
(
y (t) = y(t) t
y(0) = 2
t [0, 2]
11
1.4
Metodo di Heun
10
1.2
y
9
Metodo di Eulero
1
8
Metodo di RK classico
0.8
0.6
Metodo di Eulero
0.4
4
Metodo di RK classico
0.2
3
Metodo di Heun
0
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
0.2
0.4
0.6
0.8
1.2
1.4
1.6
Grafico dellerrore
1.8
24
25
Programma FORTRAN
program eulero
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
Funzioni:
- f(x,y): termine noto dellequazione differenziale
*
ti = t0
yi = y0
write (10,*) t0=,t0, y0=,y0, h=,h, n=,n
do i = 1, n
yi = yi + h*f(ti,yi)
ti = ti +h
write (*,*) i, ti, yi, exp(ti)+ti+1.
write (10,*) i, ti, yi, exp(ti)+ti+1.
enddo
Input:
- x0, y0: condizione iniziale
- h: passo di discretizzazione
- n: numero di passi
Output:
- xi: nodo i-esimo
- yi: approssimazione al nodo xi
*
stop
end
implicit none
real
t0, y0, h, ti, yi
real
f
integer n, i
*
*
f(t,y) = (y-t)
26
27
Convergenza
i = 0, 1, . . . , n
Funzione
incremento
y0 = y(t0)
1
[f (t, y(t)) + f (t + h, y(t) + hf (t, y(t))]
2
lim yi = y(
t)
t = t0 + ih
(t, y; h; f ) =
Convergenza:
h0 0in
(ti , y{zi; h; f )}
yi+1 = yi + h
|
Metodo di Heun:
ei = y(ti ) yi
1
[k1 + 2k2 + 2k3 + k4 ]
6
28
Stabilit`
a : laccumularsi degli errori locali di troncamento si
mantiene limitato per h 0 e t fissato
29
"
y(t + h) y(t)
(t, y(t); h; f )
h0
h
h0
y(t + h) y(t)
(t, y(t); h; f )
(t, y(t); h; f ) =
h
h0
31
Stabilit`
a dei metodi one-step espliciti
ei+1 = y(t
i+1) yi+1 =
= y(ti ) + h (ti , y(ti); h; f ) + h (ti , y(ti ); h; f )
yi + h (ti, yi; h; f )
i = 0, 1, ...
L|y(ti)yi |
i = 0, 1, ...
i = Cp hp
(1 + hL)i 1
L
Poich
e |ei| i , i = 0, 1, ..., e (1 + )i < ei per > 0, si deduce che
lerrore globale di troncamento ha la limitazione
|ei| Cp hp
eL(tit0) 1
L
Cp : costante dipendente
metodo one-step.
32
dal
33
eL(tit0) 1
Cp hp +
L
h
eL(tit0) 1 M
h+
L
2
h
M =
max
t[t0,t0+]
|y (t)|
35
Esempio
Errore globale:
|ei|
eL(tit0) 1 M
h+
L
2
h
Errore di troncamento
Errore di arrotondamento
ott
M =
max
t[t0,t0+]
|y (t)|
Errore globale
y (x) = y(x)
y(0) = 1
x [0, 1]
Soluzione esatta:
y(x) = ex
Metodo di Eulero:
(
1) xi
2) xi
i = 1, 2, . . . , n
(1)
= ih1
i = 0, 1, . . . , n1
h1 = 0.1
(2)
= ih2
i = 0, 1, . . . , n2
h2 = 0.05
n1 = 10
n2 = 20
36
2.8
37
0.14
Esempio
y(x)
2.6
0.12
2.4
(2)
yi
0.1
(1)
2.2
(1)
ei =|y(xi)yi |
0.08
y(1)
1.8
0.06
1.6
0.04
1.4
0.02
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
y(x) =
Metodo di Eulero:
(
x[0,1]
Soluzione esatta:
x [2, 0]
(2)
(2)
ei =|y(xi)yi |
1.2
= ih1
i = 0, 1, . . . , 10
h1 = 0.2
(2)
= ih2
i = 0, 1, . . . , 20
h2 = 0.1
(3)
= ih3
i = 0, 1, . . . , 40
h3 = 0.05
1) xi
s
2
6.06 108
M
2) xi
38
3) xi
2+x
e
(cos(2) + sin(2))
2
cos(x) + sin(x)
i = 1, 2, . . . , n
39
1.4
0.7
1.2
0.6
0.5
0.8
0.4
0.18
0.3
0.16
0.6
0.4
0.14
0.2
0.2
0.12
0.1
0.1
0.2
2
1.5
0.5
0
2
1.5
0.5
0.08
0.06
0.04
0.02
0
2
hott =
1.5
0.5
2
0.87 107
M
40
41
Metodi Predictor-Corrector
y(ti+1) y(ti ) =
Z t
i+1
ti
Z t
i+1
y (t) dt =
| ti
f (t, y(t)) dt
{z
formula di quadratura
ti
f (t, y(t)) dt
h
f (ti+1, y(ti+1)) + f (ti , y(ti))
2
yi+1 = yi +
Corrector :
(N )
y
i+1 = yi+1
Predictor :
h
yi+1 = yi + 2
0i
(r1)
1rN
Convergenza:
2 (L
e la costante di Lipschitz di f ).
Il metodo converge se h < L
h
f (ti+1, yi+1) + f (ti , yi)
2
Nota. Se L `
e grande (problemi stiff) la limitazione su h pu`
o
essere troppo restrittiva metodi di tipo Newton
42
43
Soluzione numerica di
sistemi di equazioni differenziali
.................................................
yn(t) = fn (t, y1(t), . . . , yn(t))
In forma vettoriale:
(
y1(t0) = y10
y (t ) = y
2 0
20 Condizioni iniziali
.....................
yn(t0) = yn0
Caso particolare: n = 2
(
dove
Metodo di Eulero:
(i = 0, 1, . . . , n)
Y = Y (t )
0
0
dove
Caso particolare: n = 2
y(t0) = y0
Condizioni iniziali
z(t0) = z0
Nota. Per i sistemi di equazioni differenziali del primo ordine valgono teoremi
di esistenza e unicit`
a della soluzione analoghi a quelli validi nel caso di
ununica equazione differenziale.
44
Metodo di Heun:
Y0 = Y (t0)
i = 0, 1, . . . , n
y(t0 ) = y0
z(t0) = z0
i+1 = yi + [f (ti , yi, zi) + f (ti + h, yi + hf (ti , yi, zi )), zi + hg(ti , yi, zi ))]
h
zi+1 = zi + [g(ti, yi, zi) + g(ti + h, yi + hf (ti , yi, zi)), zi + hg(ti, yi, zi))]
i = 0, 1, . . . , n
y0 = y(t0)
z0 = z(t0)
46
y(t0 ) = y0
z(t0) = z0
z
i+1 = zi + hg(ti , yi , zi )
y
0 = y(t0)
z0 = z(t0)
K1 = F
K3 = F
Y0 = Y (t0)
K4 = F
i = 0, 1, . . . , n
45
(ti, Yi)
h
h
ti + , Yi + K1
2
2
h
h
ti + , Yi + K2
2
2
(ti + h, Yi + hK3 )
y (t) = f (t, y(t), z(t))
z (t) = g(t, y(t), z(t))
Caso particolare: n = 2
y(t0 ) = y0
z(t0) = z0
h
h
z0 = z(t0)
y0 = y(t0 )
k1 = f
(ti, yi , zi)
(ti, yi , zi)
q1 = g
h
h
h
h
h
h
k2 = f ti + , yi + k1 , zi + q1
q2 = g ti + , yi + k1 , zi + q1
2
2
2
2
2
2
h
h
h
h
h
h
k
=
f
t
+
+
,
z
+
q
=
g
t
+
+
,
z
+
,
y
k
q
,
y
k
q
3
i
i
2
i
2
3
i
i
2
i
2
2
2
2
2
2
2
47
Metodo di Eulero
700
!
"
y2
y1
t>0
1 = k1 1
!
"
y1
y
y2
2 = k2 1
y (0) = y
y2(0) = y20
1
10
2000
500
1500
400
300
1000
200
500
100
10
20
30
40
50
10
20
30
49
10
0.2
0.15
5
600
500
500
400
400
300
300
200
200
50
48
600
40
0.1
0
0.05
5
0
10
0.05
100
15
20
0.1
10
20
30
40
50
0.15
10
20
30
40
50
100
10
20
30
40
50
10
20
30
40
50
Esempio - 2
Un modello preda-predatore
per lo sviluppo sostenibile
p= (1 + 3 f )p + 2 g p
g = 1 g + 2 p g
p(t ) = p
g(t0) = g0
0
0
dove
Consideriamo loscillatore armonico descritto dallequazione differenziale del secondo ordine (n = 2):
t > t0
| {z } | {z }
y(x)
z(x)
u(x0) = u0
u(x ) = u
0
1
y(x) = u(x)
y (x) = z(x)
z (x) = g(x, y(x), z(x))
y(x0) = y0
z(x0) = y1
y(x)=u(x)
0.8
0.8
y
0.6
Script MATLAB
z(x)=u(x)
0.4
0.6
0.2
z(x)=u(x)
0.4
0
0.2
0.2
0.4
0.6
0.2
y(x)=u(x)
0.8
10
15
20
25
30
0.4
10
x0: 0
y0: 1
z0: 0
passo: 0.2
numero passi: 150
funzione f(x,y,z): z
funzione g(x,y,z): -2*0.1*z-y
x0: 0
y0: 1
z0: 0
passo: 0.2
numero passi: 150
funzione f(x,y,z): z
funzione g(x,y,z): -2*z-y
52
equazioni differenziali
di Runge-Kutta classico
);
);
53
Programma FORTRAN
%
% Algoritmo
%
xi(1) = x0; yi(1) = y0; zi(1) = z0;
for i = 2:n
x = xi(i-1);
y = yi(i-1);
z = zi(i-1);
k1 = f(x,y,z);
t1 = g(x,y,z);
k2 = f(x+0.5*h,y+0.5*h*k1,z+0.5*h*t1);
t2 = g(x+0.5*h,y+0.5*h*k1,z+0.5*h*t1);
k3 = f(x+0.5*h,y+0.5*h*k2,z+0.5*h*t2);
t3 = g(x+0.5*h,y+0.5*h*k2,z+0.5*h*t2);
k4 = f(x+h,y+h*k3,z+h*t3);
t4 = g(x+h,y+h*k3,z+h*t3);
xi(i) = x + h;
yi(i) = y + h*(k1+2*k2+2*k3+k4)/6;
zi(i) = z + h*(t1+2*t2+2*t3+t4)/6;
end
figure(1)
plot(xi,yi,r,xi,zi,b)
program rungekutta_n2
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
54
*
*
*
yi(i)
zi(i)
xi(i)
write
enddo
*
* Metodo di
*
xi(0)
yi(0)
zi(0)
write
55
= y + h*(k1+2.*k2+2.*k3+k4)/6.
= z + h*(t1+2.*t2+2.*t3+t4)/6.
= x0 + i*h
(*,*) i, xi(i), yi(i), zi(i)
*
* File di output per GNUPLOT
*
open(10,file=grafrk4.dat)
write (10,120) (xi(i),yi(i),yi(i),i=0,n)
close(10)
120
format (3(2x,e12.6))
*
* Fine
*
stop
end
do i = 1, n
x = xi(i-1)
y = yi(i-1)
z = zi(i-1)
k1 = f(x,y,z)
t1 = g(x,y,z)
k2 = f(x+0.5*h,y+0.5*h*k1,z+0.5*h*t1)
t2 = g(x+0.5*h,y+0.5*h*k1,z+0.5*h*t1)
k3 = f(x+0.5*h,y+0.5*h*k2,z+0.5*h*t2)
t3 = g(x+0.5*h,y+0.5*h*k2,z+0.5*h*t2)
k4 = f(x+h,y+h*k3,z+h*t3)
t4 = g(x+h,y+h*k3,z+h*t3)
56
57
Esercizio.
Utilizzare il programma per approssimare la soluzione del problema del
pendolo non lineare.
Riferimenti bibliografici
L. Gori, Calcolo Numerico: Cap. 9 9.1-9.6, 9.8 (cenni), 9.14 (cenni)
L. Gori, M.L. Lo Cascio, Esercizi di Calcolo Numerico: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6,
58
59