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

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

VII.2 - Méthode De Bernoulli

Objectif : Recherche d'une racine d'un polynôme

Cette méthode est utilisée pour trouver une racine d'un polynôme

Pn.(x) = aoxn + aixn +
·
·
· + an Qui sera transformé en une équation

récurrente aoy(m + n) + aiy(m + n -- 1) +
·
·
· + any(m)

Elle est basée sur le principe suivant : on donne les valeurs suivantes y(0), y(1),..., y (n-1) (solution particulière) et on va calculer y(n), y (n+1),...

--1

a (aiy(m + n -- 1) +
·
·
· + any(m))

o

aoy(m + n) =

On a lorsque m?8, l'expression y (m+1)/y(m) tends vers la racine du polynôme

Le programme

//TP13 Calcul Numerique //Methode de Bernoulli

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

int bernoulli(double *pol,double *sol,int dgr,double &r,int Kmax=10,double eps=0.3) {double tmp=0;

double *p=(double*)malloc((dgr+1)*sizeof(double));

//on sauvegarde pol inverse dans p pour utiliser p dans la fct poly(math.h) for(int t=0;t<=dgr;t++) p[t]=pol[dgr-t];

//on divise les coef par le 1er coef*-1

//afin de construire la suite

for(t=1;t<=dgr;t++) pol[t]*=-(1.0/pol[0]);

//sol[i+1]/sol[i] tend vers la racine

for(t=0;t<dgr;t++)

{if(!sol[t]) continue;

tmp=sol[t+1]/sol[t];

tmp=poly(tmp,dgr,p);

if(fabs(tmp)<eps) {r=sol[t+1 ]/sol[t] ;free(p);return 1; }

}

//calcul des elements de la suite

for(int k=0;k<Kmax;k++)

{tmp=0;

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

tmp+=pol[i] *sol[i- 1];

sol[dgr]=tmp;

tmp=sol[dgr]/sol[dgr- 1];

tmp=poly(tmp,dgr,p);

if(fabs(tmp)<eps) {r=sol[dgr]/sol[dgr- 1] ;free(p);return 1; }

else

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

sol[i]=sol[i+1 ];

}

cout<<"pas de convergence vers la solution";

free(p);

return 0;

}

void main()

{cout<<"Entrer le degre du polynome n :";

int dgr;cin>>dgr;//degre du poly

cout<<"Entrer les coefficient a partir du plus haut degre\n";

double *pol=(double*)malloc((dgr+1 )*sizeof(double));

//lecture des coef

for(int i=0;i<=dgr;i++)

{ cout<<"a"<<i<<"=";

cin>>pol[i];

}

double * SolPart=(double*)malloc((dgr+1 )*sizeof(double)); cout<<"Entrer la solution particuliere\n";

//lecture de la solution particuliere

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

{ cout<<"s"<<i<<"=";

cin>>SolPart[i];

}

double racine;

if(bernoulli(pol,SolPart,dgr,racine)) cout<<"racine approchee ="<<racine; free(pol);free(SolPart);//liberation memoire

getch();

}

précédent sommaire






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Nous devons apprendre à vivre ensemble comme des frères sinon nous allons mourir tous ensemble comme des idiots"   Martin Luther King