Sunteți pe pagina 1din 5

Model de lucrarea de laborator Nr.8.

Tema: Interpolarea funcţiilor cu polinomul lui Newton de interpolare

I. Formularea problemei.
Se cere de interpolat pe segmentul [a,b] funcţia f(x)definită cu polinoame
algebrice de interpolare, folosindu-se cel puţin trei formule ale acestora
(formule pentru noduri arbitrare şi pentru noduri echidistante)
Fie că se cunosc valorile yi=f(xi) ale funcţiei y=f(x) în punctele xi,i=1,2,...,n
(xi ≠ xj). Folosind aceste date iniţiale se cere de găsit valorile funcţiei f(x) într-
un şir de puncte x ≠ xi, (i=1,2,..n). În multe cazuri această problemă se rezolvă
prin aproximarea funcţiei f(x) cu o funcţie ϕ ( x) ≡ ϕ ( x, a1 ,..., a n ) care depind de n
parametri ai, aleşi astfel ca valorile funcţiei φ(x) să coincidă cu valorile funcţiei
f(x)în punctele xi (nodurile interpolării):
ϕ ( xi ) = f ( xi ), i = 1, n .
Această metodă de aproximare a funcţiei f(x) cu φ(x) se numeşte interpolarea
funcţiei f(x) cu funcţia φ(x).
Cel mai bine cercetat cazul interpolării cu polinoame algebrice
n
ϕ ( x) = ∑ ai x i −1 .
i =1

Se demonstrează că pentru orice funcţie f(x) şi orice sistem de noduri xi ,


i=1,2,...n, există şi este unic polinomul algebric de interpolarea de grad mai mic
sau egal ca n-1.

II. Indicaţii metodice


Lucrarea de laborator constă în 2 etape:
2. Rezolvarea matematică a problemei formulate.
Cunoscînd valorile yi=f(xi) ale funcţiei y=f(x) în punctele xi, i=1,2,...,n (xi ≠ xj)
să se determine valorile funcţiei într-un şir de puncte, aproximînd funcţia f(x) cu un
polinom algebric prin una din metodele ce vor fi descrise mai jos.
Exemplul 1. Să se scrie polinomul de interpolare al lui Newton pentru următoarele date
din tabel şi să se calculeze valoarea polinomului în punctul 3,5.

x 1 2 3 4 5
y 2 1 -1 5 0

Rezolvare. Calculele se pot organiza într-un tabel de forma:


x0 x1 x2 x3 x4
1 2 3 4 5
f [x 0 ] f [x1 ] f [x 2 ] f [x3 ] f [x 4 ]
f [x0 , x1 ] f [x1 , x 2 ] f [x 2 , x3 ] f [x3 , x 4 ]
f [x0 , x1 , x 2 ] f [x1 , x 2 , x3 ] f [x 2 , x3 , x 4 ]
f [x 0 , x1 , x 2 , x3 ] f [x1 , x 2 , x3 , x 4 ]
f [x 0 , x1 , x 2 , x3 , x 4 ]
f [x1 ] − f [x0 ] 1 − 2
f [x 0 , x1 ] = = = −1;
x1 − x0 2 −1
f [x 2 ] − f [x1 ] − 1 − 1
f [x1 , x 2 ] = = = −2;
x 2 − x1 3−2
f [x3 ] − f [x 2 ] 5 + 1
f [x 2 , x3 ] = = = 6;
x3 − x 2 4−3
f [x 4 ] − f [x3 ] 0 − 5
f [x3 , x 4 ] = = = −5;
x 4 − x3 5−4
f [x1 , x2 ] − f [x0 , x1 ] − 2 + 1 1
f [x0 , x1 , x2 ] = = =− ;
x2 − x0 3 −1 2
f [x 2 , x3 ] − f [x1 , x 2 ] 6 + 2
f [x1 , x 2 , x3 ] = = = 4;
x3 − x1 4−2
f [x 3 , x 4 ] − f [x 2 , x 3 ] − 5 − 6 11
f [x 2 , x3 , x 4 ] = = =− ;
x4 − x2 5−3 2
1
4+
f [x1 , x 2 , x3 ] − f [x 0 , x1 , x 2 ] 2 = 3;
f [x 0 , x1 , x 2 , x3 ] = =
x3 − x0 4 −1 2
11
− −4
f [x 2 , x3 , x 4 ] − f [x1 , x 2 , x3 ] 19
f [x1 , x 2 , x3 , x 4 ] = = 2 =− ;
x 4 − x1 5−2 6
19 3
− −
f [x1 , x 2 , x3 , x 4 ] − f [x0 , x1 , x 2 , x3 ] 6 2 = −7;
f [x 0 , x1 , x 2 , x3 , x 4 ] = =
x 4 − x0 5 −1 6
x0 x1 x2 x3 x4
1 2 3 4 5
2 1 -1 5 0
-1 -2 6 -5
1 11
- 4 -
2 2
3 19
-
2 6
7
-
6
Polinomul lui Newton ascendent este de forma:
1
N ( f ,1,2,3,4,5, x ) = 2 − ( x − 1) − ( x − 1)( x − 2) +
2
3 7
+ ( x − 1)( x − 2)( x − 3) − ( x − 1)( x − 2)( x − 3)( x − 4).
2 6
Polinomul lui Newton descendent este de forma:
11
N ( f ,5,4,3,2,1, x ) = −5( x − 5) −
( x − 5)( x − 4) −
2
19 7
− ( x − 5)( x − 4)( x − 3) − ( x − 5)( x − 4)( x − 3)( x − 2).
6 6
Calculăm N (3,5)
7 3 1
− − −1 2
6 2 2

α 7 25 13 3 49
− −
6 12 24 16 32
3 7 25
− (3,5 − 4 ) = ;
b3 = c3 + b4 (α − x3 ) =
2 6 12
1 25 13
b2 = c 2 + b3 (α − x 2 ) = − + (3,5 − 3) = ;
2 12 24
c4 = b4 ; α = 3,5
13 3
b1 = c1 + b2 (α − x1 ) = −1 + (3,5 − 2 ) = − ;
24 16
3 49
b0 = c0 + b1 (α − x 0 ) = 2 − (3,5 − 1) =
16 32
49
Răspuns: N (3,5) = .
32
Exemplul 2. Să se calculeze polinomul lui Newton cu noduri duble ataşate următorului
tabel de valori. Şi să se calculeze valoarea polinomului în punctul 2.
x 0 3 5
y 1 -2 3
y 2 5 7

Rezolvare. Datele le organizăm în tabel


z 0 z1 z 2 z 3 z 4 z 5
x 0 x 0 x1 x1 x 2 x 2
q 00 q10 q 20 q30 q 40 q 50
q11 q 21 q31 q 41 q 51
q 22 q 32 q 42 q52
q33 q 43 q53
q 44 q54
q 55
qi , j −1 − qi −1, j −1
qij = , q11 = 2 ,
zi − zi− j
q 20 − q10 − 2 − 1
q 21 = = = −1 , q 31 = 5 ,
z2 − z1 3−0
q − q30 3 + 2 5 q − q11 − 1 − 2
q 41 = 40 = = = 2,5 , q 51 = 7 , q 22 = 21 = = −1 ,
z4 − z3 5−3 2 z2 − z0 3−0
5 5
−5 −
q31 − q 21 5 + 1 q 41 − q34 2 5
q32 = = = 2 , q 42 = = = 2 = − = −1,25 ,
z 3 − z1 3−0 z4 − z2 5−3 2 4
5 9
7−
q 52
q − q 41
= 51 = 2 = 2 = 9 = 2,25 , q = q32 − q 22 = 2 + 1 = 1
33
z5 − z3 5−3 2 4 z3 − z0 3−0
5 13
− −2 −
q 42 − q32 13 1 13
q 43 = = 4 = 4 =− ⋅ =− = −0,65 ,
z 4 − z1 5−0 5 4 5 20
9 5 7
+
q52 − q 42 4 4 2 7
q 53 = = = = = 1,75 ,
z5 − z 2 5−3 2 4
13 33
− −1 −
q 43 − q33 33 1 33
q 44 = = 20 = 20 = − ⋅ = − = −0,33 ,
z4 − z0 5−0 5 20 5 100
7 13
+
q53 − q 43 12
q 54 = = 4 20 = = 0,48 ,
z 5 − z1 5−0 25
12 33 81
+
q54 − q 44 81 1 81
q 55 = = 25 100 = 100 = ⋅ = = 0,162
z5 − z0 5−0 5 100 5 500
z 0 z1 z2 z3 z4 z5
0 0 3 3 5 5
1 1 -2 -2 3 3
2 -1 5 2,5 7
-1 2 - 1,25 2,25
1 - 0,65 1,75
- 0,33 0,48
0,162
Polinomul lui Newton ascendent este de forma:
N ( f ,0,0,3,3, ,5,5, x) = 1 + 2(x − 0) − 1(x − 0) + 1( x − 0)(x − 0)(x − 3) −
− 0,33(x − 0)(x − 0)(x − 3)(x − 3) + 0,162(x − 0)(x − 0)(x − 3)(x − 3)(x − 5) = Polinomul lui Newton descendent
= 1 + 2x − 4x 2 + x 3 − 0,33x 2 (x − 3)(x − 3) + +0,162x 2 (x − 3)(x − 3)(x − 5)
este de forma:
N ( f ,5,5,3,3,0,0, x ) = 3 + 7( x − 5) + 2,25( x − 5)(x − 5) +
+ 1,75(x − 5)( x − 5)( x − 3) + 0,48( x − 5)(x − 5)( x − 3)( x − 3) +
+ 0,162( x − 5)( x − 5)( x − 3)( x − 3)( x − 0 )
Calculăm valoarea polinomului în punctul N(2) x 0 = 0; x1 = 0; x 2 = 3; x3 = 3; x 4 = 5; x 5 = 5
0,162 -0,33 1 -1 2 1
α 0,162 -0,816 1,816 -2,816 -3,632 -6,624
c5 = b5 = 0,162
b4 = c 4 + b5 (α − x 4 ) = −0,33 + 0,162(2 − 5) = −0,33 − 0,486 = −0,816
b3 = c3 + b4 (α − x3 ) = 1 + (− 0,816)(2 − 3) = 1,816
b2 = c 2 + b3 (α − x 2 ) = −1 + 1,816(2 − 3) = −1 − 1,816 = −2,816
b1 = c1 + b2 (α − x1 ) = 2 − 2,816(2 − 0 ) = 2 − 5,632 = −3,632
b0 = c 0 + b1 (α − x0 ) = 1 − 3,632(2 − 0 ) = 1 − 7,264 = −6,264
Răspuns: N (2 ) = −6,264 .

3. Alcătuirea unui program de calcul pentru metoda indicată şi pentru


exemplul dat.
Să se implementeze un program în limbajul de programare dorit (Pascal,
MatLab, C, C++, Java, etc.). Să se afişeze şi rezultate obţinute în urma
implementării programului.
1. Program Newton;

program Newton;
type vector=array[0..20] of real;
matrix=array[0..20,0..20] of real;
var q:matrix;
x,y :vector ;
b,t :real ;
I,j,k,n:integer;
procedure Newton (var x,y:vector;n: integer; var b,t:real;var q: matrix);
var I,j:integer;
begin
for i:=0 to n do
q[I,0]:=y[i];
for i:=1 to n do
for j:=1 to I do
q[I,j]:=(q[I,j-1]-q[i-1,j-1])/(x[i]-x[i-j]);
end;

begin
write(‘n=’); readln(n);
write(‘t=’); read(t);
for i:=0 to n do
begin
write(‘x[‘,I,’]=’);
readln(x[i]);
write(‘y[‘,I,’]=’);readln(y[i]);
end;
Newton (x,y,n,b,t,q);
writeln(‘.......Polinom Newton ......’);
writeln(‘Polinom de interpolare de gradul ‘, n :3) ;
writeln(‘ x y q’) ;
writeln(‘.............’);
for i:=0 to n do
begin
write (x[i]:10:4, y[i]:10:4);
writeln;
end;
writeln(‘coeficientii polinomului unctual sunt:’);
for i:=0 to n do
write(q[I,i]:10:4);writeln;
writeln(‘coeficientii polinomului descendenti :’) ;
for i:=0 to n do
write(q[n,i]:10:4);
writeln;
begin
b:=q[n,n];
for i:=n-1 downto 0 do
b:=b*(t-x[i]+q[I,i]);
end;
writeln(‘valoarea polinomului in punctul t=’,t :9 :4,’ este
‘,b :10 :6) ;
end.

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