Documente Academic
Documente Profesional
Documente Cultură
x n +1
introduse prin trunchierea seriilor la un anumit rang, etc. Spre deosebire de erorile
inerente, erorile de metod pot fi reduse, in principiu, orict de mult.
Erorile de rotunjire sunt legate de posibilitile limitate de reprezentare a
numerelor in calculatoarele numerice. In general, orice calculator poate reprezenta
este baza sistemului de numeraie utilizat, iar n (ntreg) este exponentul. n forma
normalizat mantisa este cuprins in intervalul [b-1, 1)
b 1 f < 1
Singura excepie de la acest regul de reprezentare este numrul zero.
In consecin un numr real cu mai multe cifre semnificative este rotunjit la
numrul de cifre maxim. Acest lucru se realizeaz prin rotunjirea mantisei, Alte
rotunjiri se efectueaz n decursul operaiilor.
In general, notand cu x valoarea exact a numdrului i cu x valoarea calculat
(aproximativ), eroarea absolut ex se definete ca diferena dintre valoarea exact
i cea aproxirnativ
ex = x x
Raportul
ex
se numete eroare relativ, notat deseori cu x
x
x =
ex
x
cu erorile ex respectiv ey
x = x + ex , y = y + e y
Presupunem c se efectueaz produsul numerelor
xy = ( x + ex )( y + e y ) = x y + ye x + x e y
unde s-a neglijat produsul exey considerat ca avnd un ordin do mrime suficient de
mic. Rezult eroarea la nmulire
exy
xy
ex e y
+ = x + y
x
y
unde am neglijat termenii de grad superior lui 2 in ex i ey. S-a folosit dezvoltarea
n serie Taylor pentru
1
1 y + ... . Rezult c eroarea relativ la mprire,
1+ y
ex
y
x
y
= x y
x
, pe care o vom nota cu d , astfel nct eroarea relativ
y
x + y = x + y + ex + e y
astfel nct eroarea relativa la sumare este
ex+ y
x+y
(e
+ ey )
(x + y )
x
y
+
(x + y ) x (x + y ) y
ets =
x
y
x +
y + es
x+y
x+y
E = ( x + y )z ( x + y )z
Solutie:
etE =
x
y
x +
y + e z + es + e p
x+y
x+y
cu marginea
x + y
etE 15 10 t
+ 3
x+y
I n = x n e x 1dx
0
1 In
, n = N , N 1,...
n
I n = 1 nI n 1 , n = 1,2 ,...
0
1
3
7
9
13
17
20
0.632121
0.367879
0.207277
0.112383
0.091586
-0.377925
-
I n 1 =
1 In
, n = N , N 1,...
n
0.632121
0.367879
0.207277
0.112383
0.091612
0.066948
0.052778
0.000000
Una dintre cele mai vechi i mai generale formule de interpolare este cea
datorat lui Lagrange.
S presupunem ca n intervalul [a, b] sunt specificate n+1 valori ale argumentului,
x0, x2, , xn, i valorile corespunztoare ale unei funcii f(x)
f(xi) = yi ,
i = 0, 1, 2, ,n
x xk
xk
k =0 i
f ( xi ) x
i =0
(1)
k i
M ( x x0 ) ... ( x xn )
( n + 1)!
y yk
y yk
k =0 i
xi
i =0
(2)
k i
S consideram funcia
x.
f ( x) =
121
144
169
f(x)
11
12
13
Pentru
valoare
1104
565
intervalul
[121,169],
1200
de
exemplu
x=130
3
130 11.401754 . Deoarece f ' ' ' ( x ) = x 2 =>
8
f ' ' ' este monoton descrescatoare pe I = [121 ,169 ], deci maximul pentru f ' ' ' va fi
3
8
Rezolvarea n Scilab:
end
endfunction
n fereastra de comand se definesc mai nti vectorii ce conin valorile
1
1
1
1
; x 2 = ; x 3 = i x = .
6
4
2
5
1
1
1
; x 2 = ; x 3 = . S se reprezinte grafic i s se compare graficele cu
6
4
2
0.0
1.0
2.0
3.0
4.0
5.0
0.0
20.0
60.0
68.0
77.0
110.0
Definiie: Fie f : [a , b] R i x0, x1,, xn n+1 puncte distincte din [a, b]. Se
numesc diferene divizate de ordinul nti ale lui f urmtoarele expresii:
f [ x0 , x1 ] =
f ( x1 ) f ( x0 )
f ( x2 ) f ( x1 )
f ( xn ) f ( xn 1 )
, f [ x1 , x2 ] =
, ..., f [ xn 1 , xn ] =
x1 x0
x2 x1
xn xn 1
f [ xi +1 , xi + 2 ,..., xi + k +1 ] f [ xi , xi +1 ,..., xi + k ]
x i + k +1 xi
x x0
( x x0 )( x x1 )
( x x0 )...( x xn 1 )
... + n y0
+ 2 y0
2
1! h
2! h
n! hn
i
Pn 2 ( x ) = yn + yn
x xn
( x xn )( x xn 1 )
( x xn )( x xn 1 )...( x x1 )
... + n yn
+ 2 yn
1! h
2! h2
n! hn
x x0
atunci polinomul de interpolare Newton cu
h
t
t ( t 1)
t ( t 1)...(t n + 1)
... + n y0
+ 2 y0
.
1!
2!
n!
xn x
atunci polinomul de interpolare Newton cu
h
t
t ( t + 1)
t ( t + 1)...(t + n 1)
... + n yn
+ 2 yn
.
1!
2!
n!
Exemplu:
0.5
1.5
yi
1.1276
1.5431
2.3534
yi
2yi
1.1276
y0 = 0.1276
2y0 = 0.2879
1.5431
y1 = 0.4755
1.5
2.3534
y2 = 0.8103
2y1 = 0.3948
y3
2 y3
xi
f(xi)=yi
0.5
3yi
2y1 = 0.1069
3 y3
P31 (0.25) = 1 +
P3 2 (1.25) = 2.3534 +
+
0.1069
3!0.53
0.8103
0.3948
(1.25 1.5) +
(1.25 1.5)(1.25 1) +
1!0.5
2!0.52
(1.25 1.5)(1.25 1)(1.25 0.5) = 1.89222
Se definete un functia:
function pol=newtonDivizate(x,y,v)
n=length(x);
for i=1:n-1
for k=n:-1:i+1
y(k)=(y(k)-y(k-1))/(x(k)-x(k-i))
end
end
pol=y(n);
for i=n:-1:2
pol=pol*(v-x(i-1))+y(i-1);
end
endfunction
i
12
, n = 0,5 i f(x)=sin(x) n x =
.
5
25
pol=pol*(v-x(i-1))+y(i-1);
end
endfunction
x=[0 %pi/5 %pi*2/5 %pi*3/5 %pi*4/5 %pi];
y=sin(x);
newtonDivizate(x,y,%pi*12/25)
sin(%pi*12/25)
ans = 0.9977572
ans = 0.9980267
Rezolvare: (cu diferene finite la dreapta)
function pol=newtonDifFinDr(a,h,n,y,v)
for i=1:n
x(i)=a+(i-1)*h;
end
for i=1:n-1
for k=n:-1:i+1
y(k)=y(k)-y(k-1)
end
end
pol=y(1);p=1;
for i=2:n
p=p*(v-x(i-1))/((i-1)*h)
pol=pol+y(i)*p;
end
endfunction
x=[0 %pi/5 %pi*2/5 %pi*3/5 %pi*4/5 %pi];
y=sin(x);
newtonDifFinDr(0,%pi/5,6,y,%pi*12/25)
sin(%pi*12/25)
ans = 0.9977572
ans = 0.9980267
Exercitii
1. S se calculeze valoarea aproximativ a funciei f(x)=sin(x)+cos(x) n
punctul 1/6, folosind polinomul Newton cu diferene divizate pe reeaua
xj=j*0.25, j= 0,3 .
2. S se scrie polinomul lui Newton cu diferene finite la stnga pentru funcia
f(x)=sin(x) pe reeaua xj=j*0.25, j= 0,3 n punctul 0.65.
3. S se calculeze valoarea aproximativ a funciei f(x)=cos(x)+1 n punctul
1/5, folosind polinomul lui Newton cu diferene divizate pe reeaua
xI=i*0.25, i= 0,3 .
( 1)n i n n (q j )
1 n
d
L(a , a + h,..., a + nh; f )( x ) = yi
h i 0 i!( n i )! k = 0 j = 0
dx
k i j i ,k
unde x = a + qh, h =
ba
n * .
n
1 n i y 0 '
Pi ' ( t ) unde
finite la dreapta are formula: P ( t ) =
h i =1 i!
'
Pi' ( t ) =
1
x x0
pentru t {1,2,.., i 1} i t =
.
t
k
+
1
h
k =1
Pi ( t )
Rezolvarea n Scilab:
f=1;
for i=1:n
f=f*i;
end
endfunction
function DerivLagrange(a,n,h,v)
for i=1:n+1
x(i)=a+(i-1)*h;
y(i)=x(i)^3;
end
q=(v-a)/h;
s1=0;
for i=1:n+1
s2=0;
for k=1:n+1
if k~=i
p=1;
for j=1:n+1
if (j-i)*(j-k)~=0
p=p*(q+1-j);
end
end
s2=s2+p;
end
end
s1=s1+s2*y(i)*(-1)^(n+1-i)/(factorial(i-1)*factorial(n+1-i));
end
d=s1/h
endfunction
Se definesc n fereastra de comand a, n, h i v i apoi se apelaz DerivLagrange:
a=0;
n=10;
h=0.1;
v=0.55;
DerivLagrange(a,n,h,v)
d = 0.90750000000000
Exercitii
1.699
1.740
1.778
1.813
pentru x=57.
( j 1)
, j = 1,4 .
4
s( xi ) = yi , i = 1, n ;
pe
s : [a , b] R, s C 2 ([a , b])
fiecare
subinterval
cu
[ xi , xi +1 ] ,
2 ( yi +1 yi ) m i + 1 + m i
3 ( yi +1 yi ) m i +1 + 2m i
+
; i =
;
2
hi
hi 3
hi 2
hi
unde:
i +1 =
y
3
y yi
yi + 1
hi +1
hi
.
, i +1 =
hi i + 2
+ hi +1 i +1
i d i +1 =
hi + hi +1
hi + hi +1
hi + hi +1
hi +1
hi
x
1 + 10 x
2
3
Rezolvarea n Scilab:
function [m,alfa,beta]=fspline(x,y)
n=length(x);
for i=1:n-1
h(i)=x(i+1)-x(i);
end
for i=1:n-2
la(i+1)=h(i+1)/(h(i)+h(i+1));
ro(i+1)=h(i)/(h(i)+h(i+1));
d(i+1)=3*(h(i)/h(i+1)*(y(i+2)-y(i+1))+h(i+1)/h(i)*(y(i+1)y(i)))/(h(i)+h(i+1));
end
a=zeros(n,n);
la(1)=1;ro(n)=1;a(n,n-1)=1;a(1,2)=1;
d(1)=3*(y(2)-y(1))/h(1)-h(1)/2;
d(n)=3*(y(n)-y(n-1))/h(n-1)-h(n-1)/2;
for i=1:n
a(i,i)=2;
end
for i=2:n-1
a(i,i+1)=la(i);
a(i,i-1)=ro(i);
end
m=a^(-1)*d';
for i=1:n-1
alfa(i)=3*(y(i+1)-y(i))/(h(i)^2)-(m(i+1)+2*m(i))/h(i);
beta(i)=-2*(y(i+1)-y(i))/(h(i)^3)+(m(i+1)+m(i))/(h(i)^2);
end
endfunction
Exerciiu:
0.5
1.5
yi
1.1276
1.5431
2.3534
Denumire funcie
interpln
linear_interpn
splin
interp
derivative
Semnificaie
Interpolare liniar
Interpolare liniar n dimensional
Interpolare cu funcii spline cubice
Funcii spline cubice de evaluare a unei funcii
Aproximarea derivatelor unei funcii
40
30
20
10
-10
-20
-30
-40
-10
10
20
30
40
50
z = 2*sin(x')*sin(y);
xx = linspace(0,2*%pi, 40);
[xp,yp] = ndgrid(xx,xx);
zp = linear_interpn(xp,yp, x, y, z);
xbasc()
plot3d(xx, xx, zp, flag=[2 6 4])
[xg,yg] = ndgrid(x,x);
param3d1(xg,yg, list(z,-9*ones(1,n)), flag=[0 0])
xtitle("Interpolare biliniar pentru 2sin(x)sin(y)")
legends("Puncte de interpolare",-9,1)
xselect()
Bilinear interpolation of 2sin(x)sin(y)
-0.5
-1.9
4
Y
0.9
interpolation points
4
5
5
6
6
7
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
-5
-4
-3
-2
-1
interpolation spline
exact function