Sunteți pe pagina 1din 6

Cursul 10

Rezolvarea ecuaţiei căldurii prin metoda diferenţelor finite

Ecuaţia următoare
∂ u ∂2u 
−a 2  x , t  = f  x ,t  (1)
∂t ∂  x2
descrie propagarea căldurii într-un mediu unidimensional. Domeniul pe care se
caută de obicei solutia este
D ={( x , t ) ∈R 2 ;0 < x < l ;0 < t <∞} (2)
Pentru a avea soluţie unică următoarele condiţii suplimentare se impun:
u( x ,0) = u0 ( x ) (3)
u( 0, t ) = ϕ1 ( t ) (4)
u( l , t ) = ϕ2 ( t ) (5)
Condiţia (3) se numeste condiţie iniţiala, condiţiile (4) şi (5) se numesc condiţii
la limită. Există formule care dau soluţia ecuaţiei (1) în domeniul (2) şi care
satisfac condiţiile (3)-(5), sub formă de serii, care sunt însă slab convergente.
Rezolvarea numerică constă în divizarea domeniului într-o reţea cu pasul h după
x şi cu pasul q după t, ca în figură:
t

tj

O xi l x

Avem xi=h*i şi tj=q*j . Valoarea funcţiei u(xi,tj) se aproximează prin uij .


Derivata a doua în raport cu x în (xi,tj) se aproximează standard prin valorile
functiei u în cele trei puncte orizontale marcate pe desen, iar derivata după t se
aproximează folosind cele doua puncte verticale marcate. Cum u(xi,tj) nu se
cunoaşte, se folosesc simbolurile uij în locul lor. Ecuaţia diferenţiala pentru
u(x,t) în (xi,tj) e aproximată printr-o ecuaţie algebrică în uij.
uij − uij −1 2 uij−1 − 2uij + uij+1
− a ( xi , t j ) = f ( xi , t j ) (6)
q h2

Sistemul se scrie:

 A u j + B u j + C u j = D i = 1,2,...n − 1
 i i− 1 i i i i+ 1 i
 j
 u0 = ϕ 1 ( j q)
 j (7)
 un = ϕ 2 ( j q)

unde:
Ai = a 2 ( xi , t j )r , Bi = −2a 2 ( xi , t j )r − 1 Ci = a 2 ( xi , t j )r
Di = −ui j −1 − q f ( xi , t j ) (8)
q
si unde r =
h2
Fie n=l/h numărul de noduri pe orizontal. Din condiţiile (3)-(5) cunoaştem
ui0 = u0 ( x i )
u0j =ϕ1 (t j ) (9)
unj =ϕ2 ( t j )

Rezolvarea sistemului

0) Cazul j=0. ui0, pentru i=0,1,2,..n se cunosc din (9)


1) Cazul j=1. Ecuaţiile (7) pentru j=1 şi i=1,2,..n-1 formează un sistem
tridiagonal pentru necunoscutele ui1. Coeficienţii Ai, Bi, Ci, Di se pot calcula
cunoscând ui0, f, q, h, iar u0j şi unj se cunosc din (9). Se rezolvă acest sistem şi se
obţin valorile ui1.
2) Cazul j=2. Deoarece cunoaştem valorile ui1 de la cazul j=1 putem determina
coeficienţii ecuaţiilor (7) pentru j=2 şi obţinem un sistem tridiagonal pentru ui2
care se rezolvă.
3) Mai departe este clar: de îndată ce ştim pe uik, i=1,2,..n-1, putem determina
coeficienţii ecuaţiilor (7) pentru j=k+1 şi deci aflam valorile uik+1 prin rezolvarea
sitemului tridiagonal obtinut. Din aproape în aproape se pot determina valorile
uij pentru orice i şi j.

Convergenţa

Urmatoarea teoremă ne asigură ca uij sunt aproximaţii bune pentru u(xi,tj), cel
putin pentru h şi q mici:
Teorema În condiţiile de mai sus avem:

j
m |ui |≤ m a m |ϕx1(at)| ma, x|ϕ 1(tx)| {ma, |u0(t)x|+ Tam x(| ,txf )|}a x
0≤ xi ≤ l 0 t ≤≤ T 0 t ≤≤ T 0 ≤≤ lx 0 ≤≤ lx
0≤ t j ≤ T 0 t≤≤ T
|| u( xi , t j ) −uij |→0 cand h →0 q →0 (14)
Inegalitatea ne asigură că uij nu cresc necontrolat, iar (14) ne asigură că uij sunt
bune aproximaţii pentru u(xi,tj), când h şi q sunt mici.

Exemplu:
Să se determine soluţia ecuaţiei căldurii:
∂ ∂2
 u( x , t ) = 2 u( x , t ) , 0 < x < 1, 0 < t < 0.025
 ∂t ∂x

 u( x , o ) = sin(π ⋅ x ) , 0 ≤ x ≤ 1
 u(0, t ) = u(1, t ) = 0 , 0 < t ≤ 0.025



Rezolvare în Scilab

function f=f(x)
f=sin((%pi)*x);
endfunction
function FI=fi(t)
FI=0;
endfunction
function PSI=psi(t)
PSI=0;
endfunction
function u=Caldura(L,T,h)
//pasul pe ot
k=h*h/6;
n=L/h;
m=T/k;
//valorile pe ox
for i=1:n+1 do
x(i)=(i-1)*h;
end
//valorile pe ot
for j=1:m+1 do
t(j)=(j-1)*k;
end
//valorile lui u la momentul initial, t=0
for i=1:n+1 do
u(i,1)=f(x(i));
end
//valorile lui u pentru limita din stanga, x=0 si pentru limita din
//dreapta, x=l=1
for j=1:m+1 do
u(1,j)=fi(t(j));
u(n+1,j)=psi(t(j));
end
//valorile lui u pentru punctele interioare domeniului
for j=1:m do
for i=2:n do
u(i,j+1)=1/6*(u(i-1,j)+4*u(i,j)+u(i+1,j));
end
end
endfunction

Caldura(1,0.025,0.1)

∂u ∂2 u
Exercitiu: Găsiti soluţia ecuaţiei căldurii = a2 ( 0 < x < l ; t > 0) ce satisface
∂t ∂x 2

 l
x p e n 0t r< ux ≤
 2
condiţiile la limită nule şi condiţia initială este data de: u(0, x) =  .
 l − x p e n lt r< ux < l
 2
Problema mixtă pentru ecuaţia coardei vibrante finite

 ∂ 2u 2 ∂ 2u
 2 = a 2 , x ∈ [0,1], t > 0
 ∂t ∂x
 u( t ,0) = u( t , l ) = 0

 u(0, x ) = f ( x )
 ∂ u( x ,0)
 = g( x )
 ∂t
∞ 
 ak πt   ak πt   kπx 
are soluţia: u( t , x ) = ∑  Ak cos  l 
 + Bk sin   sin 
 l   l 
 unde:
k =0 

1 1
2  kπx  2  kπx 
Ak =
l ∫ f ( x ) sin 
 l 
dx şi Bk =
πak ∫ g( x ) sin  l 
dx .
0 0

Exemplu 1: Dacă în problema mixtă de mai sus considerăm


f ( x ) = sin( πx ), g ( x ) = sin( 2πx ) atunci se obţine soluţia
1
u( t , x ) = sin( π ⋅ x ) cos( π ⋅ t ) + sin( 2π ⋅ x ) cos( 2π ⋅ t ) .

Exemplu 2:În problema mixtă de mai sus considerăm a =1, l = 1, f(x) = (x-
3)/10, g(x) = 0 şi se cere soluţia pentru x=0.5 şi t=1.
Solutia în Scilab:
function y=f(x)
y=(x-3)./10;
endfunction
function y=g(x)
y=0;
endfunction
function y=CV(a,l,n,t,x)
u=0;
for k=1:n do
A(k)=2/l*integrate('f(x)*sin((k*%pi*x)/l)','x',0,1);
B(k)=2/(%pi*a*k)*integrate('g(x)*sin((k*%pi*x)/l)','x',0,1);
u=u+(A(k)*cos(k*%pi*a*t/l)+B(k)*sin(k*%pi*a*t/l))*sin(k*
%pi*x/l)
end
y=u;
endfunction
CV(1,1,10,1,0.5)
ans = 0.2657635

Exerciţiu: În problema mixtă de mai sus considerăm a =1, l = 3, g(x) = 0 şi

− x
 2 0 s i x ∈ [ 0,2]
f ( x) =  Se cere solutia pentru 0≤x≤1, 0≤t≤2 si graficul
 x − 3 s i x ∈ ( 2,3]
 1 0

S-ar putea să vă placă și