fonction exponentielle par developement limité

fonction exponentielle par developement limité - C - Programmation

Marsh Posté le 26-10-2004 à 11:59:52    

Salut est ce que quelqu un ppourrait me dire comment calculer la valeur approché de e^x par le developpement limité au rang n de la fonction suivante
e^x=1+x/1!+x^2/2!+...x^n/n!
merci d avance pour votre aide

Reply

Marsh Posté le 26-10-2004 à 11:59:52   

Reply

Marsh Posté le 26-10-2004 à 12:10:06    

skoi le rapport avec le c?

Reply

Marsh Posté le 26-10-2004 à 12:43:27    

c parce qu il faut que je fasse un programme en c qui me permet de calculer lavaleur approchée de e^x désolée j ai obliger de preciser que c'etait en c que j aurai besoin d aide car j ai compris la formule mais j ai pas compris comment je pourrai la rentrer en c

Reply

Marsh Posté le 26-10-2004 à 13:03:57    

ok, tu veux savoir quoi precisement, sur quoi tu bloques ?

Reply

Marsh Posté le 26-10-2004 à 14:08:12    

evil alucard a écrit :

c parce qu il faut que je fasse un programme en c qui me permet de calculer lavaleur approchée de e^x désolée j ai obliger de preciser que c'etait en c que j aurai besoin d aide car j ai compris la formule mais j ai pas compris comment je pourrai la rentrer en c


 
Question naïve : connais-tu le C ?

Reply

Marsh Posté le 26-10-2004 à 18:24:07    

Non je ne m y connai pas trop en programmation j ai commencer cet année et en a pas beucoup d heure par semaine mais c pas e^x que je veux ca ca ne devrait pas etre un probleme a trouver c ceux ci que je comprend pas comment faire (calculer la valeur approché de e^x par le developpement limité au rang n de la fonction suivante  
e^x=1+x/1!+x^2/2!+...x^n/n)

Reply

Marsh Posté le 26-10-2004 à 20:30:52    

Le programme tient en 4 lignes :  
* tu demandes n
* tu demandes x
* tu fais une boucle (for) qui somme chaque element du dl
* tu affiches le résultat

Reply

Marsh Posté le 26-10-2004 à 21:23:31    

Merci je vais essayer avec ca

Reply

Marsh Posté le 29-01-2005 à 09:48:07    

Si ca interresse voila le code complet du prog
Je l'ai fait hier vite fait donc y a peut etre des trucs a optimiser mais la "philosophie" de tous les codes avec les developpements limite est la
 
#include<stdio.h>
#include<math.h>
//declaration fonction
float x;float s;float k;float den;float num;float r;
//main
int main()
{
//parametre entree
printf("exp(x) :  " );
scanf("%f",&x);
printf("seuil  :  " );
scanf("%f",&s);
//initialisation
r=1;k=1;den=1;num=1;
//calcul
while(abs((den*x)/(num*k))>=s)
  {
  den=den*x;
  num=num*k;  
  k=k+1;
  r=r+(den/num);
  }
printf("result :  %f",r);
printf("\n" );
}
 
Ps je suis debutant alors y a sans doute a ameliorer...
@+

Reply

Marsh Posté le 29-01-2005 à 11:15:24    

Chris641 a écrit :

Si ca interresse voila le code complet du prog
<...>
Ps je suis debutant alors y a sans doute a ameliorer...


... comme l'utilisation des balises 'fixed' ou 'cpp' avec les boutons [Fixe] ou  [C/C++]
 
Sinon, voici ton code remis en forme et commenté (-ed-) :


#include<stdio.h>
#include<math.h>
 
//declaration fonction
/* -ed-
 * Bizarre le commentaire... ce sont des variables, non ?
 * les // ne sont pas standard en C90
 */
float x;
float s;
float k;
float den;
float num;
float r;
/* -ed-
 * Pourquoi des globales ?
 * Pourquoi des float() ?
 * Les calculs se font en 'double'.
 */
 
//main
/* -ed-
 * mieux vaut preciser que main() n'a pas de parametre
int main ()
 */
int main (void)
{
//parametre entree
   printf ("exp(x) :  " );
/* -ed-
 * Attention, pourqu'une chaine sorte,
 * elle doit etre terminée par un '\n',
 * sinon, il faut appeler fflush(stdout).
 *
 * Pour les nuls en maths comme moi, peut etre faudrait-il preciser
 * (et de toutes facons, tester) les domaines des variables 'humaines' ...
 */
   
   scanf ("%f", &x);
/* -ed-
 * scanf() n'est pas une fonction de debutant.
 * Au minimum, il faut tester la valeur retournee.
 *
 * Il est preferable d'utiliser fgets()
 * et la fonction de conversion qui va bien.
 */
 
   printf ("seuil  :  " );
   scanf ("%f", &s);
//initialisation
   r = 1;
   k = 1;
   den = 1;
   num = 1;
//calcul
/* -ed-
 * La, je te fais confiance...
 * Les maths, c'est pas mon truc.
 *
 * toutefois, abs(), c'est pour des entiers.
 * Pour des flottants, c'est fabs().
   
   while (abs ((den * x) / (num * k)) >= s)
 */
 
   while (fabs ((den * x) / (num * k)) >= s)
   {
      den = den * x;
      num = num * k;
      k = k + 1;
      r = r + (den / num);
 
/* -ed-
 * il ya une facon plus 'C' d'ecrire ca,
 
      den *= x;
      etc.
       
 * mais c'est correct.
 * Attention quand meme aux risques de debordements.
 * Les limites sont exprimees par des constantes definies
 * dans <limits.h> et <float.h>
 */
 
   }
   printf ("result :  %f", r);
   printf ("\n" );
   
/* -ed-
 * pourquoi un '\n' separe ?
 * Ce n'est pas faux, juste un peu plus complique que necessaire...
 */
 
/* -ed-
 * comme main() retourne int,
 * il faut preciser la valeur retournee
 * (obligatoire en C90)
 */
   return 0;
}


 
Quelques précisions:
 
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fflush_stdout


Message édité par Emmanuel Delahaye le 29-01-2005 à 11:17:44

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed