Equazione del calore e metodo delle linee
Alvise Sommariva
Universit`
a degli Studi di Padova
Dipartimento di Matematica
Equazione del calore.
Equazione del calore.
Se la soluzione `
e suffic. regolare da
∂
2
u
∂x
2
(x
j
, t) ≈
u(x
j +1
, t) − 2u(x
j
, t) + u(x
j −1
, t)
h
2
x
, j = 1, . . . , m − 1
(2)
posto u
j
(t) := u(x
j
, t) otteniamo per j = 1, . . . , m − 1 il sistema di
equazioni differenziali
u
j
0
(t) =
u
j +1
(t) − 2u
j
(t) + u
j −1
(t)
h
2
x
+ G (x
j
, t)
(3)
Nel risolvere il sistema dobbiamo far attenzione alle condizioni sul
bordo
u
0
(t) = d
0
(t), u
m
(t) = d
1
(t)
e ricordare che la condizione iniziale del sistema di equazioni
differenziali `
e
Equazione del calore.
Il sistema differenziale (3) pu`
o essere riscritto matricialmente.
Posto
u(t) := [u
1
(t), . . . , u
m−1
(t)]
T
u
0
:= [f (x
1
), . . . , f (x
m−1
)]
T
g(t) :=
1
h
2
x
d
0
(t), 0, . . . , 0,
1
h
2
x
d
1
(t)
T
+[G (x
1
, t), . . . , G (x
m−1
, t)]
T
Λ =
1
h
2
x
−2
1
0
0
. . .
0
1
−2
1
0
. . .
0
0
1
−2
1
. . .
0
. . .
. . .
. . .
. . .
. . .
. . .
0
0
0
0
1
−2
(4)
Equazione del calore e metodo delle linee: Eulero esplicito
Risolvendo
u
0
(t) = Λu(t) + g(t), u(0) = u
0
in t
n
= nh
t
,
n = 0, 1, . . . con
Eulero esplicito
, per u
n+1
:= u(t
n+1
), si ha v
n+1
≈ u
n+1
ove
v
n+1
= v
n
+ h
t
(Λv
n
+ g(t
n
))
v
0
assegnato
(6)
Eulero implicito
, si ha
v
n+1
= v
n
+ h
t
(Λv
n+1
+ g(t
n+1
))
v
0
assegnato
(7)
ovvero
(I − h
t
Λ)v
n+1
= v
n
+ h
t
g(t
n+1
)
v
0
assegnato
(8)
con I − h
t
Λ
definita positiva
(e quindi non singolare) poich`
e Λ
`
Equazione del calore.
A partire da Eulero esplicito ed Eulero implicito si definiscono i
cosidetti
θ−metodi
in cui
v
n+1
= v
n
+ (1 − θ)h
t
(Λv
n
+ g(t
n
)) + θh
t
(Λv
n+1
+ g(t
n+1
))
con v
0
assegnato.
Si osservi che:
Esperimento numerico.
Esempio
Studiamo numericamente l’equazione del calore
∂u
∂t
=
∂
2u
∂x
2+ G , 0 < x < 1, t > 0
u(0, t) = d
0
(t), u(1, t) = d
1
(t), t ≥ 0
u(x , 0) = f (x ), 0 ≤ x ≤ 1
(9)
per
G (x , t) = (−0.1 + π
2
) (exp(−0.1 · t) sin(π x ))
d
0
(t) = 0, d
1
(t) = 0
f (x ) = sin(π x )
(10)
avente quale soluzione
Esperimento numerico.
0 0.2 0.4 0.6 0.8 1 0 1 2 3 4 5 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1Esperimento numerico.
Definiamo il termine noto in
g.m
f u n c t i o n g t=g ( t , x , hx , d0 , d1 , G ) % V a l u t a : % g ( t ) =(1/ hx ˆ 2 )∗( d0 ( t ) , 0 , . . . , 0 , d1 ( t ) ) +[G( x1 , t ) , . . . , G( x (m−1) , t ) ] . g t=f e v a l( G , x , t ) ; g t( 1 )=g t( 1 ) +(1/ hx ˆ 2 )∗f e v a l( d0 , t ) ; g t(l e n g t h(g t) )=g t(l e n g t h(g t) ) +(1/ hx ˆ 2 )∗f e v a l( d1 , t ) ;e implementiamo il metodo in
metodolinee.m
f u n c t i o n [ V_hist , x_in , t_in , hx , ht ]= m e t o d o l i n e e ( theta , tfin , m , f , d0 , d1 , G , sigma ) % INPUT .
% t h e t a : PARAMETRO DEL THETA METODO i n [ 0 , 1 ] . % t f i n : ISTANTE FINALE .
% m : DETERMINA I L PASSO SPAZIALE CON PASSO h x =1/m. % f : u ( x , 0 )=f ( x )
% d0 , d1 : u ( 0 , t )=d0 ( t ) , u ( 1 , t )=d1 ( t ) . % G : ( D t ) u=(Dˆ2 x ) u+G .
% s i g m a : I L PASSO TEMPORALE E ’ s i g m a∗( hx ˆ2) / 2 . % OUTPUT .
% V h i s t : SOLUZIONE ISTANTE PER ISTANTE . RIGHE I N I Z I A L I −> BASSO t . % x i n : PUNTI INTERNI NELLA VARIABILE x .
% t i n : PUNTI INTERNI NELLA VARIABILE t . % hx : PASSO SPAZIALE .
Esperimento numerico.
hx=1/m ; ht=s i g m a∗( hx ˆ2) / 2 ; % PASSI SPAZIALI E TEMPORALI . x = ( 0 : hx : 1 ) ’ ; x _ i n=x ( 2 :end− 1 , : ) ; % PUNTI INTERNI . u0=f e v a l( f , x_in ) ; % VETTORE SOLUZIONE AL TEMPO ” 0 ” . t = ( 0 : ht : t f i n ) ’ ; t _ i n=t ( 2 :end, 1 ) ; % TEMPI DA ANALIZZARE . L a m b d a=−(1/hx ˆ 2 )∗g a l l e r y(’ t r i d i a g ’, m−1) ; % Lambda= f u l l ( Lambda ) ;
i f t h e t a < 1 , g t _ p r e v=g ( 0 , x_in , hx , d0 , d1 , G ) ; end
V _ o l d=u0 ; V _ h i s t =[ V_old ’ ] ; e r r _ h i s t = [ ] ; % I N I Z I A L I Z Z A Z I O N I .
f o r i n d e x =1:l e n g t h( t_in ) % STUDIO SOLUZIONE IN TEMPI FINO A t f i n . t _ c u r r=t _ i n ( i n d e x ) ; g t _ c u r r=g ( t_curr , x_in , hx , d0 , d1 , G ) ; s w i t c h t h e t a c a s e 0% EULERO ESPLICITO . V _ n e w=V _ o l d+ht∗( Lambda∗V_old+gt_prev ) ; g t _ p r e v=g t _ c u r r ; c a s e 1% EULERO IMPLICITO . A=e y e(s i z e( Lambda ) )−ht∗Lambda ; b=V _ o l d+ht∗gt_curr ; V_new=A\b ; o t h e r w i s e% THETA METODO.
A=e y e(s i z e( Lambda ) )−(ht∗theta ) ∗Lambda ;
b=V _ o l d+ht∗(1−theta ) ∗( Lambda∗V_old+gt_prev )+ht∗theta∗gt_curr ;
V _ n e w=A\b ; g t _ p r e v=g t _ c u r r ;
end
V _ h i s t =[ V _ h i s t ; V_new ’ ] ; V _ o l d=V _ n e w ;
Esperimento numerico.
1
Il parametro m determina il passo spaziale h
x
= 1/m;
2
se theta=0 allora si utilizza il metodo di Eulero esplicito,
mentre se theta=1 Eulero implicito;
3
la variabile tfin determina l’ultimo istante possibile da
analizzare;
Esperimento numerico.
Salviamo in
demo calore.m
f u n c t i o n d e m o _ c a l o r e ( theta , s i g m a ) i f n a r g i n< 2 , sigma =1;end mV =[2 4 8 1 6 ] ; t f i n =5; % SETTINGS . % ESEMPIO . G=@ ( x , t ) (−0.1+p iˆ 2 )∗(e x p( ( − 0 . 1 )∗t ) . ∗s i n(p i∗x ) ) ; d0=@ ( t ) z e r o s(s i z e( t ) ) ; d1=@ ( t ) e x p( ( − 0 . 1 )∗t ) . ∗s i n(p i) ; f=@ ( x ) s i n(p i∗x ) ; s o l u t i o n=@ ( x , t ) e x p( ( − 0 . 1 )∗t ) . ∗s i n(p i∗x ) ; e r r _ h i s t = [ ] ; f o r k =1:l e n g t h( mV )m=mV ( k ) ; % ANALISI SUDD . m PUNTI SPAZIALI .
[ V_hist , x_mid , t_mid , hx , ht ]= m e t o d o l i n e e ( theta , tfin , m , f , d0 , d1 , G , sigma ) ; U=f e v a l( solution , x_mid , t_mid (end) ) ;
err=norm( U’− V_hist (end, : ) , inf ) ; % ERRORE METODO. e r r _ h i s t =[ e r r _ h i s t ; err ] ;
f p r i n t f(’ \n \ t [m ] : %3.0 f [ ERROR ] : %2.2 e [ hx ] : %2.2 e [ h t ] : %2.2 e ’, . . . m , err , hx , ht ) ;
Esperimento numerico: Eulero esplicito.
Per motivi di stabilit`
a tipici di Eulero esplicito, necessita che h
t≤ h
x2/2.
Vediamo su vari esempi cosa succede numericamente. Dopo aver settato in
demo calore il parametro theta=0, proprio di Eulero Esplicito, scegliamo per
esempio
sigma=1.5
. Quindi dalla shell digitiamo quanto segue:
>> d e m o _ c a l o r e ( 0 , 1 . 5 )
[ THETA ] : 0 . 0 0 0 [ TFIN ] : 5 . 0 0 0 [ SIGMA ] : 1 . 5 e+00
[ m ] : 2 [ ERROR ] : 1 . 4 5 e−01 [ hx ] : 5 . 0 0 e−01 [ ht ] : 1 . 8 8 e−01 [ m ] : 4 [ ERROR ] : 1 . 4 0 e+04 [ hx ] : 2 . 5 0 e−01 [ ht ] : 4 . 6 9 e−02 [ m ] : 8 [ ERROR ] : 7 . 3 2 e+100 [ hx ] : 1 . 2 5 e−01 [ ht ] : 1 . 1 7 e−02 [ m ] : 16 [ ERROR ] : NaN [ hx ] : 6 . 2 5 e−02 [ ht ] : 2 . 9 3 e−03 >>
Segliamo un parametro sigma pi`
u piccolo,
sigma=1.1
.
>> d e m o _ c a l o r e ( 0 , 1 . 1 )
[ THETA ] : 0 . 0 0 0 [ TFIN ] : 5 . 0 0 0 [ SIGMA ] : 1 . 1 e+00
Esperimento numerico: Eulero esplicito.
Il metodo non fornisce evidentemente risultati apprezzabili.
Scegliamo ora
sigma=1.0
: il metodo di Eulero esplicito finalmente
converge.
>> d e m o _ c a l o r e ( 0 , 1 )
[ THETA ] : 0 . 0 0 0 [ TFIN ] : 5 . 0 0 0 [ SIGMA ] : 1 . 0 e+00
[ m ] : 2 [ ERROR ] : 1 . 4 3 e−01 [ hx ] : 5 . 0 0 e−01 [ ht ] : 1 . 2 5 e−01 [ m ] : 4 [ ERROR ] : 3 . 2 5 e−02 [ hx ] : 2 . 5 0 e−01 [ ht ] : 3 . 1 2 e−02 [ m ] : 8 [ ERROR ] : 7 . 9 3 e−03 [ hx ] : 1 . 2 5 e−01 [ ht ] : 7 . 8 1 e−03 [ m ] : 16 [ ERROR ] : 1 . 9 7 e−03 [ hx ] : 6 . 2 5 e−02 [ ht ] : 1 . 9 5 e−03 >>
Esperimento numerico: Eulero implicito.
Analizziamo ora il comportamento di Eulero implicito (cio`
e theta=1).
Tale metodo richiede la risoluzione di sistemi lineari tridiagonali, ma ci`
o non `
e
un problema dal punto di vista computazionale (per ogni t
iil costo e’ O(m)).
Proviamo il comportamento per
sigma=1.5
,
>> d e m o _ c a l o r e ( 1 , 1 . 5 )
[ THETA ] : 1 . 0 0 0 [ TFIN ] : 5 . 0 0 0 [ SIGMA ] : 1 . 5 e+00
[ m ] : 2 [ ERROR ] : 1 . 4 5 e−01 [ hx ] : 5 . 0 0 e−01 [ ht ] : 1 . 8 8 e−01 [ m ] : 4 [ ERROR ] : 3 . 2 6 e−02 [ hx ] : 2 . 5 0 e−01 [ ht ] : 4 . 6 9 e−02 [ m ] : 8 [ ERROR ] : 7 . 9 5 e−03 [ hx ] : 1 . 2 5 e−01 [ ht ] : 1 . 1 7 e−02 [ m ] : 16 [ ERROR ] : 1 . 9 7 e−03 [ hx ] : 6 . 2 5 e−02 [ ht ] : 2 . 9 3 e−03 >>
Per curiosit`
a proviamo per
sigma=10
,
>> d e m o _ c a l o r e ( 1 , 1 0 )
[ THETA ] : 1 . 0 0 0 [ TFIN ] : 5 . 0 0 0 [ SIGMA ] : 1 . 0 e+01