Sunteți pe pagina 1din 23

Metode Numerice

129



Lucrarea de laborator nr. 9


I. Scopul lucrrii
Aproximarea funciilor. Polinoame de interpolare.

II. Coninutul lucrrii
1. Polinom de interpolare. Definiie. Eroarea de interpolare.
2. Polinomul Lagrange de interpolare.
3. Polinomul Newton de interpolare de spea I (ascendent).
4. Polinomul Newton de interpolare de spea a II-a (descendent).
5. Polinomul Newton cu diferene divizate.

III. Prezentarea lucrrii

III.1. Polinom de interpolare. Definiie. Eroarea de
interpolare.

Fie f : [a, b] R o funcie. Se pune problema determinrii unei
funcii F care s aproximeze funcia f. O asfel de aproximaie este necesar n
urmtoarele situaii:
1) Cnd nu se cunoate expresia analitic a lui f, ci doar valorile
sale ntr-un numr finit de puncte x
0
, x
1
, , x
n
din intervalul [a,
b].
2) Cnd expresia analitic a lui f este prea complicat i calculele
efectuate cu ajutorul acesteia ar fi prea dificile.
F trebuie s fie o funcie simpl, uor de evaluat, de difereniat i de integrat.
n cele ce urmeaz F va fi un polinom.
Fie x
0
, x
1
, , x
n
n+1 puncte distincte din intervalul [a, b], i y
i
=
f(x
i
) pentru orice i = 0,1,n. Pentru ca polinomul de grad mai mic sau egal
cu n, P
n
, s fie un polinom de interpolare pentru f trebuie satisfcute relaiile:
(1) P
n
(x
i
) = y
i
, i = 0, 1, , n .
Polinomul determinat de condiiile anterioare este unic. ntr-adevr fie
P
n
(x) = a
n
X
n
+ a
n-1
X
n-1
+ + a
1
X + a
0

Mdlina Roxana Buneci


130

Relaiile anterioare conduc la sistemul:

a
0
+ a
1
x
0
+ a
2
2
0
x + + a
n
n
0
x = y
0

a
0
+ a
1
x
1
+ a
2
2
1
x + + a
n
n
1
x = y
1

(2)
a
0
+ a
1
x
n
+ a
2
2
n
x + + a
n
n
n
x = y
n


Determinatul acestui sistem este

1 x
0

2
0
x
n
0
x
= 1 x
1

2
1
x
n
1
x = ( )

<

n i j 0
j i
x x

1 x
n

2
n
x
n
n
x

(fiind un determinant Vandermonde). Deci 0, i n consecin sistemul (2)
este compatibil determinat, adic polinomul de interpolare P
n
este unic
determinat. Coeficienii polinomului de interpolare pot fi determinai
rezolvnd sistemul (2), dar dac n este mare, atunci volumul de calcul este
mare. De aceea se utilizeaz diferite forme comode ale polinoamelor care
conduc la polinoame de interpolare Lagrange, Newton, etc.
Teorema urmtoare stabilete eroarea maxim cu care polinomul P
n

aproximeaz funcia f:
Teorem. Fie f : [a, b] R o funcie de clas C
n+1
. Fie x
0
, x
1
, , x
n

n+1 puncte distincte din intervalul [a, b], i y
i
= f(x
i
) pentru orice i =
0,1,n. Fie P
n
polinomul de interpolare, adic polinomul de gradul n ce
satisface relaiile P
n
(x
i
) = y
i
pentru orice i = 0, 1, , n . Atunci oricare ar fi x
[a, b], avem:
| f(x) P
n
(x) |
[ ]
( )
( )
( ) ! n
t f sup
n
b , a t
1
1
+
+

|(x x
0
) (x x
1
) (x x
n
)|.

III.2. Polinomul Lagrange de interpolare.

Fie f : [a, b] R o funcie, fie x
0
, x
1
, , x
n
n+1 puncte distincte din
intervalul [a, b], i y
i
= f(x
i
) pentru orice i = 0,1,n. Forma polinomului de
interpolare Lagrange este:
Metode Numerice


131
L
n
(x) = y
0
b
0
(x) + y
1
b
1
(x) + + y
n
b
n
(x)
unde b
i
sunt polinoame de grad n. Punnd condiiile L
n
(x
i
) = y
i
pentru orice i
= 0, 1, , n , se obine
b
i
(x) =
( )( ) ( )( ) ( )
( )( ) ( )( ) ( )
n i 1 i i 1 i i 1 i 0 i
n 1 i 1 i 1 0
x x ... x x x x .... x x x x
x x ... x x x x .... x x x x


+
+

i deci
L
n
(x) =
( )( ) ( )( ) ( )
( )( ) ( )( ) ( )

=
+
+


n
0 i
n i 1 i i 1 i i 1 i 0 i
n 1 i 1 i 1 0
i
x x ... x x x x .... x x x x
x x ... x x x x .... x x x x
y


Algoritm pentru determinarea polinomului Lagrange

Date de intrare:
n numrul de puncte distincte din [a, b] este n +1
xy tablou ce conine pe prima linie cele n+1 puncte distincte din
intervalul [a, b], iar pe a doua linie valorile corespunztoare ale funciei.

x
0
x
1
x
n
y
0
y
1
y
n

x punctul n care se evaluaez polinomul.
Date de ieire:
lx - valoarea polonimului n x

lx : =0;
pentru i = 0,n,1 executa
t : =y
i
;
pentru j = 0,i - 1,1 executa
t: = t * (x x
j
)/ (x
i
x
j
)

pentru j = i + 1,n,1 executa
t: = t * (x x
j
)/ (x
i
x
j
)


lx : = lx + t;


Procedur MAPLE pentru calculul valorii polinomului Lagrange

>Lagrange := proc(n, xy, x)
local lx, i, j, t;
lx := 0;
Mdlina Roxana Buneci


132
for i from 0 to n do
t := xy[2, i];
for j from 0 to i - 1 do
t := t*(x - xy[1, j])/(xy[1, i] - xy[1, j])
od;
for j from i + 1 to n do
t := t*(x - xy[1, j])/(xy[1, i] - xy[1, j])
od;
lx := lx + t
od;
RETURN(lx)
end;

Procedura de mai jos are drept parametri o funcie f un numr n i un
tablou x ce conine n+1 puncte distincte din domeniul de definiie al lui f .
Procedura ntoarce un tablou xy ce conine pe prima linie cele n+1 puncte
distincte, iar pe a doua linie valorile corespunztoare ale funciei.

>tabvalori := proc(f, n, x)
local xy, i;
xy := array(1 .. 2, 0 .. n);
for i from 0 to n do
xy[1, i] := evalf(x[i]);
xy[2, i] := evalf(f(x[i]))
od;
RETURN(xy)
end;

Exemple

> f: =(x->ln(x)*sin(x^5+2)/x+x^7/(1+x^(1/2)));

x - >
( ) ( )
x 1
x
x
2 x sin x ln
7 5
+
+
+

> x1:=array(0..4,[0.4,0.6,0.8,1,1.2]);

x1 := array(0 .. 4, [
0) = .4
1) = .6
(2) = .8
(3) = 1
(4) = 1.2
Metode Numerice


133
])
> xy1:=tabvalori(f,4,x1);
xy1 := xy
> Lagrange(4,xy1,0.8);

-.09207484030

> evalf(f(0.8));

-.0920748403

> Lagrange(4,xy1,0.9);

.1738917140

> evalf(f(0.9));

.1841466329

>with(plots);
> plot([f(x),Lagrange(4,xy1,x)],x=0.2..1.4);


> plot([f(x),Lagrange(4,xy1,x)],x=0.2..0.4);

Mdlina Roxana Buneci


134




>plot([f(x),Lagrange(4,xy1,x)],x=0.4..0.6);



> Lagrange(4,xy1,1.9);
12.91425926
> evalf(f(1.9));
37.92008534
> plot([f(x),Lagrange(4,xy1,x)],x=1..2);


Metode Numerice


135

> x2:=array(0..4,[1,2,3,4,5]);
x2 := array(0 .. 4, [
(0) = 1
(1) = 2
(2) = 3
(3) = 4
(4) = 5
])
> xy2:=tabvalori(f,4,x2);
xy2 := xy
> Lagrange(4,xy2,2);
53.20270210
> evalf(f(2));
53.20270208
> Lagrange(4,xy2,1.9);
10.1492169
> evalf(f(1.9));
37.92008534
> Lagrange(4,xy2,19);
.2380404278 10
8
> evalf(f(19));
.1668013797 10
9



III.3. Polinomul Newton de interpolare de spea I
(ascendent)

Fie f : [a, b] R o funcie, fie x
0
, x
1
, , x
n
n+1 puncte distincte din
intervalul [a, b], i y
i
= f(x
i
) pentru orice i = 0,1,n. Punctele x
0
, x
1
, , x
n
se
presupun echidistante, adic
x
i
= x
0
+ ih, i = 0,1, , n
h fiind pasul reelei. Pentru determinarea polinomului de grad mai mic sau
egal cu n ce satisface relaiile:
P
n
(x
i
) = y
i
, i = 0, 1, , n .
se pleac de la un polinom de forma:
) x x )...( x x )( x x ( C
... ) x x )( x x ( C ) x x ( C C ) x ( P
1 n 1 0 n
1 0 2 0 1 0 n

+
+ + + + =

Coeficienii C
0
, C
1
, , C
n
se determin lund n considerare
condiiile P
n
(x
i
) = y
i
, i = 0, 1, , n . Pentru exprimarea acestor coeficieni
este necesar cunoaterea noiunilor de putere generalizat i diferen finit.
Mdlina Roxana Buneci


136
Fie f : [a, b] R o funcie, i fie reeaua cu nodurile echidistante x
0
,
x
1
, , x
n
, avnd pasul h > 0. Produsul
x
[n]
= x(x-h)(x-(n-1)h)
se numete putere generalizat a lui x. Dac h ar fi 0, atunci puterea
generalizat ar coincide cu puterea obinuit. Expresia
f(x) = f(x+h) - f(x)
se numete diferen finit (la dreapta) de ordinul nti. Diferenele finite
de ordin superior se definesc cu ajutorul relaiei:

n
f(x) = (
n-1
f(x))

Se verific cu uurin relaiile
(f+g) = (f) +(g)
(cf) = c(f)

(m+n)
(f) =
m
(
n
f).

Pentru aplicaii, calculul diferenelor finite este comod dac se construiete
tabelul diagonal urmtor:

f(x
0
) f(x
1
) f(x
2
) f(x
3
) f(x
n-3
) f(x
n-2
) f(x
n-1
) f(x
n
)
f(x
0
) f(x
1
) f(x
2
) f(x
n-3
) f(x
n-2
) f(x
n-1
)

2
f(x
0
)
2
f(x
1
)
2
f(x
n-3
)
2
f(x
n-2
)

3
f(x
0
)
3
f(x
n-3
)



n
f(x
0
)

Astfel
) x ( f ) x ( f ) x ( f
0 1 0
=
) x ( f ) x ( f 2 ) x ( f
)) x ( f ) x ( f ( ) x ( f ) x ( f
) x ( f ) x ( f ) x ( f
0 1 2
0 1 1 2
0 1 0
2
+ =
=
=

) x ( f ) x ( f 3 ) x ( f 3 ) x ( f
) x ( f ) x ( f ) x ( f
0 1 2 3
0
2
1
2
0
3
+ + =
=

Se poate demonstra prin inducie c
( ) ( ) ( ) ( ) h i n x f C 1 x f
i
n
n
0 i
i n
+ =

=

dar n aplicaii se va folosi tabelul diagonal de mai sus.
Metode Numerice


137
Pentru determinarea coeficientului C
i
al polinomului de interpolare P
n
se
utilizeaz diferena finit de ordinul i a lui P
n
n x
0
. Se obine:
( )
[ ]
( )
[ ]
( )
[ ]
( )
[ ] n
0
n
0
n
3
0
3
0
3
2
0
2
0
2
1
0
0
0 n
x x
h ! n
) x ( f
....
x x
h ! 3
) x ( f
x x
h ! 2
) x ( f
x x
h ! 1
) x ( f
) x ( f ) x ( P

+ +
+

+ =
Expresia polinomului de interpolare de mai sus poart denumirea de polinom
Newton de spea I (sau ascendent ). Expresia polinomului Newton se poate
pune sub o form mai comod pentru aplicaii, dac se face schimbarea de
variabil
h
x x
t
0

=
i se ine seama c
( )
[ ]
( ) ( ) ( ) ( )
( )( ) ( ) 1 i t .... 2 t 1 t t
h
h ) 1 i ( x x
....
h
h 2 x x
h
h x x
h
x x
h
x x
0 0 0 0
i
i
0
+ =

=


pentru orice i = 1,2,,n.
Se obine
) 1 n t )...( 1 t ( t *
! n
) x ( f
....
) 2 t )( 1 t ( t *
! 3
) x ( f
) 1 t ( t *
! 2
) x ( f
t
! 1
) x ( f
) x ( f
) h * t x ( P ) x ( P
0
n
0
3
0
2
0
0
0 n n
+

+ +
+

+ =
+ =

Aproximarea funciei f prin polinomul Newton ascendent este
avantajos pentru valorile x din vecintatea lui x
0
, eroarea fiind mic pentru t
n modul mic.

Algoritm pentru determinarea polinomului Newton ascendent

Date de intrare:
n numrul de puncte echidistante din [a, b] este n +1
x0- primul punct din reea
h pasul reelei
y tablou ce conine valorile funciei n punctele reelei.

y
0
y
1
y
n
y
i
= f(x
i
) =f(x0 + ih), i = 0,1,, n

Mdlina Roxana Buneci


138
x punctul n care se evalueaz polinomul.

Date de ieire:
px - valoarea polinomului n x

px : =y
0
; t : = (x-x0)/h; u: = 1;
pentru i = 0,n-1,1 executa
pentru j =n-1,i,0,-1 executa
y
j+1
:= y
j+1
y
i
;

pentru i = 1,n,1 executa
u :=u*(t-i+1)/i;
px:=px+u*y
i
;



Procedur MAPLE pentru calculul valorii polinomului Newton de
spea I (ascendent)


>pnewton1 := proc(n, x0, h, y, x)
local t, u, yl, i, j, px;
yl := array(0 .. n);
for i from 0 to n do yl[i] := y[i] od;
px := yl[0];
t := (x - x0)/h;
u := 1;
for i from 0 to n - 1 do
for j from n - 1 by -1 to i do
yl[j + 1] := yl[j + 1] - yl[j]
od
od;
for i to n do
u := u*(t - i + 1)/i;
px := px + u*yl[i] od;
RETURN(evalf(px))
end;


Procedura tabval de mai jos are drept parametri o funcie f, primul
punct din reeaua de n+1 puncte, x0, i pasul reelei, h. Procedura ntoarce un
tablou unidimensional ce conine valorile funciei n punctele reelei.

Metode Numerice


139

>tabval := proc(f, n, x0, h)
local y, i;
y := array(0 .. n);
for i from 0 to n do
y[i] := f(x0 + i*h) od;
RETURN(evalm(y))
end;

Exemple


> f: =(x->ln(x)*sin(x^5+2)/x+x^7/(1+x^(1/2)));

x - >
( ) ( )
x 1
x
x
2 x sin x ln
7 5
+
+
+


> y1:=tabval(f,4,0.4,0.2);
y1 := y
> pnewton1(4,0.4,0.2,y1,0.8);
-.0920748400
> evalf(f(0.8));
-.0920748403
> pnewton1(4,0.4,0.2,y1,0.9);
.1738917144
> evalf(f(0.9));
.1841466329
> with(plots);
> plot([f(x),pnewton1(4,0.4,0.2,y1,x)],x=0.2..1.4);

>plot([f(x),pnewton1(4,0.4,0.2,y1,x)],x=0.2..0.4);
Mdlina Roxana Buneci


140
>
>plot([f(x),pnewton1(4,0.4,0.2,y1,x)],x=0.4..0.6);

> pnewton1(4,0.4,0.2,y1,1.9);
12.91425931
> evalf(f(1.9));
37.92008534
> plot([f(x),pnewton1(4,0.4,0.2,y1,x)],x=1..2);

> y2:=tabval(f,4,1,1);
y2 := y
> pnewton1(4,1,1,y2,2);
53.20270208
> evalf(f(2));
53.20270208
> pnewton1(4,1,1,y2,1.9);
10.1492169
> evalf(f(1.9));
37.92008534
Metode Numerice


141

> pnewton1(4,1,1,y2,19);
.2380404277 10
8
> evalf(f(19));
.1668013797 10
9



III.3. Polinomul Newton de interpolare de spea II
(descendent)

Fie f : [a, b] R o funcie, fie x
0
, x
1
, , x
n
n+1 puncte distincte din
intervalul [a, b], i y
i
= f(x
i
) pentru orice i = 0,1,n. Punctele x
0
, x
1
, , x
n
se
presupun echidistante, adic
x
i
= x
0
+ ih, i = 0,1, , n
h fiind pasul reelei. Pentru determinarea polinomului de grad mai mic sau
egal cu n ce satisface relaiile:
P
n
(x
i
) = y
i
, i = 0, 1, , n .
se pleac de la un polinom de forma:
) x x )...( x x )( x x ( C
... ) x x )( x x ( C ) x x ( C C ) x ( P
1 1 n n n
1 n n 2 n 1 0 n
+
+ + + + =


Pentru exprimarea coeficienilor C
0
, C
1
, , C
n
se utilizeaz
diferenele finite la stnga lui y
n
.
Expresia
f(x) = f(x) - f(x-h)
se numete diferen finit (la stnga) de ordinul nti. Diferenele finite la
stnga de ordin superior se definesc cu ajutorul relaiei:

n
f(x) = (
n-1
f(x))
Se observ c
f(x) = f(x-h).
n aplicaii, pentru calculul diferenelor finite la stnga se utilizeaz tabelul
diagonal urmtor:

f(x
0
) f(x
1
) f(x
2
) f(x
3
) f(x
n-3
) f(x
n-2
) f(x
n-1
) f(x
n
)
f(x
1
) f(x
2
) f(x
3
) f(x
n-2
) f(x
n-1
) f(x
n
)

2
f(x
2
)
2
f(x
3
)
2
f(x
n-2
)
2
f(x
n
)

3
f(x
3
)
3
f(x
n
)



n
f(x
n
)

Mdlina Roxana Buneci


142
Pentru determinarea coeficientului C
i
al polinomului de interpolare P
n
se
utilizeaz diferena finit de ordinul i a lui P
n
n x
0
. Se obine:
( )
[ ]
( )
[ ]
( )
[ ]
( )
[ ] n
1
n
0
n
3
2 n
3
0
3
2
1 n
2
0
2
1
n
0
0 n
x x
h ! n
) x ( f
....
x x
h ! 3
) x ( f
x x
h ! 2
) x ( f
x x
h ! 1
) x ( f
) x ( f ) x ( P

+ +
+

+ =

Expresia polinomului de interpolare de mai sus poart denumirea de polinom
Newton de spea II (sau descendent ). Expresia polinomului Newton
descendent se poate pune sub o form mai comod pentru aplicaii, dac se
face schimbarea de variabil
h
x x
t
n

=
Se obine
) 1 n t )...( 1 t ( t *
! n
) x ( f
....
) 2 t )( 1 t ( t *
! 3
) x ( f
) 1 t ( t *
! 2
) x ( f
t
! 1
) x ( f
) x ( f
) h * t x ( P ) x ( P
n
n
n
3
n
2
n
n
n n n
+ +

+ +
+ + +

+ +

+ =
+ =

Aproximarea funciei f prin polinomul Newton descendent este
avantajos pentru valorile x din vecintatea lui x
n
, eroarea fiind mic pentru t
n modul mic.

Algoritm pentru determinarea polinomului Newton descendent

Date de intrare:
n numrul de puncte echidistante din [a, b] este n +1
x0- primul punct din reea
h pasul reelei
y tablou ce conine valorile funciei n punctele reelei.

y
0
y
1
y
n
y
i
= f(x
i
) =f(x0 + ih), i = 0,1,, n

x punctul n care se evalueaz polinomul.

Date de ieire:
px - valoarea polinomului n x

px : =y
n
; t : = (x-x0-nh)/h; u: = 1;
Metode Numerice


143
pentru i = 1,n,1 executa
pentru j =0,n-i executa
y
j
:= y
j+1
y
j
;

pentru i = 1,n,1 executa
u :=u*(t+i-1)/i;
px:=px+u*y
n-i
;



Procedur MAPLE pentru calculul valorii polinomului Newton de
spea II (descendent)

>pnewton2 := proc(n, x0, h, y, x)
local t, u, yl, i, j, px;
yl := array(0 .. n);
for i from 0 to n do yl[i] := y[i] od;
px := yl[n];
t := (x - x0 - n*h)/h;
u := 1;
for i to n do
for j from 0 to n - i do
yl[j] := yl[j + 1] - yl[j]
od
od;
for i to n do
u := u*(t + i - 1)/i;
px := px + u*yl[n - i]
od;
RETURN(evalf(px))
end;

Exemple. n exemplele urmtoarea procedura tabval este aceeai din
seciunea precedent.


> f: =(x->ln(x)*sin(x^5+2)/x+x^7/(1+x^(1/2)));

x - >
( ) ( )
x 1
x
x
2 x sin x ln
7 5
+
+
+


> y1:=tabval(f,4,0.4,0.2);
Mdlina Roxana Buneci


144
y1 := y
> pnewton2(4,0.4,0.2,y1,0.8);
-.0920748403
> evalf(f(0.8));
-.0920748403
> pnewton2(4,0.4,0.2,y1,0.9);
.1738917139
> evalf(f(0.9));
.1841466329
> with(plots);
> plot([f(x),pnewton2(4,0.4,0.2,y1,x)],x=0.2..1.4);

>plot([f(x),pnewton2(4,0.4,0.2,y1,x)],x=0.2..0.6);



> plot([f(x),pnewton2(4,0.4,0.2,y1,x)],x=0.8..1.3);

> pnewton2(4,0.4,0.2,y1,1.3);
Metode Numerice


145
2.388973575
> evalf(f(1.3));
2.822982152
> plot([f(x),pnewton2(4,0.4,0.2,y1,x)],x=1..1.5);


> y2:=tabval(f,4,1,1);

y2 := y

> pnewton2(4,1,1,y2,2);
53.20270208
> evalf(f(2));
53.20270208
> pnewton2(4,1,1,y2,5.5);
43779.27126
> evalf(f(5.5));
45511.21075
> pnewton1(4,1,1,y2,55);
.2258417985 10
10
> evalf(f(55));
.1808934564 10
12

III.3. Polinomul Newton cu diferene divizate

Fie f : [a, b] R o funcie, fie x
0
, x
1
, , x
n
n+1 puncte distincte din
intervalul [a, b], i y
i
= f(x
i
) pentru orice i = 0,1,n. Pentru determinarea
polinomului de grad mai mic sau egal cu n ce satisface relaiile:
P
n
(x
i
) = y
i
, i = 0, 1, , n .
se pleac de la un polinom de forma:
Mdlina Roxana Buneci


146
) x x )...( x x )( x x ( C
... ) x x )( x x ( C ) x x ( C C ) x ( P
1 n 1 0 n
1 0 2 0 1 0 n

+
+ + + + =

Pentru exprimarea coeficienilor C
0
, C
1
, , C
n
se utilizeaz diferenele
divizate ale lui.
Expresia
j i ,
x x
) x ( f ) x ( f
) x , x ( f
i j
i j
j i

=
se numete diferen divizat de ordinul nti. Diferenele divizate de ordin
2 se definesc cu ajutorul diferenelor divizate de ordinul nti:
i k
j i k j
k j i
x x
) x , x ( f ) x , x ( f
) x , x , x ( f

=
Cunoscnd diferenele divizate de ordinul m, diferenele divizate de ordinul
m+1 se definesc prin:
1 i m i
1 m i i 1 i m i 1 i i
m i 1 i i 1 i
x x
) x ,..., x , x ( f ) x ,..., x , x ( f
) x ,..., x , x , x ( f
+
+ + +
+ +

=
Polinomul P
n
are forma
) x x )...( x x )( x x )( x ,..., x , x ( f ....
) x x )( x x )( x , x ( f ) x x )( x , x ( f ) x ( f P
1 n 1 0 n 1 0
1 0 2 0 0 1 0 0 n

+ +
+ + =


Algoritm pentru determinarea polinomului Newton descendent

Date de intrare:
n numrul de puncte din [a, b] este n +1
xy tablou ce conine pe prima linie cele n+1 puncte distincte din
intervalul [a, b], iar pe a doua linie valorile corespunztoare ale funciei.

x
0
x
1
x
n
y
0
y
1
y
n
y
i
= f(x
i
), i = 0,1,, n

x punctul n care se evalueaz polinomul.

Date de ieire:
px - valoarea polinomului n x

px : =y
0
; u: = 1;
pentru i = 0,n-1,1 executa
pentru j =n-1,i,0,-1 executa
Metode Numerice


147
y
j+1
:= (y
j+1
y
j
)/(x
j+1
x
j-i
);

pentru i = 1,n,1 executa
u :=u*(x-x
i-1
);
px:=px+u*y
i
;



Procedur MAPLE pentru calculul valorii polinomului Newton cu
diferene divizate


>pnewtond := proc(n, xy, x)
local u, y, i, j, px;
y := array(0 .. n);
for i from 0 to n do
y[i] := xy[2, i]
od;
px := y[0];
u := 1;
for i from 0 to n - 1 do
for j from n - 1 by -1 to i do
y[j + 1] := evalf(
(y[j+1]- y[j]) /
(xy[1, j + 1] - xy[1, j - i]))
od
od;
for i to n do
u := u*(x - xy[1, i - 1]);
px := px + u*y[i]
od;
RETURN(evalf(px))
end;

Exemple. Procedura tabvalori din exemplele urmtoare a fost
definit anterior n seciunea referitoare la polinomul Lagrange.

> f: =(x->ln(x)*sin(x^5+2)/x+x^7/(1+x^(1/2)));

x - >
( ) ( )
x 1
x
x
2 x sin x ln
7 5
+
+
+

> x1:=array(0..4,[0.4,0.6,0.8,1,1.2]);
Mdlina Roxana Buneci


148

x1 := array(0 .. 4, [
(0) = .4
(1) = .6
(2) = .8
(3) = 1
(4) = 1.2
])

> xy1:=tabvalori(f,4,x1);
xy1 := xy
> pnewtond(4,xy1,0.8);
-.0920748400
> evalf(f(0.8));
-.0920748403
> pnewtond(4,xy1,0.9);
.1738917145
> evalf(f(0.9));
.1841466329
> plot([f(x),pnewtond(4,xy1,x)],x=0.2..1.4);


> plot([f(x),pnewtond(4,xy1,x)],x=0.2..0.4);

Metode Numerice


149


>plot([f(x),pnewtond(4,xy1,x)],x=0.4..0.6);

> pnewtond(4,xy1,1.9);
12.91425930
> evalf(f(1.9));
37.92008534
> plot([f(x),pnewtond(4,xy1,x)],x=1..2);

> x2:=array(0..4,[1,2,3,4,5]);
x2 := array(0 .. 4, [
(0) = 1
(1) = 2
(2) = 3
(3) = 4
(4) = 5
])
> xy2:=tabvalori(f,4,x2);
xy2 := xy
> pnewtond(4,xy2,2);
53.20270208
Mdlina Roxana Buneci


150
> evalf(f(2));
53.20270208
> pnewtond(4,xy2,1.9);
10.14921692
> evalf(f(1.9));
37.92008534
> pnewtond(4,xy2,19);
.2380404277 10
8
> evalf(f(19));
.1668013797 10
9



Probleme propuse
Fie funcia f: (0,) R, definit prin f(x) = lg(x). Se presupune c se cunosc
valorile funciei n punctele echidistante x
0
= 1000, x
1
= 1010,, x
5
= 1050.
S se gseasc, folosind un polinom Newton de gradul trei, valoarea funciei
n x=1044 i n x = 1006. S se compare rezultatele obinute folosind
diversele polinoame Newton.
Se d tabelul de valori

x f(x)
1000 3.0000000
1010 3.0043214
1020 3.0086002
1030 3.0128372
1040 3.0170333
1050 3.30211893















Metode Numerice


151

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