WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

TPs Calcul Numérique

( Télécharger le fichier original )
par Salim Merazga
Oum El Bouaghi - 3eme informatique 2007
  

précédent sommaire suivant

Extinction Rebellion

II.1 - Méthode De Newton

Objectif : Obtention d'un polynôme à partir d'une table de points

Cette méthode est basée la notion de Différences divisées, où le polynôme d'interpolation est obtenu comme ça :

P~(x) =

f [x0] + (x - x0)f [x0, x1] + (x - x0)(x - x1)f[x0, x1, x2] +

erreur .

Les différences divisées sont obtenues comme suit :

f[x0] = f(x0)

f[x0] - f[x1]

f [x0,x1] =

~ + (x - x0)(x - x1) +
·
·
· + (x - x~_1)f[x0, x1, , x] +

x0 - x1

XO6Xk

Et dans le cas général f[x0, x1, ... ,xk] = f[xo,xl,...,xk_1]--f[xk_1,xk]

Le programme

//TP4 Calcul Numérique //Polynome De Newton

#include<iostream.h> #include<alloc.h> #include<conio.h> #include<math.h>

double **NewMat(int n)//Allocation dynamique du matrice

{double * *tmp=(double* *)malloc(2*sizeof(double*));

for(int i=0;i<2;i++) tmp[i]=(double*)malloc(n*sizeof(double));

return tmp;

}

//Remplissage du tableau des points(Xi,Yi)

void remplir(double **tab,int n)

{ cout<<"Xi:\n";

cout<<"Yi:";

gotoxy(4,wherey()- 1); int x=wherex();

for(int j=0;j<n;j++)

{for(int i=0;i<2;i++)

{cin>>tab[i] [j];

gotoxy(x,wherey());

}

gotoxy(x+=4,wherey()-2);

}

cout<<"\n\n";

}

//Obtention des coefficients du polynome double *coef(double **tab,int n)

{double *tmp=(double*)malloc(n*sizeof(double)); tmp[0]=tab[ 1] [0] ;//premier coef

//deuxime coef tmp[1]=double(tab[1][0]-tab[1][1])/double(tab[0][0]-tab[0][1]);

for(int i=2;i<n;i++)

{double t=double(tab[1][i-1]-tab[1][i])/double(tab[0][i-1]-tab[0][i]); tmp[i]=double(tmp[i- 1] -t)/double(tab[0] [0] -tab[0] [i]);

}

return tmp;

}

//Affichage du polynome

void EcrirePoly(double **tab,double *coef,int n) { cout<<coef[0]<<" ";

for(int i=1 ;i<n;i++)

{if(coef[i] !=0)

{ (coef[i]<0)?cout<<"+("<<coef[i]<<")":cout<<"+"<<coef[i]<<" "; for(int k=0;k<i;k++) cout<<"(X-"<<tab[0] [k]<<")";

}

}

}

void main()

{clrscr();

cout<<"\t\t\t\tPolynome De Newton\n"; cout<<"Entrer le nombre des points n ="; int n;

cin>>n;//nombre des points

double **Tabl=NewMat(n);//table des points cout<<"Enter la table des points\n"; remplir(Tabl,n);

double *cf=coef(Tabl,n);//table des coef cout<<"Le Polynome de Newton\nP(x)="; EcrirePoly(Tabl,cf,n);

free(Tabl);free(cf);//liberation memoire getch();

}

II.2 - Méthode De Lagrange

Obiectif : Obtention d'un polynôme à partir d'une taffe de points

_ _

Le polynôme d'interpolation de Lagrange est obtenu par cette

combinaison :

n

pn (x) = 1 Lk (x)f (xk )

k=0

n

Lk(x) = e x -- xi

xk--xi

i=0,i*k

Le programme

//TP5 Calcul Numerique //Polynome De Lagrange

#include<iostream.h> #include<conio.h> #include<alloc.h>

double **DefPt(int n)//allocation dynamique de la table des points

{double **tmp=(double**)malloc(2*sizeof(double*));

for(int i=0;i<2;i++) tmp[i]=(double*)malloc(n*sizeof(double));

return tmp;

}

//remplissage de la table des points

void remplir(double **tab,int n)

{cout<<"Xi: \n";

cout<<"Yi:";

gotoxy(4,wherey()-1); int x=wherex();

for(int j=0;j<n;j++) {for(int i=0;i<2;i++)

{cin>>tab[i][j];

gotoxy(x,wherey());

} gotoxy(x+=4,wherey()-2);

}

cout<<"\n\n";

}

//calcul et affichage des Lk(x)

int Lk(double **point,int i,int n)

{cout<<"L"<<i<<"(x)=";

double tmp=1;

for(int j=0;j<n;j++)

if(j !=i)

{ cout<<"(x";

if(point[0] [j]<0)

cout<<"+"<<(-1 )*point[0] [j];

if(point[0] [j]>0) cout<<"-"<<point[0] [j];

cout<<")";

tmp*=point[0] [i] -point[0] [j];

}

if(tmp>0)

cout<<"/"<<tmp<<endl;

else

if(tmp<0)

cout<<"/("<<tmp<<")"<<endl;

else

{ cout<<"/"<<tmp<<endl;;

cout<<"\ndivision par zero puisque la condition de points distincts n'est pas

verifiee"<<endl;

return 0;

}

return 1;

}

//affichage du poly d'interpolation de lagrange

void PolyLagrange(double **point,int n)

{for(int i=0;i<n;i++)

{int ok=Lk(point,i,n);

if(!ok) return;

}

cout<<"Pn(x)=";

for(i=0;i<n;i++)

if(point[ 1] [i])

if(i!=n-1)

cout<<point[ 1] [i]<<"L"<<i<<"(x)+";

else

cout<<point[ 1] [i]<<"L"<<i<<"(x)";

}

void main()

{clrscr();

cout<<"\t\t\t\tPolynome De Lagrange\n"; cout<<"Entrer le nombre des points n ="; int n;

cin>>n;//nombre des points

double **Point=DefPt(n);//table des points cout<<"Enter la table des points\n";

remplir(Point,n);

cout<<"Le polynome de Lagrange \n"; PolyLagrange(Point,n);

getch();

}

III - Résolution D'une Equation Non Linéaire De Type f(x) = 0 Dans la pratique, la plupart des problèmes se ramènent à la résolution

d'une équation de la forme : f(x) = 0 , donc le problème consiste à trouver

la racine dont on sait l'existence et dont, parfois, on connaît une valeur approchée.

Les méthodes de résolution sont toujours des méthodes itératives.

précédent sommaire suivant






Extinction Rebellion





Changeons ce systeme injuste, Soyez votre propre syndic





"Je ne pense pas qu'un écrivain puisse avoir de profondes assises s'il n'a pas ressenti avec amertume les injustices de la société ou il vit"   Thomas Lanier dit Tennessie Williams