Sunteți pe pagina 1din 6

© Carmen-Sanda Georgescu, Tudor Petrovici, Radu Popa

Metode numerice. Fisa nr. 12:


INTEGRAREA NUMERICA A ECUATIILOR DIFERENTIALE ORDINARE
CU CONDITII LA LIMITA (Probleme Sturm-Liouville sau bilocale)

7 . 4 . INTEGRAREA NUMERICA A ECUATIILOR DIFERENTIALE ORDINARE DE


ORDINUL II, CU CONDITII LA LIMITA
Ecuatia diferentiala de ordinul doi, definita pe intervalul x∈[a, b]
d ⎡ dy ⎤
⎢ p ( x) ⎥ + [q ( x) + λr ( x)]y = 0
dx ⎣ dx ⎦ (12.1)

⎧a1 y (a) + a2 y ' (a) = α1


cu conditiile la limita ⎨ (12.2)
⎩b1 y (b) + b2 y ' (b) = α 2
unde p(x)>0,r(x)>0,q(x) functie de pondere, a1, a2, b1, b2, α1, α2 constante date si λ parametru real
formeaza o problema Sturm-Liouville. Problemele Sturm-Liouville se intalnesc in multe aplicatii cum sunt
spre exemplu functiile Bessel sau functiile Legendre .
Sistemul diferential (12.1) si (12.2) se mai numeste si problema bilocala.

7 . 4 . 1 . METODA TIRULUI
METODA TIRULUI reduce problema bilocala (12.1) si (12.2) la o problema Cauchy, rezolvabila cu una din
metodele prezentate in Fisa_10 sau Fisa_11.
Pas1: Se aleg doua valori y0 si y’0 care verifica prima din conditiile la limita (12.2) si se rezolva problema
Cauchy formata din ecuatia diferentiala (12.1) cu conditiile initiale y(a)= y0, y’(a)= y’0
Pas2: Cu solutia aproximativa obtinuta verificam egalitatea a doua din conditiile la limita (12.2)
Daca egalitatea este verificata cu o aproximatie convenabila , se opreste algoritmul si solutia gasita este
solutia cautata, daca nu se continua algoritmul cu pasii 1 si 2 pana cand egalitatea este verificata cu o
aproximatie convenabil aleasa.
Exemplul 1. Sa se afle solutia aproximativa pe intervalul x∈[0,1], a problemei bilocale neliniare
y'' = 0.5*y-2*(y’)^2/y
y(0) = 1 , y(1) = 1.2
Rezolvare:
Pas1: Se transforma ecuatia diferentiala de ordinul doi intr-un sistem de doua ecuatii diferentiale de
ordinul unu. Se notam cu z=y’ sistemul normal asociat ecuatiei diferentiale de ordinul doi (Problema
Cauchy) se scrie sub forma
y’=z , y(0)=1.25
z’=0.5*y-2*z^2/y, z(0)=se alege conform Pas1 din algoritmul prezentat mai sus
Pas2: Se rezolva problema Cauchy pe intervalul [0,4], folosind functia Octave lsode
octave#1>function zdot=ftir(y,x)
octave#2> zdot(1)=y(2); zdot(2)= 0.5*y(1)-(2*y(2).^2)./y(1); endfunction
octave#3>x=0:0.1:1 ; # Se alege y(0)=1 si y’(0)=0 si se obtine
octave#4> [Y,istate,msg]=lsode("ftir",[1; 0],x) # se obtine y(1)= 1.227283506205422
octave#5># Daca se alege y(0)=1 si y’(0)=-0.05
octave#6>[Y,istate,msg]=lsode("ftir",[1; -0.05],x) # se obtine y(1)= 1.18360810910837
Ce valoare trebuie sa luam pentru y’(0) la urmatoarea incercare ?

7 . 4 . 2 . METODA DIFERENTELOR FINITE CENTRATE


Fie ecuatia diferentiala de ordinul doi (12.1) adusa la forma
d2 y
+ P(x ) + Q(x ) y = R(x )
dy
(12.3)
2
dx dx
cu conditiile la limita (12.2)
Se cere sa afle solutia aproximativa a problemei bilocale pentru x ∈ [a, b]
Se discretizeaza intervalul [a=x0 ;b= xn] într-un număr de intervale egale, distanţate cu pasul
h = ( x n − x0 ) n , cele (n+1) valori discrete fiind x k = x 0 + k h , cu k = 0, n .
Daca pentru derivatele y’(x) si y’’(x) facem aproximarile obtinute prin diferente finite centrate:
y ( x k +1 ) − y ( x k −1 ) y ( x k +1 ) − 2 y ( x k ) + y ( x k −1 )
y' ( xk ) = , y" ( x k ) = , cu y ( xi ) = y i (12.4)
2h h2
ecuatia (12.3) construita cu diferenţe finite centrate se scrie :
y k −1 − 2 y k + y k +1 y − y k −1
2
+ P( x k ) k +1 + Q( x k ) y k = R( x k ) , cu k = 1, n − 1 ,yk=y(xk) (12.5)
h 2h
Ecuatiile in diferente finite (12.5) se scriu sub forma:
[ ]
y k −1 [2 − h P ( x k )] + y k − 4 + 2 h 2 Q ( x k ) + y k +1 [2 + h P ( x k )] = 2 h 2 R ( x k ) , k = 1, n − 1 (12.6)
In transcriere matricila, sistemul liniar cu necunoscutele y1, y2, …, yn-1 (12.6) se scrie sub forma A*y=f
unde A este o matrice tribanda de forma
⎛ 2 − hP( x2 ) − 4 + 2h 2 Q ( x 2 ) 2 + hP( x2 ) 0 ... 0

⎜0 2 − hP( x3 ) − 4 + 2h 2 Q( x3 ) 2 + hP( x3 ) 0 ... 0
A=⎜
⎜ ........................
⎜0 2 − hP( xn −1 ) − 4 + 2h 2 Q( xn −1 )
⎝ 0 0 ....

si y=[ y1, y2, …, yn-1]T, f=[2h2R(x1)-y0(2-hP(x1), 2h2R(x2), . . . , 2h2R(xn-2), 2h2R(xn-1)-yn(2+hP(xn-1)]T


Ecuatiile diferenţiale ordinare neliniare se construiesc, in mod asemanator, cu diferente finite centrate si se
rezolva pentru nodurile interioare domeniului de calcul ( k = 1, n − 1 ).
Exemplul 2. Sa se afle solutia aproximativa a problemei bilocale prin metoda diferentelor finite pe
intervalul x∈[0,1] cu pas h=0.2
(1+x2)y’’-xy’-3y=6x-3 cu conditiile la limita y(0)=3, y(1)=2
Rezolvare : Pentru P(x)=-x/(1+x2), Q(x)=-3/(1+x2), R(x)=(6x-3)/( 1+x2) sistemul (12.6) se scrie sub
forma
[ ] [ ] [
y k −1 2 − 0.2 * (-x k ) /(1 + x k2 ) + y k − 4 + 2 * 0.2 2 * (-3) /(1 + x k2 ) + y k +1 2 + 0.2 * (-x k ) /(1 + x k2 ) ]
= 2 * 0.2 * (6 * x k − 3) /(1 + x ), k = 1,2,3,4
2 2
k
(12.7)
Daca se considera tabelul care contine diviziunea intervalului [0 ;1] de pas h=0.2si cunoscandu-se valorile
la limita y0=y(x0)=3 si y5=y(x5)=2, se cer valorile intermediare y1, y2, y3, y4
xk x0=0.00000 x1=0.20000 x2=0.40000 x3=0.60000 x4=0.80000 x5=1.00000
yk y0=y(x0)=3 y1=? y2=? y3=? y4=? y5=y(x5)=2

Din (12.7) se obtine sistemul A*Y=B unde


A =[ 2.1154 -0.98077 0.00000 0.00000; -1.0345 2.1034 -0.96552 0.00000
0.00000 -1.0441 2.0882 -0.95588; 0.00000 0.00000 -1.0488 2.0732]
B=[3.126923 0.020690 -0.017647 1.858537]T, Y=[ y1 y2 y3 y4]T
octave:33> A\B # solutia este
Solutie : y1=2.4351 y2=2.0639 y3=1.8660 y4=1.8404
Observatie : Metoda diferentelor finite se poate aplica si daca problema bilocala este complet aca cea din
(12.2)
Exemplul 3. Sa se afle solutia aproximativa a problemei bilocale prin metoda diferentelor finite pe
intervalul x∈[0,1] cu pas h=0.2
(1+x2)y’’-xy’-3y=6x-3 cu conditiile la limita y(0)-y’(1)=3, y(1)=2
Rezolvare : Se aplica metoda diferentelor finite pentru pasul h=0.2. Necunoscutele sunt y1, y2, y3, y4
obtinute pentru xn=0.2*n, n=1,2,3,4.contine diviziunea intervalului [0 ;1] de pas h=0.2si cunoscandu-se
valorile la limita y0=y(x0)=3 si y5=y(x5)=2, se cer valorile intermediare y1, y2, y3, y4 dar si y0
Conform relatiei (12.5) , prima conditie la limita y(0)-y’(1)=3 se scrie sub forma
y1 − y −1
y −1 − =1 (12.8)
0.4
Daca facem in ecuatia (1+x2)y’’-xy’-3y=6x-3 , x=0 se obtine y’’-3y=-3 si conform (12.5) aceasta relatie se
y1 − 2 y 0 + y −1
scrie sub forma − 3 y 0 = −3 (12.9)
0.04
Se elimina y-1 dintre (12.9) si (12.10) si se obtine prima ecuatie a sistemului
-2.52*y0 +2*y1=-0.52. In continuare pentru n=1,2,3,4 din (12.8) se obtin urmatoarele 4 ecuatii ale
sistemului. In final pentru necunoscutele y0, y1, y2, y3, y4 se obtine sistemul A*Y=B unde
A=[-2.52 2 0 0 0 ;1.06 -2.20 1.02 0 0 ;0 1.2 -2.44 1.12 0 ;0 0 1.42 -2.84 1.2 ; 0 0 0 1.72 -3.4],
B=[-0.52 -0.072 -0.024 0.024 -3.048]T, Y=[ y0 y1 y2 y3 y4]T. Din rezolvarea sistemului (spre exemplu
prin metoda Gauss) se obtine solutia : y0=1.0132, y1=1.0167, y2=1.0693, y3=1.2188, y4=1.513
Observatie : Pentru imbunatatirea solutiei aproximative obtinute se reia algoritmul prezentat pentru un
pas mai fin pe intervalul [0 ;1], spre exemplu h=0.1

7 . 4 . 3 . METODA CU FUNTII SPLINE


2
⎧a1 y (a ) + a 2 y ' (a ) = α 1
+ P(x ) + Q(x ) y = R(x ) , ⎨
d y dy
Fie problema bilocala pentru x∈[a,b]
⎩b1 y (b) + b2 y ' (b) = α 2
2
dx dx
(12.10)
Consideram o diviziune oarecare pentru intervalul [a;b], ∆ : a < x0 < x1 < ... < x n < x n +1 = b
Se cauta pentru problema bilocala (12.10) o solutie de forma

K3 1 n ⎧( x − x k ) 3 , x ≥ x k
y ( x) = K1 + K 2 ( x − x0 ) + ( x − x0 ) 2 + ∑ K k + 4 ( x − x k ) 3 * , unde ( x − x k ) 3 * = ⎨
2 6 k =0 ⎩0 , x < xk

(12.11)
Punand conditia ca y(x) sa verifice ecuatia diferentiala de ordinul doi si cele doua contitii la limiata se
obtine un sistem liniar de n+4 ecuatii cu n+4 necunoscte de tip A*Y=B (12.12)
unde A are primele n+2 linii coeficientii necunoscutelor Kk cu k=3, . . . ,n+2 din ecuatiile
n n
[ K 3 + ∑ K k + 4 ( x − x k ) * ] + P ( x )[ K 2 + K 3 ( x − x 0 ) + 0.5∑ K k + 4 ( x − x k ) 2 * ]
k =0 k =0
n (12.13)
K 1
+ Q ( x )[ K 1 + K 2 ( x − x 0 ) + 3 ( x − x 0 ) 2 + ∑ K k + 4 ( x − x k ) 3 * ] = R ( x )
2 6 k =0
(obtinute punand conditia ca y(x) sa verifice ecuatia diferentiala) (12.13) in care facem pe rand pe x=xi cu
i=0,1, . . . ,n+1 si ultimele doua ecuatii obtinute din conditia ca y(x) sa verifice conditiile bilocale
a1 K 1 + a 2 K 2 = α 1
K3 1 n
b1 [ K 1 + K 2 (b − x 0 ) + (b − x0 ) 2 + ∑ K k + 4 (b − x k ) 3 * ] (12.14)
2 6 k =0
1 n
+ b2 [ K 2 + K 3 (b − x0 ) + ∑
2 k =0
K k + 4 (b − x k ) 2 * ] = α 2

y=[K1 K2 … Kn+4]T si B=[ α1 R(x0) . . . R(xn+1) α 2 ]. Se obtine astfel o solutie teoretica aproximativa
care satisface problema bilocala.
Exemplul 4. Sa se afle solutia aproximativa a problemei bilocale prin metoda functiilor spline pe intervalul
x∈[0,1] cu pas h=0.5.
y’’=x cu conditiile la limita y(0)+y’(0)=1, y(1)+y’(1)=2
Rezolvare : Se cauta o solutie de forma (12.11). In ipoteza ca y(x) este de doua ori derivabila, punand
conditia ca y(x) sa verifice ecuatia y’’=x si conditiile bilocale y(0)+y’(0)=1, y(1)+y’(1)=2 si folosind tabelul
xk x0=0 x1=0.5 x2=1
yk y 0= ? y 1= ? y 2= ?
sistemul atasat problemei bilocale se scrie sub forma (se tine cont ca P(x)=0,Q(x)=0 si R(x)=x )
( K 3 + K 4 ( x − x0 ) * + K 5 ( x − x1 ) * = x
K1 + K 2 = 1

{ K1 + K 2 (1 − x0 ) + K 3 (1 − x0 ) 2 + 1 [ K 4 (1 − x0 ) 3* + K 5 (1 − x1 ) 3* ] } + (12.15)
6
{ K 2 + K 3 (1 − x0 ) + 1 [ K 4 (1 − x0 ) 2 * + K 5 (1 − x1 ) 2 * ] } = 2
2
Daca in sistemul (12.15) se face x=xi, i=0,1,2 se obtine sistemul de 5 ecuatii cu 5 necunoscute A*Y=B
Unde A=[0 0 1 0 0 ;0 0 1 0.5 0 ;0 0 1 1 0.5 ;1 1 0 0 0 ;1 2 2 2/3 2/3], Y=[ K1 K2 K3 K4 K5]T ,
B=[0 0.5 1 1 2]T. Din rezolvarea sistemului (spre exemplu prin metoda Gauss) se obtin
K1= 0.66667, K2=0.33333, K3= 0.00000, K4=1.00000, K5=0.00000 si solutia se scrie sub forma
y(x)= 0.66667+0.33333*x+(1/6)*x3

7 . 5 . INTEGRAREA NUMERICA A ECUATIILOR DIFERENTIALE ORDINARE DE ORDIN


MA MARE DECAT II, CU CONDITII LA LIMITA

7 . 5 . 1 . METODA DIFERENTELOR FINTE CENTRATE


Daca pentru derivatele y’’’(x) ,y(4)(x), . . . facem aproximarile obtinute prin diferente finite centrate:
y ( x k + 2 ) − 2 y ( x k +1 ) + 2 y ( x k −1 ) − y ( x k − 2 )
y' ' ' ( xk ) = ,
2h 3
(12.14)
y ( x k + 2 ) − 4 y ( x k +1 ) + 6 y ( x k ) − 4 y ( x k −1 ) + y ( x k − 2 )
y ( 4) ( xk ) = , ..., cu y ( xi ) = y i
h4
atunci metoda diferentelor finite centrate poate fi aplicata pentru o ecuatie diferentiala cu conditii la limita
de orice ordin n , numar natural (pentru aproximarea derivatelor y’ si y’’ se folosesc formulele (12.4) )
Exemplul 5. Sa se afle solutia aproximativa a problemei bilocale prin metoda diferentelor finite centrate pe
intervalul x∈[0,1] cu pas h=1/4.
y(4)+6*y=100 cu conditiile la limita y(0)=y’(0)=0, y(1)=y’(1)=0
Rezolvare : Folosind formulele (12.14) si tabelul

xk x0=0 x1=1/4 x2=1/2 x3=3/4 x4=1


yk y 0= 0 y 1= ? y 2= ? y 3= ? y4=0

ecuatia data se scrie in diferente centrate sub forma


y ( x k + 2 ) − 4 y ( x k +1 ) + 6 y ( x k ) − 4 y ( x k −1 ) + y ( x k −2 )
+ y ( x k ) = 100, k = 1,2,3 (12.15)
h4
cu conditiile la limita : y(x0)= 0, y(x-1)= y(x1), y(x4)= 0, y(x5)=- y(x3) (12.16)
Daca notam y(xk)=yk, atunci pentru k=1,2,3 sistemul (12.15) impreuna cu conditiile la limita (12.16) se
scrie
1 100
[6(1 + ) + 1] y1 − 4 y2 + y3 =
44 44
1 100
− 4 y1 + 6(1 + 4 ) y 2 − 4 y 3 = 4 (12.17)
4 4
1 100
y1 − 4 y2 + [6(1 + 4 ) − 1] y 3 = 4
4 4
Se obtini solutiile : y1=0.34438, y2=0.63592, y3=0.51557.
APLICATII

Problema 1. Program Octave pentru rezolvarea problemei bilocale


y ‘’ = p(x)y`(x)+q(x)y(x)+r(x), y(a) = alpha, y(b) = beta
⇒ Algoritm:
1. Informatia initiala : Citeste functiile p,q,r; citeste extremitatile intervalului de integrare a si b ; citeste
conditiile bilocale alpha ,beta si numarul n de subintervale de integrare
2. Initializeaza vectorul X; vectorul solutie Y si vectorii Va (supradiagonal), Vd (subdiagonal), Vc
(diagonal) , Vb (termeni liberi);defineste pasul de integrare h←(b - a)/n
3. Pentru j=1:n-1, calculeaza vectorul nodurilor de integrare Vx(j) ← a + h*j , vectorul termeni liberi Vb(j)
← -h^2*feval("r",Vx(j)) si apoi completeaza Vb(j) cu conditiile bilocale (la capete)
4. Pentru j=1:n-1, calculeaza vectorul diagonal: Vd(j) ← 2 + h^2*feval("q",Vx(j))
5. Pentru j=1:n-2, calculeaza vectorii subdiagonal si supradiagonal:
Va(j) ← -1 - h/2*feval("p",Vx(j+1)) , Vc(j) = -1 + h/2*feval("p",Vx(j));
6. Rezolva sistemul tridiagonal A*Y=B si afiseaza vectorul nodurilor X si vectorul solutie Y, calculate in
fiecare element al lui X

octave#1> function [X,Y] = edobilocal(p,q,r,a,b,alpha,beta,n)


X = zeros(1,n+1);Y = zeros(1,n-1);Va = zeros(1,n-2);Vb = zeros(1,n-1);Vc = zeros(1,n-2);
Vd = zeros(1,n-1); h = (b - a)/n;
# Se calculeaza matricea tridiagonala si vectorul termini liberi
for j=1:n-1,
Vx(j) = a + h*j;
endfor
for j=1:n-1,
Vb(j) = -h^2*feval("r",Vx(j));
endfor
Vb(1) = Vb(1) + (1 + h/2*feval("p",Vx(1)))*alpha;
Vb(n-1) = Vb(n-1) + (1 - h/2*feval("p",Vx(n-1)))*beta;
for j=1:n-1,
Vd(j) = 2 + h^2*feval("q",Vx(j));
endfor
for j=1:n-2,
Va(j) = -1 - h/2*feval("p",Vx(j+1));
endfor
for j=1:n-2,
Vc(j) = -1 + h/2*feval("p",Vx(j));
endfor
# Se rezolva sistemul tridiagonal
n = length(Vb);
for k = 2:n,
m = Va(k-1)/Vd(k-1);
Vd(k) = Vd(k) - m*Vc(k-1);
Vb(k) = Vb(k) - m*Vb(k-1);
endfor
Y(n) = Vb(n)/Vd(n);
for k = (n-1):-1:1,
Y(k) = (Vb(k) - Vc(k)*Y(k+1))/Vd(k);
endfor
X = [a,Vx,b];
Y= [alpha,Y,beta];
endfunction

Problema 2. Să se determine solutia problemei bilocale de mai jos pe intervalul x∈ [0 ;1], cu metoda
diferentelor finite centrate, considerand pasul h = 0,2 :

⎧ y ′′ + 4 y ′ − 2 xy = 0

⎨ y (0) = 0 .
⎪ y (1) = 1

Comparati solutia obtinuta cu solutia numerica obtinuta folosind in mediul de programare Octave functia
odebilocal pentru p(x)=-4, q(x)=2*x, r(x)=0, a=0, b=1, n=4,alpha=0, beta=1
Problema 3. Să se determine solutia problemei bilocale de mai jos pe intervalul x∈ [0 ;3], cu metoda
diferentelor finite centrate, considerand pasul h = 0,75 :

⎧ y ′′ − y = 1

⎨ y (0 ) = −1 .
⎪ y (3) = −1

Comparati solutia obtinuta cu solutia numerica obtinuta folosind in mediul de programare Octave functia
odebilocal pentru p(x)=0, q(x)=1, r(x)=1, a=0, b=3, n=3,alpha=-1, beta=-1
Problema 4. Fie ecuatia diferentiala unidimensionala a radiatiei (ecuatie neliniara) pe intervalul x∈
[0 ;1] :
⎧ y ′′ − e y = 0
⎪ y k −1 − 2 y k + y k +1
⎨ y (0) = 0 , a carei forma in diferente finite centrate este : 2
− e yk = 0 .
⎪ y (1) = 0 h

Se cere sa se determine solutia aproximativa considerand 3 intervale egale pe domeniul x∈ [0, 1]. Sistemul
de ecuatii neliniare rezultat se va rezolva iterativ cu metoda Newton-Raphson, pornind de la aproximatia

initiala y1(0) = y 2(0) = 0 .


Sa se compare solutia obtinuta cu solutia numerica obtinuta prin metoda tirului (pentru problemele Cauchy
obtinute folositi functia Octave lsode )
Problema 5. Fie ecuatia y’’=-2*y*y’ cu conditia bilocala y(0)+y’(0)=0, y(1)=0.5. Consideram diviziunea
pentru x∈[0;1] de pas h=0.2 sa se scrie sistemul neliniar in yk, k=0,1,2,3,4,5 atasat problemei bilocale
folosind metoda diferentelor finite centrate.
Indicatie: Pentru derivatele y’(x) si y’’(x) se folosesc aproximarile (12.4). Sistemul atasat se scrie
y k −1 − 2 y k + y k +1 y ( x k +1 ) − y ( x k −1 )
+ 2 y( xk ) = 0, k = 0,1,2,3,4,5 cu conditiile la limita
0.04 0.4
y5=0.5 iar pentru prima ecuatie a sistemului se elimina y-1 din relatiile
y −1 − 2 y1 + y 2 y − y −1
+ 2 y0 1 =0
0.04 0 .4
y − y −1
y0 + 1 =0
0 .4
Problema 6. Sa se rezolve problema bilocala de ordin trei, pentru x∈ [0, 1], prin metoda diferentelor
finite centrate si considerand o diviziune a intervalului x∈[0;1] de pas h=0.25
y’’’=4(y+x) cu conditiile la limita y(0)=1, y(1)=2

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