begin process at 2012 02 12 03:25:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

factoriel et cosinus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

factoriel et cosinus

lundi 29 octobre 2007 à 12:19:21 | factoriel et cosinus

Endrew

bonjours à tous,
Depuis plusieurs jours, je tente de régler un problème sans succés,
J'essai d'utiliser la série de taylor en C
j'ai donc crée 2 sous prog,
l'un faisant la factoriel, et l'autre le calcul du cos avec la serie de Taylor
je vous expose mon prog:
                                                            // Factoriel
double factoriel(double n)
{
double i=0;
double B=1;
double m;
m=n;
while(m>=1)
 {    
   i=i+1;
   B=B*i;
      m=m-1;
   }
return B;
}
                                                   //Cosinus
double cosinus(double x, double E)
{
double c=0;
int n=1;
while( E<abs(( pow(-1,n))*(pow(x,(2*n)))/factoriel(2*n)))
   {
    //n=n+1;
   c=c+(( pow(-1,n))*(pow(x,(2*n)))/factoriel(2*n));
   n=n+1;
   }
return c;
}

int main(void)
    {
 double a=0.0;
 double E=0.0;
 double x=0.0;
 printf("Saisissez votre valeur, je vais calculer le cosinus!\nsaisissez un nombre:");
 scanf("%lf",&a);
 printf("saisissez une precision Epsilon: ");
 scanf("%lf",&E);
 getchar();
 printf("\nle factoriel de votre valeur est: %f",factoriel(a));
 printf("\nle cosinus de votre valeur est:%f",cosinus(a,E));
 x=cos(a);
 printf("\nle cosinus de %f est %f",a,x);
 getchar();
    }

A la fin de mon prog j'utilise la fonction Cos de la bibliothèque math.h
J'obtien bien un resultat, mais il ne corespond pas du tout à mes atentes,
si quelqu'un pouvait y jeter un petit coup d'oeil et me dire s'il trouve des erreurs
sa serai sympas,

lundi 29 octobre 2007 à 13:16:36 | Re : factoriel et cosinus

Pistol_Pete

Salut
Tu y es presque...
le DL du cos est 1+(-1)^n.........

Toi tu as juste oublié le 1.
Met: double c = 1 ; et ca marche.
Par la meme occasion met n en double: problème de cast dans la fonction pow.
A+
lundi 29 octobre 2007 à 18:57:30 | Re : factoriel et cosinus

Endrew

je te remercie pour la rapiditée de ta réponse,
voila ce que je comprends:
}
                                                   //Cosinus
double cosinus(double x, double E)
{
double c=1;
int n=1;
while( E<abs(( pow(-1,n))*(pow(x,(2*n)))/factoriel(2*n)))
   {
    //n=n+1;
   c=1+(( pow(-1,n))*(pow(x,(2*n)))/factoriel(2*n));
   n=n+1;
   }
return c;
}

Mais tu pourrais être plus précis pour le cast du pow

lundi 29 octobre 2007 à 20:19:15 | Re : factoriel et cosinus

juju12

En fait remplace pow(-1,n) par (double)(1-2*(n&0x1)), c'est un peu plus rapide.
lundi 29 octobre 2007 à 22:31:41 | Re : factoriel et cosinus

Endrew

mh, j'utilise devc++, lorsque je compile il me dit qu'il ne connait pas l'opérateur &,
mais c'est surement moi qui est fait une erreur, je n'est pas encore vu la methode que tu propose juju12, mais merci de ton aide
est-ce que le code que j'ai corrigé  selon Pistol_Pete est correct?
Car le résultat du cosinus avec la méthode Taylor est complétement faux...
mardi 30 octobre 2007 à 08:17:06 | Re : factoriel et cosinus

Pistol_Pete

Salut

Non il ne faut pas que tu changes ta fonction de Taloy, c'est bien c=c+....
Mais il faut juste que tu initialises ta fonction à  1:

#include <stdio.h>
#include <math.h>
double factoriel(double n)
{
double i=0;
double B=1;
double m;
m=n;
while(m>=1)
 {   
   i=i+1;
   B=B*i;
      m=m-1;
   }
return B;
}
                                                   //Cosinus
double cosinus(double x, double E)
{
double c=1,n=1;

while( E<abs(( pow(-1,n))*(pow(x,(2*n)))/factoriel(2*n)))
   {
    //n=n+1;
   c=c+(( pow(-1,n))*(pow(x,(2*n)))/factoriel(2*n));
   n=n+1;
   }
return c;
}

donne bien pour a=20 :
cos(a) = 0.4080
et DL(cos(a))=0.0479
Ca marche impec non?
 
mardi 30 octobre 2007 à 13:57:25 | Re : factoriel et cosinus

Endrew

Non pas du tout,
pour a=20 et E=0.001
cos(a)=0.4080
pour dl(cos(a))=-0.081271


mardi 30 octobre 2007 à 15:10:39 | Re : factoriel et cosinus

Pistol_Pete

Ben alors ca c'est très fort!
Reprend le code que tu as mis dans ton premier post et corrige la ligne que j'ai mis en gras. Chez moi ca marche et je n'es rien changé d'autre.

Tien moi au courant. A+
mardi 30 octobre 2007 à 20:24:33 | Re : factoriel et cosinus

Endrew

olalaa
je comprend plus rien, plus moyen de compiler...
Le message d'erreur suivant s'affiche lors de la compilation,
 `abs' undeclared (first use this function)
Tu utilise quoi comme logiciel Pistol Pete?
mardi 30 octobre 2007 à 20:29:28 | Re : factoriel et cosinus

Endrew

Bon mon probleme avec  `abs' undeclared (first use this function) est réglé, mais ça ne fonctionne tj pas...

1 2

Cette discussion est classée dans : prog, printf, double, cosinus, factoriel


Répondre à ce message

Sujets en rapport avec ce message

Pb peut etre de compilateur ?! Need Help please [ par Orezza ] Orezzasalut à tous, je ne comprends vraiment pas le Pb, le compilateur Visual C++ indique 0 erreur-0 warning, or kand j'execute mon prog des ke je ren HELP!!!! gérer les espace dans mon prog lors des questions [ par Ethylotek ] bijoursvoici le début de mon prog :    printf("Veuillez saisir votre nom:\n");    scanf("%s",name);    printf("Veuillez saisir le nom de votre organis Pile de double [ par Pof ] Bonjour ! voilà j'ai un petit problème avec les std::stack :std::stack stack;stack.push(20);stack.push(10);[...]double a = stack.top();pri comportement étrange ... [ par clempar55 ] J'ai fait un petit programme tout à l'heure pour voir si on pouvait incrementer un double et j'ai fait le test suivant:     double d=32.5;    printf(" Problème de fonction [ par edwix ] Bonjour tout le monde sa fait depuis 2 heures que je travaille sur un projet et je ne comprend pas comment faire pour affecter mes valeur par rapport [ncurses] Double fenêtre [ par keisuke ] Hi all,J'ai un petit soucis. Je voudrais faire, une application qui aura deux fenêtres, à l'aide de ncurses.Seulement, je voudrais, avoir dans la part affichage de tout un double [ par xian240482 ] petit programme : #include #include "stdafx.h" void main() {     double d1 = 3.14159265358979323846;     printf("Pi = %.52f\n",d1);     double d2 = 0 cosinus d'un tableau en c++ [ par keno83 ] Bonjour, je rencontre un probleme en ce moment: j'essaie de faire un cosinus d'un tableau comme ci dessous: cos(V[i+size/2]*(past/Eo)) Et a la compila convertisseur euros / francs [ par jultoys ] Salut,je début en programmation C, j'aimerais réaliser un convertisseur Euros / francs mais j'ai un soucis...En fait ca fonctionne mais quand j'ecris Fonction racine carre puissance et factoriel [ par Samuel0210 ] Bonjour Voila, g creer 3 fonctions pour calculer la racine carre, la puissance et le factoriel de different nombres elles se compile sans erreur mé e


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,732 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales