Langage C: Calculer un sinus?
Alien Nation
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Yuku Messages postés 199 Date d'inscription Statut Membre Dernière intervention -
Yuku Messages postés 199 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans le cadre d'un cours de programmation, nous sommes amenés à devoir créer une application console permettant de calculer le sinus d'un nombre. Nous ne pouvons pas nous servir de "math.h". Je pense donc qu'il faut utiliser les series.
Il faut creer 2 variantes du programme:
Variante 1 : en fixant le nombre d’itérations
Variante 2 : en fixant la précision du calcul
Mais je n'y arrive vraiment pas.
J'ai trouvé la formule du sinus sur le net mais je n'arrive pas à l'utiliser dans une application.
(Sin (x) = X - X3/ 3! + X5/ 5! - ... + (-1)(n+1) * X(2*n-1)/ (2n-1)!)
Je verrai la solution en cours cette semaine mais ça me trotte tellement dans la tête...
J'espère que vous pourrez m'aider et je vous remercie à l'avance pour vos réponses.
Amicalement,
Alien
Dans le cadre d'un cours de programmation, nous sommes amenés à devoir créer une application console permettant de calculer le sinus d'un nombre. Nous ne pouvons pas nous servir de "math.h". Je pense donc qu'il faut utiliser les series.
Il faut creer 2 variantes du programme:
Variante 1 : en fixant le nombre d’itérations
Variante 2 : en fixant la précision du calcul
Mais je n'y arrive vraiment pas.
J'ai trouvé la formule du sinus sur le net mais je n'arrive pas à l'utiliser dans une application.
(Sin (x) = X - X3/ 3! + X5/ 5! - ... + (-1)(n+1) * X(2*n-1)/ (2n-1)!)
Je verrai la solution en cours cette semaine mais ça me trotte tellement dans la tête...
J'espère que vous pourrez m'aider et je vous remercie à l'avance pour vos réponses.
Amicalement,
Alien
A voir également:
- Sinus en c
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
8 réponses
Bon, je l'ai un peu amélioré quand même en rajoutant pas mal d'infos mais tu trouveras dedans le sinus :
#include <cstdlib> #include <iostream> #include <math.h> using namespace std; double Somme(double x, double n); double Difference(double x, double n); double Produit(double x, double n); double Quotient(double x, double n); double Puissance(double x, double n); double Exponentielle(double x, double n); double Factorielle(double X); double Sinus(double x, double n); double Cosinus(double x, double n); int CheckDigit(int x); int Reste(int x, int n); int main(int argc, char *argv[]) { double x = 0, puissance = 0, exponentielle = 0, sinus = 0, cosinus = 0, n = 0; double somme = 0, difference = 0, quotient = 0, produit = 0; int checkdigit1 = 0, checkdigit2 = 0, checkdigit = 0, reste = 0; printf(" ==== RAPPORTS ENTRE DEUX NOMBRES ====\n\nCe programme calcule de nombreuses valeurs par rapport a deux nombres.\nIci, x vaudra un nombre normal, et n soit un deuxieme nombre normal,\nsoit une puissance.\n\nEntrez un nombre x... "); scanf("%lf", &x); printf("\nEntrez un nombre n... "); scanf("%lf", &n); sinus = Sinus(x, n); puissance = Puissance(x, n); exponentielle = Exponentielle(x, n); cosinus = Cosinus(x, n); somme = Somme(x, n); difference = Difference(x, n); produit = Produit(x, n); quotient = Quotient(x, n); checkdigit1 = CheckDigit(x); checkdigit2 = CheckDigit(n); checkdigit = checkdigit1 + checkdigit2; reste = Reste(x, n); printf("\n\n______________________________________\n______________________________________\n\nSomme : %.2lf.", somme); printf("\nDifference : %.2lf.", difference); printf("\nProduit : %.2lf.", produit); printf("\nQuotient : %.2lf.", quotient); printf("\nReste : %d.", reste); printf("\nSomme des chiffres de x : %d.", checkdigit1); printf("\nSomme des chiffres de n : %d.", checkdigit2); printf("\nSomme des chiffres de x et de n : %d.", checkdigit); printf("\nPuissance : %.2lf.", puissance); printf("\nExponentielle : %.2lf.", exponentielle); printf("\nSinus : %.2lf.", sinus); printf("\nCosinus : %.2lf.\n______________________________________\n______________________________________\n\n\n", cosinus); system("PAUSE"); return EXIT_SUCCESS; } double Puissance(double x, double n) { double Resultat = 1; double Compteur = 0; do{ Resultat *= x; Compteur++; }while(Compteur < n); return Resultat; } double Factorielle(double X) { double Compteur = 1, Total = 2; do{ Total = Total*Compteur; Compteur++; }while(Compteur <= X); return Total; } double Exponentielle(double x, double n) { double Compteur = 1, Total = 1; do{ Total += (pow(x, Compteur)/Factorielle(Compteur))*2; Compteur++; }while(Compteur <= n); return Total; } double Sinus(double x, double n) { double Compteur = 1, Total = 0, Res = 0; do{ if(Compteur<=n) { Res = ((pow(x, Compteur))/(Factorielle(Compteur)))*2; Total = Total + Res; Compteur = Compteur + 2; } else { return Total; } if(Compteur<=n) { Res = ((pow(x, Compteur))/(Factorielle(Compteur)))*2; Total = Total - Res; Compteur = Compteur + 2; } else { return Total; } }while(Compteur<=n); return Total; } double Cosinus(double x, double n) { double Compteur = 0, Total = 0, Res = 0; do{ if(Compteur<=n) { Res = ((pow(x, Compteur))/(Factorielle(Compteur)))*2; Total = Total + Res; Compteur = Compteur + 2; } else { return Total; } if(Compteur<=n) { Res = ((pow(x, Compteur))/(Factorielle(Compteur)))*2; Total = Total - Res; Compteur = Compteur + 2; } else { return Total; } }while(Compteur<=n); return Total; } double Somme(double x, double n) { double Total = 0; Total = x+n; return Total; } double Difference(double x, double n) { double Total = 0; Total = x-n; return Total; } double Produit(double x, double n) { double Total = 0; Total = x*n; return Total; } double Quotient(double x, double n) { double Total = 0; if(n != 0) {Total = x/n;} else {Total == 0;} return Total; } int CheckDigit(int x) { int ch1 = 0, ch2 = 0, ch3 = 0, ch4 = 0, ch5 = 0, ch6 = 0; int rs1 = 0, rs2 = 0, rs3 = 0, rs4 = 0, rs5 = 0, rs6 = 0; ch1 = x / 100000; rs1 = x % 100000; ch2 = rs1 / 10000; rs2 = rs1 % 10000; ch3 = rs2 / 1000; rs3 = rs2 % 1000; ch4 = rs3 / 100; rs4 = rs3 % 100; ch5 = rs4 / 10; rs5 = rs4 % 10; ch6 = rs5 / 1; rs6 = rs5 % 1; return ch1+ch2+ch3+ch4+ch5+ch6; } int Reste(int x, int n) { int Resultat = 0; Resultat = x%n; return Resultat; }
Oui, déjà tu ramènes le X à un intervalle compris entre -Pi et Pi par soustraction de kPi.
Et ensuite tu utilises une approximation avec ta série entière.
Avec des boucles, tu pourras facilement calculer X-X*X*X/3 ! etc.
Fais par de ta recherche et on t'aidera. A noter que si tu cherches sur le forum, la réponse a déjà été résolue ;)
Et ensuite tu utilises une approximation avec ta série entière.
Avec des boucles, tu pourras facilement calculer X-X*X*X/3 ! etc.
Fais par de ta recherche et on t'aidera. A noter que si tu cherches sur le forum, la réponse a déjà été résolue ;)
Le problème c'est que certains ont la bosse des maths, moi c'est plutot un creux...
Est ce que tu pourrais me donner quelques explications par un code et quelques commentaires a l'interieur?
Ou tout simplement me donner le lien du sujet qui traite de ça.
J'ai envie de le faire par moi même mais je ne vois vraiment pas comment procéder.
Les maths me tueront :(
Est ce que tu pourrais me donner quelques explications par un code et quelques commentaires a l'interieur?
Ou tout simplement me donner le lien du sujet qui traite de ça.
J'ai envie de le faire par moi même mais je ne vois vraiment pas comment procéder.
Les maths me tueront :(
Ce que je te demande ce n'est pas des maths mais de la simple recherche.
Allez pour t'aider : http://www.commentcamarche.net/forum/affich 8936182 euh o x
Bonne lecture
Allez pour t'aider : http://www.commentcamarche.net/forum/affich 8936182 euh o x
Bonne lecture
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pas besoin de using namespace std. Pas besoin d'inclure iostream ni cstdlib mais inclue plutôt stdio.h et stdlib.h.
Le mélange de C et C++ c'est pas tip top ;)