Sunteți pe pagina 1din 4

METODE NUMERICE

8. Aproximarea functiilor
Polinoame de interpolare (II)

3. Polinom CEBISEV

Polinoamele Cebisev, utilizate frecvent pentru dezvoltarea unor functii, satisfac urmatoarea
relatie de recurenta:

Ti +1 ( x ) − xTi ( x ) + Ti −1 ( x ) = 0
T0 ( x ) = 1, T1 ( x ) = x

Programul urmator prezinta implementarea in C++ a polinomului Cebisev intr-un punct dat
x.

/*
Polinomul CEBISEV
*/
#include<iostream.h>
#include<conio.h>
void main(void)
{
double t0,t1,tk,x;
int n,k;
clrscr();
cout<<"Introduceti datele polinomului:"<<endl;
cout<<" x = ";
cin>>x;
cout<<"Dati gradul polinomului CEBISEV n = ";
cin>>n;
t0 = 1.0;
t1 = x;
for(k=2; k<=n; k++)
{
tk =1.0/k * (2 * x * t1 - t0 );
t0 = t1;
t1 = tk;
}
cout<<"Polinomul Cebisev este :"<<endl;
cout<<"\t\t\t"<<tk;
getch();
}

4. Polinom LAGUERRE

Polinoamele Laguerre ortogonale, cu x ∈ (0,+∞) satisfac urmatoarea relatie de recurenta:

P0 ( x ) = 1, P ( x) = 1 − x

1
METODE NUMERICE

Pk ( x ) =
1
[(2k − 1)Pk −1 ( x) − ( k − 1) Pk − 2 ( x )], pentru k = 2,3,..., n.
k
Programul urmator prezinta implementarea in C++ a polinomului Laguerre intr-un punct
dat x.

/*
Polinomul LAGUERRE
*/
#include<iostream.h>
#include<conio.h>
void main(void)
{
double p0,p1,pk,x;
int n,k;
clrscr();
cout<<"Introduceti datele polinomului:"<<endl;
cout<<" x = ";
cin>>x;
cout<<"Dati gradul polinomului n = ";
cin>>n;
p0 = 1.0;
p1 = 1 - x;
for(k=2; k<=n; k++)
{
pk =1.0/k * ( (k*2-1) * p1 - (k-1) * p0 );
p0 = p1;
p1 = pk;
}
cout<<"Valoarea polinomului LAGUERRE este : "<<endl;
cout<<"\t\t\t\t\t"<<pk<<endl;
getch();
}

Programul urmator prezinta implementarea in C++ a polinomului Laguerre intr-o multime


de valori x.

/*
Polinoamele LAGUERRE in mai multe puncte
*/
#include<iostream.h>
#include<conio.h>
void main(void)
{
double x[100], y[100];
double p0,p1,pk;
int m,n,k,i;
clrscr();
cout<<"Introduceti datele polinomului:"<<endl;
cout<<"Dati gradul polinomului LAGUERRE n = ";
cin>>n;
cout<<" In cate puncte se face calculul m = ";
cin>>m;
for(i=1;i<=m;i++)
{

2
METODE NUMERICE

cout<<"Punctul x_"<<i<<" ";


cin>>x[i-1];
}
cout<<"======== Rezultate ========"<<endl;
for(i=1;i<=m;i++)
{
p0 = 1.0;
p1 = 1 - x[i-1];
for(k=2; k<=n; k++)
{
pk =1.0/k * ( (k*2-1) * p1 - (k-1) * p0 );
p0 = p1;
p1 = pk;
}
y[i-1] = pk;
cout<<x[i-1]<<"\t\t"<<y[i-1]<<endl;
}
getch();
}

5. Polinom LEGENDRE

Polinoamele Legendre, cu x ∈ (0,+∞) satisfac urmatoarea relatie de recurenta:

P0 ( x) = 1, P( x) = x

Pk ( x ) =
1
[(2k − 1)Pk −1 ( x) − ( k − 1) Pk −2 ( x)], pentru k = 2,3,..., n.
k
Programul urmator prezinta implementarea in C++ a polinomului Legendre intr-un punct
dat x.

/*
Polinomul LEGENDRE
*/
#include<iostream.h>
#include<conio.h>
void main(void)
{
double p0,p1,pk,x;
int n,k;
clrscr();
cout<<"Introduceti datele polinomului:"<<endl;
cout<<" x = ";
cin>>x;
cout<<"Dati gradul polinomului LEGENDRE n = ";
cin>>n;
p0 = 1.0;
p1 = x;
for(k=2; k<=n; k++)

3
METODE NUMERICE

{
pk =1.0/k * ((k * 2 - 1) * x * p1 - (k - 1) * p0 );
p0 = p1;
p1 = pk;
}
cout<<"Polinomul Legendre este :"<<endl;
cout<<"\t\t\t"<<pk;
getch();
}

6. Polinom HERMITE

Polinoamele Hermite ortogonale, cu x ∈ R satisfac urmatoarea relatie de recurenta:

P0 ( x) = 1, P( x) = 2 x
Pk ( x ) = 2 xPk −1 ( x ) − 2(k − 1) Pk − 2 ( x ), pentru k = 2,3,..., n.
Programul urmator prezinta implementarea in C++ a polinomului Hermite intr-un punct dat
x.

/*
Polinomul HERMITE
*/
#include<iostream.h>
#include<conio.h>
void main(void)
{
double p0,p1,pk,x;
int n,k;
clrscr();
cout<<"Introduceti datele polinomului:"<<endl;
cout<<" x = ";
cin>>x;
cout<<"Dati gradul polinomului HERMITE n = ";
cin>>n;
p0 = 1.0;
p1 = 2 * x;
for(k=2; k<=n; k++)
{
pk = 2 * x * p1 - (k - 1) * 2 * p0 ;
p0 = p1;
p1 = pk;
}
cout<<"Polinomul Hermite este :"<<endl;
cout<<"\t\t\t"<<pk;
getch();
}

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