Sunteți pe pagina 1din 10

 Sanda-Carmen Georgescu, Tudor Petrovici, Radu Popa

Metode numerice. Fişa de laborator nr. 3:


CRITERIUL DE APROXIMARE PRIN INTERPOLARE (polinoame
de interpolare Newton, polinomul Newton generalizat). CRITERIUL
DE APROXIMARE DUPĂ REST (serii de funcţii)

2.1. CRITERIUL DE APROXIMARE PRIN INTERPOLARE

2.1.4. POLINOAME DE INTERPOLARE NEWTON

Aceste polinoame se construiesc cu ajutorul diferenţelor finite. Polinoamele de interpolare bazate pe


diferenţe finite sunt aplicabile pentru funcţii reprezentate prin tabele de valori echidistanţate după x, adică
tabele cu pas h constant, unde h este distanţa dintre două puncte succesive:
h  xk 1  xk  . (3.1)
Pentru o tabelă cu n  1 perechi de valori, pasul h se defineşte prin relaţia:
h  xn  x0  n (3.2)
 Cu ajutorul diferenţelor finite la dreapta , se defineşte polinomul Newton cu diferenţe finite la
1

dreapta, de grad mai mic sau egal cu n, pentru n  1 perechi de valori din tabelă:
y0
x  x0    y20 x  x0 x  x1      yn0 x  x0 x  x1 x  xn1 
2 n
N nd x   y0  (3.3)
1! h 2! h n! h
Acest polinom este recomandat pentru aproximarea funcţiei f x  atunci când se consideră valorile lui x
apropiate de x0, adică valorile lui x de la începutul tabelei. Diferenţele finite la dreapta se calculează comod
pentru diverse ordine, pornind de la tabela de valori a funcţiei f x  aşezată vertical, sub o formă similară
celei din tabelul 3.1 (vezi Exemplul 1). Se observă că valorile diferenţelor finite progresive ce urmează a fi
introduse în (3.3) sunt cele corespunzătoare primei valori din fiecare coloană a tabelului 3.1.

Tabelul 3.1 – Tabel pentru calculul diferenţelelor finite la dreapta (pentru Exemplul 1, cu 4 noduri)
k xk yk yk 2yk 3yk
0 x0=1 y0=2
y0 = y1 – y0 = 1/2
1 x1=2 y1=5/2 2y0 = y1 – y0 = 1/3
y1 = y2 – y1 = 5/6 3y0 = 2y1 – 2y0 = –1/4
2 x2=3 y2=10/3 2y1 = y2 – y1 = 1/12
y2 = y3 – y2 = 11/12
3 x3=4 y3=17/4

Exemplul 1  Algoritm de calcul pentru 4 noduri


 
Aproximaţi funcţia f x   1 x 2 x pe domeniul 1; 4 , printr-un polinom Newton cu diferenţe finite la
dreapta de gradul 3, adică N 3d x  . Să se determine valoarea aproximativă a funcţiei obţinută cu acest

polinom la x   1.5 . Să se compare rezultatul obţinut cu valoarea exactă f x   1.5 şi să se calculeze 
eroarea relativă cu relaţia:

 rx 
 
f x   N 3d x   
100 % .
f x   (3.4)

Rezolvare: Introducând prima valoare din fiecare coloană a tabelului 3.1 în relaţia (3.3), rezultă:
N 3d x   2  1 2x  1  1 6x  1x  2  1 24x  1x  2x  3 .

1
care se mai numesc şi diferenţe finite progresive; sunt notate y pentru ordinul 1, 2y pentru ordinul 2, ...

1
Rezultate: N 3d 1.5  2.1927 , f 1.5  2.1667 şi  rx  1.2015% .

 În mod similar, cu ajutorul diferenţelor finite la stânga2, se defineşte polinomul Newton cu


diferenţe finite la stânga:
y n
x  xn    y2n x  xn x  xn1      ynn x  xn x  xn1 x  x1 
2 n
N nS x   y n  (3.5)
1!h 2!h n!h
Acest polinom este recomandat pentru aproximarea funcţiei f x  atunci când se consideră valorile
variabilei x de la sfârşitul tabelei (valori apropiate de x n ). Diferenţele finite la stânga se calculează comod
pentru diverse ordine, pornind de la tabela de valori a funcţiei f x  aşezată vertical, sub forma din tabelul
3.2 (vezi Exemplul 2). Completarea datelor din tabel se va efectua pornind de jos în sus. Se observă că
valorile diferenţelor finite regresive ce urmează a fi introduse în (3.5) corespund ultimei valori din fiecare
coloană a tabelului 3.2.

Tabelul 3.2 – Tabel pentru calculul diferenţelelor finite la stânga (pentru Exemplul 2, cu 4 noduri)
k xk yk yk 2yk 3yk
0 x0=1 y0=2
y1 = y1 – y0 = 1/2
1 x1=2 y1=5/2 2y2 = y2 – y1 = 1/3
y2 = y2 – y1 = 5/6 3y3 = 2y3 – 2y2 = –1/4
2 x2=3 y2=10/3 2y3 = y3 – y2 = 1/12
y3 = y3 – y2 = 11/12
3 x3=4 y3=17/4

Exemplul 2  Algoritm de calcul pentru 4 noduri


 
Aproximaţi funcţia f x   1 x 2 x pe domeniul 1; 4 , printr-un polinom Newton cu diferenţe finite la
stânga de gradul 3, adică N 3S x  . Să se determine valoarea aproximativă a funcţiei obţinută cu acest polinom
 
la x  4.5 . Să se compare rezultatul obţinut cu valoarea exactă f x   4.5 şi să se calculeze eroarea

relativă cu relaţia:

 rx 
 
f x   N 3S x   
100 % .
f x   (3.6)

Rezolvare: Introducând ultima valoare din fiecare coloană a tabelului 3.2 în relaţia (3.5), rezultă:
N 3S x   17 4  11 12x  4  1 24x  4x  3  1 24x  4x  3x  2 .
Rezultate: N 3S 4.5  4.6615, f 4.5  4.7222 şi  rx  1.2859% .

2.1.5. DIFERENŢE DIVIZATE. POLINOMUL NEWTON GENERALIZAT

Pentru generalizarea la cazul tabelelor de valori cu paşi inegali după x, se introduce noţiunea de
diferenţă divizată, notată şi definită după cum urmează:
y  y0
- diferenţa divizată de ordinul 1: y x0 , x1   1
x1  x0
yx1 , x2   yx0 , x1 
- diferenţa divizată de ordinul 2: yx0 , x1 , x2   (3.7)
x2  x0
.................................................................................................................
yx1 , x2 , , xn   yx0 , x1 , , xn1 
- diferenţa divizată de ordinul n: yx0 , x1 , , xn   .
xn  x0
Folosind diferenţele divizate (3.7), polinomul de interpolare Newton generalizat se scrie sub forma:

2
care se mai numesc şi diferenţe finite regresive; sunt notate y pentru ordinul 1, 2y pentru ordinul 2, ...

2
N n x  y0  x  x0  yx0 , x1   x  x0 x  x1  yx0 , x1 , x2    
 x  x0 x  x1 x  xn1  yx0 , x1 ,, xn  , (3.8)
acesta putând fi utilizat, ca şi polinomul Lagrange, indiferent de distanţa dintre noduri.
Diferenţele divizate se calculează comod pentru diverse ordine, pornind de la tabela de valori a
funcţiei f x  aşezată vertical, sub forma din tabelul 3.3 (vezi Exemplul 3).

Exemplul 3  Algoritm de calcul pentru 3 noduri


 
Aproximaţi funcţia f x   1 x 2 x pe domeniul 1; 3 , printr-un polinom Newton generalizat de gradul 2,
adică N 2 x  . Să se determine valoarea aproximativă a funcţiei obţinută cu acest polinom la x   2.5 . Să se
   
calculeze eroarea absolută faţă de valoarea exactă f x   2.5 , cu relaţia  x  f x   N 2 x  .  
Tabelul 3.3 – Tabel pentru calculul diferenţelor divizate (pentru Exemplul 2, cu 3 noduri)
k xk yk
0 x0=1 y0 = 2
y(x0,x1)=(y1-y0)/(x1- x0) = 1/2
1 x1=2 y1 = 5/2 y(x0,x1,x2)=(y(x1,x2)-y(x0,x1))/(x2-x0) = 1/6
y(x1,x2)=(y2-y1)/(x2- x1) = 5/6
2 x2=3 y2=10/3

Rezolvare: Introducând prima valoare din fiecare coloană a tabelului 3.3 în relaţia (3.8), rezultă:
N 2 x  2  1 2x  1  1 6x  1x  2 .
Rezultate: N 2 2.5  2.875, f 2.5  2.9 şi  x  0.025 .

 Algoritm şi program pentru determinarea coeficienţilor polinomului Newton generalizat


(cazul general)
Algoritm:
1. Informaţia iniţială: Citeşte vectorii x, y
2. Iniţializează tabelul diferenţelor divizate D, adică D  0 şi citeşte dimensiunea n a lui x
3. Pentru j = 2:n şi k = j:n, calculează tabelul D: D  D(k,j) = (D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1))
4. Pentru k = (n-1):-1:1, calculează vectorul C al coeficienţilor polinomului Newton generalizat

Funcţie - Program GNU Octave


octave#1>function [C,D]=newpoly(x,y)
#Intrari: - x vectorul absciselor
# - y vectorul ordonatelor
#Iesiri: - C vectorul coeficientilor polinomului Newton generalizat
# - D tabelul diferentelor divizate
n=length(x);
D=zeros(n,n);
D(:,1)=y';
for j=2:n
for k=j:n
D(k,j)=(D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1));
endfor
endfor
#Se determina coeficientii polinomului de interpolare Newton generalizat:
C=D(n,n);
for k=(n-1):-1:1
C=conv(C,poly(x(k)));
m=length(C);
C(m)=C(m)+D(k,k);
endfor
endfunction

3
2.2. CRITERIUL DE APROXIMARE DUPĂ REST

2.2.1. POLINOAME DE APROXIMARE TAYLOR

Fie I un interval din R, aR şi f x  : I  R o funcţie indefinit derivabilă în x0  a . În aceste


condiţii, funcţia y  f x  admite o dezvoltare în serie Taylor:
f a  2 f a 
n 
a   
f x   f a   x  a   x  a     x  a 
n f
(3.9)
1! 2! n!
Seria (3.9) este convergentă pe intervalul a  R ; a  R  unde R este raza de convergenţă a seriei.
Dacă expresia analitică a lui f x  este cunoscută, dar este prea complicată şi incomod de utilizat în
calcule repetate, există posibilitatea aproximării funcţiei prin polinoame Taylor de grad n, notate Tn x 
(sume parţiale ale seriei Taylor):
f a  2 f a 
n 
a  .
Tn x   f a   x  a   x  a     x  a 
n f
(3.10)
1! 2! n!
Eroarea datorată aproximării funcţiei f x  prin polinomul Taylor de gradul n definit în (3.10) este exprimată
prin restul seriei,
Rn x   f x   Tn x  , (3.11)
care poate fi scris sub forma lui Lagrange:

Rn  x  a 
n 1 f
n1
a   x  a  , (3.12)
n  1!
unde   0; 1 .
Dacă x0  0 (adică a  0 ), atunci se obţine seria Mac-Laurent:
f 0 2 f 0 f n  0
f x   f 0  x x  xn  (3.13)
1! 2! n!
Pentru acest din urmă caz, restul seriei se scrie sub forma lui Lagrange:
f n1  x 
Rn  x n1 , (3.14)
n  1!
sau sub forma lui Cauchy:
f n1  x 
Rn  1   x n1 , (3.15)
n!
unde   0; 1 .

Exemplul 4  Ne propunem să aproximăm funcţia y  sin x cu un polinom Taylor. Dezvoltăm în serie


Taylor funcţia în jurul punctului x0  0 (cu formula 3.13) şi obţinem:
x x3 x5 x7 x 2 n1
sin x         1 
n
(3.16)
1! 3 ! 5 ! 7 ! 2n  1!
Seria este convergentă pentru x   1; 1 , adică raza de convergenţă a seriei este R  1 .
x3 x3 x5
Vom aproxima funcţia y  sin x prin polinoamele Taylor: T3 x   x  şi T5 x   x   ,
6 6 120
apoi vom valida aproximările prin reprezentare grafică (figura 3.1).

 Observaţie: Dacă se doreşte aproximarea funcţiei y  sin x printr-un polinom Taylor pe un interval
a  1 ; a  1 , cu a  0 , atunci se foloseşte dezvoltarea în serie (3.9). Reprezentarea grafică a aproximărilor
cu polinoamele T3 x  şi T5 x  pentru x   2; 2 este realizată în figura 3.2.

4
 Comentariu: Se observă că pe intervalul  1; 1 de convergenţă al seriei (3.16), atât polinomul Taylor de
grad 3, cât şi cel de grad 5, aproximează foarte bine funcţia y  sin x (figura 3.1). În afara intervalului de
convergenţă, aproximarea funcţiei y  sin x prin polinoame Taylor nu mai este validă (figura 3.2).

Sugestie de program GNU Octave:


octave#1>x=linspace(-1,1,100); y=sin(x); T3=x-x.^3/6; T5=x-x.^3/6+x.^5/120;
octave#2>grid("on"),plot(x,y,"+3;functia y = sin(x);",x,T3,"o1;aproximare Taylor cu 2 termeni;", . . .
x,T5,"*4;aproximare Taylor cu 3 termeni;")
octave#3>title('Graficele y = sin(x), T_3(x) = x-x^3/6, T_5(x) = x-x^3/6+x^5/120 pe [-1,1]')
octave#4>xlabel('x'), ylabel('y(x), T_3(x), T_5(x)')
octave#5>print('fig31.eps','-depsc2')
octave#6>clf
octave#7>x=linspace(-2,2,100); y=sin(x); T3=x-x.^3/6; T5=x-x.^3/6+x.^5/120;
octave#8>grid("on"),plot(x,y,"+3;functia y = sin(x);",x,T3,"o2;aproximare Taylor cu 2 termeni;", . . .
x,T5,"*1;aproximare Taylor cu 3 termeni;")
octave#9>title('Graficele y = sin(x), T_3(x) = x-x^3/6, T_5(x) = x-x^3/6+x^5/120 pe [-2,2]')
octave#10>xlabel('x'), ylabel('y(x), T_3(x), T_5(x)')
octave#11>print('fig32.eps','-depsc2')

Fig. 3.1  Aproximarea prin polinoame Taylor în intervalul de convergenţă al seriei

5
Fig. 3.2  Aproximarea prin polinoame Taylor în afara intervalului de convergenţă al seriei

2.2.2. APROXIMAREA UNEI FUNCŢII PRINTR-UN POLINOM


TRIGONOMETRIC FOLOSIND DEZVOLTAREA ÎN SERIE FOURIER

Polinomul de aproximare trigonometric se scrie sub forma (2.3):


m


Fm x   0  ak cos kx  bk sin kx .
a
(3.17)
2 k 1

Exemplul 5  Să se aproximeze pe intervalul  ;  funcţia f x   x printr-un polinom trigonometric.


Deoarece funcţia este impară, din (3.17) va rezulta pentru f x  dezvoltarea în serie Fourier:
 sin 2 x  sin 3x  sin 4 x  sin 5 x  n 1 sin nx 
F x   2 sin x         1   , (3.18)
 2 3 4 5 n 
convergentă în intervalul  ;  . Informaţii suplimentare sunt prezentate în Anexa 1.

În continuare, se va aproxima funcţia f x   x prin polinomul trigonometric care reprezintă suma


parţială a primilor 5 termeni din seria Fourier (3.18) şi anume:
 sin 2 x  sin 3x  sin 4 x  sin 5 x  
F x   2 sin x     . (3.19)
 2 3 4 5 
Funcţiile f x   x şi polinomul F x  din (3.19) se reprezintă pe acelaşi grafic pe intervalul  ;  ,
folosind o discretizare a intervalului cu 50 de paşi (figura 3.3).
Observaţie: Se reaminteşte că intervalul de convergenţă al seriei Fourier (3.18) este  ;  , deci către
capetele acestui interval, aproximarea funcţiei f x   x prin F x  din (3.19) nu va fi satisfăcătoare.

6
Program GNU Octave:
octave#1>x=linspace(-pi,pi,50); y=x;
octave#2>F=2*(sin(x)-sin(2*x)/2+sin(3*x)/3-sin(4*x)/4+sin(5*x)/5);
octave#3>grid("on"),plot(x,F,"-*3;aproximarea Fourier F(x);"), hold("on")
octave#4>plot(x,y,"-o1;functia f(x) = x;")
octave#5>title('Aproximarea Fourier a functiei f(x) = x'), xlabel('x'), ylabel('f(x), F(x)')
octave#6>print('fig33.eps','-depsc2')

Fig. 3.3  Aproximarea prin serie Fourier a funcţiei f x   x în intervalul  ; 

Dacă se consideră funcţia discontinuă f x   x  2k , cu k din Z, definită pe intervalele


2k   ; 2k   , rezultă, de exemplu, funcţiile:
f 1 x   x  2 pentru k  1 pe intervalul  3;   ,
f x   x pentru k  0 pe intervalul  ;  ,
respectiv f1 x   x  2 pentru k  1 pe intervalul ; 3 .
În figura 3.4 se prezintă variaţia sumei parţiale Fourier (3.19) pe intervalul  3 ; 3 (folosind o
discretizare a intervalului cu 200 de paşi), alături de funcţiile f 1 x  , f x  şi f1 x  (pentru care s-au
discretizat intervalele corespunzătoare cu câte 50 de paşi).
Observaţie: Se poate observa (figura 3.4) că aproximaţiiile Fourier definite pe   ;   transformă
funcţia discontinuă, într-o funcţie continuă.
Program GNU Octave:
octave#1>x1=linspace(-3*pi,-pi,50); y1=x1+2*pi;
octave#2>x=linspace(-pi,pi,50); y=x;
octave#3>x2=linspace(pi,3*pi,50); y2=x2-2*pi;
octave#4>xf=linspace(-3*pi,3*pi,200);
octave#5>F=2*(sin(xf)-sin(2*xf)/2+sin(3*xf)/3-sin(4*xf)/4+sin(5*xf)/5);

7
octave#6>grid("on"),plot(xf,F,"-3;aproximarea Fourier F(x);"), hold("on")
octave#7>plot(x1,y1,"-2;functia f(x) = x+2*pi;"), plot(x,y,"-1;functia f(x) = x;")
octave#8>plot(x2,y2,"-4;functia f(x) = x-2*pi;")
octave#9>title('Aproximarea Fourier a functiei f(x) = x-2k*pi pentru k = -1; 0; 1')
octave#10>xlabel('x'), ylabel('f(x), F(x)')
octave#11>print('fig34.eps','-depsc2')

Fig. 3.4  Aproximarea prin serie Fourier a funcţiei f x   x  2k în intervalul  3 ; 3

APLICAŢII DE LABORATOR

x2
Problema 1  Aproximaţi funcţia f x   pe domeniul x  1; 11 printr-un polinom Newton cu
1  ln x
diferenţe finite la dreapta de gradul 2, adică: N 2d x  . Să se determine valoarea aproximativă a funcţiei

obţinută cu acest polinom la x  5 . Să se compare rezultatul obţinut cu valoarea exactă f x  5 şi să se
calculeze eroarea relativă cu relaţia:

 rx 
 
f x   N 2d x  
100 % .
f x  
Program GNU Octave:
octave#1>x=[1 6 11]; y=x.^2./(1+log(x)); h=5; xs=5; c1=y(1); d1=diff(y);
octave#2>c2=d(1)/h; d2=diff(d1); c3=d2(1)/(2*h^2);
octave#3>N2d=c1+c2*(xs-1)+c3*(xs-1)*(xs-6), fexact=5^2/(1+log(5))
octave#4>er=100*(fexact–N2d)/fexact

Problema 2  Să se găsească polinomul Newton cu diferenţe finite progresive de gradul 4, pentru tabela
de valori xk , yk  f xk  obţinută pentru funcţia f x   x 3 pe domeniul x  1; 5 . Să se determine valoarea

8
aproximativă a funcţiei obţinută cu acest polinom la x   1.2 . Să se calculeze eroarea relativă în raport cu
valoarea exactă a funcţiei. Comentaţi variaţia diferenţelor finite de diverse ordine pentru o funcţie exactă dată
prin tabelă. Să se calculeze valoarea aproximativă a funcţiei la x   1.2 cu un polinom de interpolare
Lagrange de gradul 4 şi să se compare rezultatele.
Indicaţie: Se reaminteşte că polinomul de interpolare Lagrange de gradul n se scrie în funcţie de cele
n  1 perechi de valori din tabelă, sub forma:

n x  x   .

n
Ln x     x  x 
 yk
k 0 
j


j 0 k j
 j k 

Problema 3  Folosind un polinom de interpolare de gradul 3 cu diferenţe finite la dreapta, să se


calculeze suma: S n  12  2 2    n 2 .
Indicaţie: Se completează tabelul de valori de mai jos, după modelul tabelului 3.1:

k nk Sk Sk 2Sk 3Sk


1 n1=1 S1=1
S1 = S2 – S1 = 4
2 n2=2 S2=5 2S1 = S2 – S1 = 5
S2 = S3 – S2 = 9 3S1 = 2S2 – 2S1 = 2
3 n3=3 S3=14  S2 = S3 – S2 = 7
2

S3 = S4 – S3 = 16
4 n3=4 S4=30

Rezultă polinomul:
S 2 S1
n  1n  2   S1 n  1n  2n  3 , adică N 3d x  n n  12n  1 6 , care
3
N 3d x   S1  1 n  1 
1! 2! 3!
reprezintă valoarea exactă a sumei S n .

Problema 4  Aproximaţi funcţia f x   x pe domeniul x  0; 6 printr-un polinom Newton cu


diferenţe finite regresive de gradul 3, adică: N 3S x  . Să se determine valoarea aproximativă a funcţiei
obţinută cu acest polinom la x  5 . Să se compare rezultatul obţinut cu valoarea exactă f x  5 şi să se  
calculeze eroarea relativă.

Problema 5  Găsiţi un polinom Newton generalizat pentru tabela de 4 valori de mai jos (deci n  3 ):

xk 0 1 4 9
yk 0 1 2 3

 
şi aflaţi valoarea N 3 x   5 . Să se calculeze eroarea relativă în raport cu valoarea exactă f x  5 , ştiind că  
f x   x . Să se compare rezultatul obţinut aici, cu valoarea N 3S 5 de la Problema 4. Prin extrapolare, să

se afle valoarea polinomului Newton generalizat la x  10 şi să se calculeze eroarea relativă în raport cu

valoarea exactă f x  10 . 
Problema 6  Aproximaţi funcţia y  e x printr-un polinom Taylor de grad 2, notat T2 x  , pe intervalul
0; 1. Pentru x   1; 1 , reprezentaţi pe acelaşi grafic funcţia y  e x şi polinomul T2 x  , folosind o
discretizare a intervalului cu 50 de paşi. Reprezentaţi pe alt grafic, în intervalul 0; 4 funcţiile y  e x şi
polinomul T2 x  folosind o discretizare a intervalului cu 50 de paşi. Comentaţi rezultatele.

9
ANEXA 1: Seriile Fourier continue

O funcţie periodică îndeplineşte relaţia:


f x   f x  T  , (3.20)
unde T este perioada (cea mai mică valoare pentru care este valabilă relaţia scrisă).
Prin sinusoidă vom desemna orice reprezentare grafică ondulatorie descrisă de sinus sau cosinus.
Pentru o funcţie cu perioada T, seria Fourier continuă se scrie sub forma:

F  x   a0   a
k 1
k cosk0 x   bk sin k0 x  , (3.21)

unde 0  2 T este numită frecvenţă fundamentală, iar multiplii ei 20 , 30 , sunt numiţi armonice.
Coeficienţii seriei Fourier (3.21) pot fi calculaţi cu relaţiile:
T
F x  dx ,
1
a0 
T0 
T
F x cosk0 x  dx ,
2
ak 
T0  (3.22)

T
F x sin k0 x  dx .
2
bk 
T0 
Funcţia f x   x din Exemplul 5, definită pe intervalul  ;  , are perioada T  2 şi 0  1 .
Aproximarea acestei funcţii poate fi realizată prin polinomul trigonometric (3.21), coeficienţii (3.22) ai seriei
Fourier fiind:
 
1 1 x2
a0 
2 - 
x dx  
2 2 
0,


x coskx  dx  0 ,
1
ak 
 -  (3.23)


x sin kx dx   1
1 k 1 2
bk 
 -  k
.

Cu aceşti coeficienţi, se obţine aproximarea (3.19) considerată în Exemplul 5.

10

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