écrire un algorithme pour calculer sin(x) sans les fonction (langage C)
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

écrire un algorithme pour calculer sin(x) sans les fonction (langage C)



  1. #1
    Amineyahouni

    Unhappy écrire un algorithme pour calculer sin(x) sans les fonction (langage C)


    ------

    Bonjour ,

    écrire un algorithme capable de calculer sin(x) sachant que
    Nom : Capture86.PNG
Affichages : 2263
Taille : 2,7 Ko

    j'ai commencée par écrire un algorithme pour le calcule de N! et celui pour calculer cette somme puis après je bloques sur le fait qu'il faut arrêté les calcul lorsque le diff entre deux terme successif et inférieur a une certaine tolérance epsilon donnée

    pouvez-vous m'aidée ?
    Merci d'avance

    -----

  2. #2
    minushabens

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    Je pense qu'au lieu d'écrire une fonction qui calcule la factorielle, il vaut mieux utiliser le calcul du terme d'ordre n-1 pour calculer le terme d'ordre n+1. tu peux remarquer que, si on pose f(n)=x^n/n!, alors f(n+1)=-x^2/(n(n+1))*f(n-1) et f(1)=x

  3. #3
    andre_teprom

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    Vous pouvez utiliser l'algorithme CORDIC, qui est une alternative qui consomme peu de ressources du microcontrôleur:

    https://fr.wikipedia.org/wiki/CORDIC

  4. #4
    andre_teprom

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    Citation Envoyé par minushabens Voir le message
    Je pense qu'au lieu d'écrire une fonction qui calcule la factorielle, il vaut mieux utiliser le calcul du terme d'ordre n-1 pour calculer le terme d'ordre n+1. tu peux remarquer que, si on pose f(n)=x^n/n!, alors f(n+1)=-x^2/(n(n+1))*f(n-1) et f(1)=x
    Cette estimation ne serait pas réalisé par la série de Maclaurin?

    Ok, pardon, c'est la même chose....
    Images attachées Images attachées  
    Dernière modification par andre_teprom ; 09/12/2015 à 12h16.

  5. A voir en vidéo sur Futura
  6. #5
    lou_ibmix_xi

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    Citation Envoyé par andre_teprom Voir le message
    Vous pouvez utiliser l'algorithme CORDIC, qui est une alternative qui consomme peu de ressources du microcontrôleur:

    https://fr.wikipedia.org/wiki/CORDIC
    C'est une solution, une autre peut-être d'utiliser des "look-up table" et de l'interpolation pour les valeurs intermédiaires... Mais je ne pense pas que ce soit vraiment l'objet de la question qui ressemble plus à un exercice...

    il faut arrêté les calcul lorsque le diff entre deux terme successif et inférieur a une certaine tolérance epsilon donnée
    Je ne vois pas vraiment ce qui t'embête là-dedans. Il y a une ambiguïté dans l'énoncé (il me semble), c'est les termes successifs (à sommer), ou les résultats successifs (somme de 0 à n et somme de 0 à n+1) dont la différence doit être inférieure à epsilon ? La 2ème interprétation me semble plus "logique", mais je pense qu'elles sont équivalente (à un facteur sur l'epsilon prêt). Ceci dit, ça ne change finalement pas grand chose, il faut que tu sauvegardes le résultat (ou la somme) dans ta boucle pour pouvoir le comparer le coup d'après, quelque chose comme:
    Code:
    float result = 1000.0;
    float prev_result;
    while ((condition) && (fabs(result - prev_result) > epsilon))
         prev_result = result;
         result = ...;
    }

  7. #6
    polo974

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    bonjour,
    1. penser à initialiser prev_result pour éviter un floating point exception (le jour de la présentation, car en debug, ça marche toujours)...
    2. ramener x dans la plage +/- pi
    3. mémoriser le terme courant pour l'exploiter au tour suivant (ne pas recalculer le x puissance n ni les factorielles à chaque fois)
    4. précalculer mx2 = - x*x ; (pour point 3.)
    5. ...
    Jusqu'ici tout va bien...

  8. #7
    aadelo

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    Citation Envoyé par minushabens Voir le message
    si on pose f(n)=x^n/n!, alors f(n+1)=-x^2/(n(n+1))*f(n-1) et f(1)=x
    f(n+1) = x^2/(n(n+1))*f(n-1) , il n'ya pas moin dans l'expression de f(n+1)

    puisque f(n-1) = x^n/(x)*((n-1)!)

  9. #8
    CM63

    Re : écrire un algorithme pour calculer sin(x) sans les fonction (langage C)

    f(n+1)= f(n) * X / (n+1)

Discussions similaires

  1. Langage LaTeX pour écrire les formules
    Par Eurole dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 29/09/2018, 09h42
  2. TS écrire un algorithme pour nombres complexes
    Par invite4642fb97 dans le forum Mathématiques du collège et du lycée
    Réponses: 0
    Dernier message: 02/11/2011, 18h53
  3. Calculer l'image d'un réel par la fonction exponentielle sans calculatrice
    Par jojo525 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 10/11/2010, 23h24
  4. algorithme pour controler l'iris d'une camera (langage c)
    Par inviteb1dc4efc dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 14/03/2008, 16h02
  5. Calculer l'inverse d'une fonction sans matrice ?
    Par herman dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 05/01/2008, 16h52