Documente Academic
Documente Profesional
Documente Cultură
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
x 1 2 3 4 5
y 2 1 -1 5 0
α 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
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.