Endrew
Messages postés8Date d'inscriptionlundi 29 octobre 2007StatutMembreDernière intervention 9 juin 2009
-
29 oct. 2007 à 12:19
Endrew
Messages postés8Date d'inscriptionlundi 29 octobre 2007StatutMembreDernière intervention 9 juin 2009
-
5 nov. 2007 à 21:41
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,
Endrew
Messages postés8Date d'inscriptionlundi 29 octobre 2007StatutMembreDernière intervention 9 juin 2009 29 oct. 2007 à 18:57
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
Endrew
Messages postés8Date d'inscriptionlundi 29 octobre 2007StatutMembreDernière intervention 9 juin 2009 29 oct. 2007 à 22:31
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 30 oct. 2007 à 15:10
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.
Endrew
Messages postés8Date d'inscriptionlundi 29 octobre 2007StatutMembreDernière intervention 9 juin 2009 30 oct. 2007 à 20:24
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?
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 30 oct. 2007 à 22:37
Je compile avec Visual c++ 2005
Et toi c'est quoi ton compilateur?
Sinon je ne vois pas pourquoi ca ne marche pas chez toi. Il va falloir dérouler les opérations étape par étape.
Demain je te donnerai tous les résultats intermédiaires que j'obtiens, on pourra ainsi visualiser l'erreur.
A+
while( Ej'ai pris a=10
Je pense que le problem vient des très grand nombre générer par les factoriels et les puissance.
Essaie de prendre un E plus faible: E=0.1 pour commencer
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 1 nov. 2007 à 10:54
heu... pow(-1,n) ... c'est pas correct, faut eviter d'appeller pow avec des valeurs negatives
pour le premier argument, la solution du debut etait tres bonne : (1-2*(n&1))
ou on peut proposer aussi (n&1? -1 : +1)
une petite question : a quoi ca sert de vouloir refaire sa propre fonction cosinus si tu utilises
en fin de compte la fonction pow ...
Pourquoi faire simple quand on peut faire compliqué ?