0% au considerat acest document util (0 voturi)
37 vizualizări5 pagini

Lab 3

Încărcat de

Valeria Serioghina
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
37 vizualizări5 pagini

Lab 3

Încărcat de

Valeria Serioghina
Drepturi de autor
© Attribution Non-Commercial (BY-NC)
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

Universitatea Tehnic a Moldovei

Catedra: Informatica aplicat





RAPORT

La lucrarea de laborator Nr.3


Disciplina Metode Numerice



Tema: Interpolarea funciilor






A efectuat: st. gr. SI-122

Fanari V.

A verificat asist. univ.

Nebelciuc V.



Chiinu 2013

Scopul lucrarii:
Pentru funcia f :[a,b] R se cunosc valorile y
i
=f(x
i
), i=0,1,,n n punctele distincte a=x
0
, x
1
,
,x
n
=b.
1) S se construiasc polinomul de interpolare Lagrange L
n
(x) ce aproximeaz funcia dat.
2) S se calculeze valoarea funciei f(x) ntr-un punct x= utiliznd polinomul de interpolare
Lagrange L
n
(x).

Datele propuse:

x 0.125 0.243 0.367 0.498 0.597 0.701 0.867
y 3.4561 4.9845 5.1439 3.9301 1.7895 -1.234 -2.983

Punctul x= este : a) 0.183 ; b) 0.3012 ; c) 0.4563 ; d) 0.6500

Teorie:
Fie funcia y=f(x) dat sub forma unei tabele de valori :
x x
0
x
1
x
n
y y
0
y
1
y
n

unde y
i
=f(x
i
) i=0,1,2,n
Exist numeroase procedee de interpolare pentru gsirea unor valori intermediare ale lui
f(x) pentru xx
i
, i=0,1,..n. De foarte multe ori pentru aproximarea funciilor prin interpolare se
utilizeaz polinoamele algebrice :
P
n
(x)=a
n
x
n
+a
n-1
x
n-1
++a
1
x+a
0

Aceasta se datoreaz c funcia f(x) poate fi aproximat foarte bine cu ajutorul curbelor a cror
reprezentare analitic sunt polinoame( teorema Weierstrass ). Pe de alt parte, valoarea
polinomului se calculeaz uor (cu ajutorul schemei lui Horner). Nu apar dificulti i la
integrarea sau derivarea polinoamelor. Pentru ca un polinom P
n
(x) de grad.n s interpoleze
funcia dat, trebuie ca valorile sale n nodurile x
0
,x
1
,x
n
s coincid cu valorile funciei, adic :
P
n
(x)=y
i
, i=0,1,,n.
Se demonstrez c condiiile de interpolare determin un polinom unic, care se poate exprima
sub forma:
[
=
=
=
|
|
|
.
|

\
|

=
n
i j i
j
n
i j
j
i n
x x
x x
y x L
0 0
) (
Polinomul L
n
(x) se numete polinomul de interpolare Lagarange.
n multe cazuri concrete de interpolare a funciei f(x) nu e necesar determinarea formei
analitice a polinomului Lagrange, ci doar calculul valorii funciei ntr-un punct dat, diferit de
nodurile de interpolare, eroarea calculelor fiind cunoscut. n aa situaii importante pentru
aplicaii se va utiliza schema lui Aitken. Procedura de calcul const n faptul, c ncepnd cu 2
puncte de interpolare, treptat n calcule se includ noduri noi pn se va obine precizia dorit.
Algoritmul schemei Aitken presupune efectuarea urmtorilor pai :
Pe intervalul [x
i
, x
i+1
] se aplic polinomul Lagrange de interpolare liniar:
L
i
,
i+1
=y
i
+ y
i+1
, unde i=0,1,...,n.
Apoi L
i,i+1,i+2,...,n
= ,j=2,3,,n-2
pn cnd |L
0,1,2
(x)-L
0,1
(x)|,,|L
1,2,,m
(x)-L
0,1,m-1
(x)|< , unde >0 precizia dat i m<n.









Rezultatele obtinute :
















Fig. 1 punctul x=0.183













Fig. 2 punctul x=0.3012
1
1
+
+

i i
i
x x
x x
i i
i
x x
x x

+1
0
1 ,..., 2 , 1
0 1 ,..., 2 , 1 ,
x x
x x L
x x L
j i
n n i i
n i i i

+
+ +
+ +













Fig. 3 punctul x=0.4563
















Fig. 4 punctul x=0.6500


Concluzie:
n cadrul efectuarii acestei lucrari de laborator am facut cunostinta cu interpolarea
functiilor si anume polinomul de interpolare Lagrange L
n
(x). Acest polinom calculeaza valoarea
functiei intr-un punct dat atunci cand discretizarea intervalului [a,b] de interpolare in
subdomenii este neuniforma.











Anexa :
#include<conio.h>
#include<iostream.h>

double l(int N, float X[], float Y[], float x1)
{
float ln=0, b=1;
int i, j;

for(i=0; i<N; i++)
{
b=1;

for(j=0;j<N;j++)
if(j!=i) b*=(x1-X[j])/(X[i]-X[j]);

ln+=Y[i]*b;
}
return(ln);
}

int main(void)
{
float a[10], b[10], x;
int i, num;

cout<<"Indicati numarul de noduri de interpolare:\n";
cin>>num;
cout<<"Introduceti elementele tabloului absciselor nodurilor(x=):\n";

for(i=0; i<num; i++) cin>>a[i];

cout<<"Introduceti elementele tabloului valorilor functiei in aceste puncte(y=):\n";

for(i=0;i<num;i++) cin>>b[i];

cout<<"Introduceti punctul in care doriti sa se efectueze interpolarea:\n";
cin>>x;
cout<<"\n Valoarea functiei in punctul dat este: "<<l(num,a,b,x)<<endl;
getch();
}

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