IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

approximation de la fonction sinus


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut approximation de la fonction sinus
    Bonsoir, je dois maintenant écrire cela mais je n'ai pas la moindre idée pour démarrer à part Comparaison avec la fonction sin d’Ocaml :
    Écrire une fonction compte: float -> int qui prend en argument un flottant x et un flottant e  et qui renvoit le plus petit n tel que sinus x n diffère de sin x d’au plus e.

    Merci beaucoup si vous pouvez me filer un coup de main

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Essaye de formaliser un peu l'exercice :

    Il faut chercher le plus petit n tel que : |sin(nx)-sin(x)| < e
    Il faut donc calculer l'expression |sin(nx)-sin(x)| pour tout n (entier naturel) en partant de n = 0 et en s'arrêtant uniquement lorsque |sin(nx)-sin(x)| < e

    Ce n'est pas si difficile
    Je ne répondrai à aucune question technique en privé

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Il faut faire une fonction récursive?

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par alix30002000 Voir le message
    Il faut faire une fonction récursive?
    Ce n'est pas obligatoire. j'aurais naturellement tendance à ne pas le faire, mais il est tout à fait possible de le faire dans ce cas là, cela dépend de l'orientation de ton exercice.

    Si tu utilises une fonction récursive, il faudra faire 2 fonctions. L'une prendra en plus le n courant et l'autre ne fera qu'à appeler que cette première fonction avec n=0 au début.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    let rec fonction_aux x e n =
    ....
     
    let fonction x e = 
      fonction_aux x e 0;;
    Je ne répondrai à aucune question technique en privé

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Je pense pas qu'il faut faire cela car on dit dans l'énoncé qu'il faut mettre que deux arguments ( x et e) . Il faut faire comment sinon sans utiliser de fonction récursive? Merci pour ton aide

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par alix30002000 Voir le message
    Je pense pas qu'il faut faire cela car on dit dans l'énoncé qu'il faut mettre que deux arguments ( x et e) . Il faut faire comment sinon sans utiliser de fonction récursive? Merci pour ton aide
    Avec une boucle while.

    Mais personne ne te donnera le code tout fait
    Je pense que tu as eu assez d'indication pour l'instant. Revient avec quelque chose et on pourra t'aider si ton code ne fonctionne pas
    Je ne répondrai à aucune question technique en privé

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    J'ai pas vu encore en cours le while.

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par alix30002000 Voir le message
    J'ai pas vu encore en cours le while.
    Alors utilise des fonctions récursives.
    Je ne répondrai à aucune question technique en privé

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      let rec compte x e n = if n=0 then e else  abs(sin(compte(x e n+1)*.x)-.sin(x))<e ;;

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Si tu fais tourner cette fonction, tu verras qu'elle s'arrête dès le début. De plus, je te rappelle que la fonction doit retourner "le plus petit n" (donc un n et non un e). De plus, la condition (if) ne doit pas s'effectuer sur n.
    Je ne répondrai à aucune question technique en privé

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    Je comprends pas. Je vois pas comment faire.

  12. #12
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par alix30002000
    Je comprends pas. Je vois pas comment faire.
    Citation Envoyé par millie Voir le message
    [...] en s'arrêtant uniquement lorsque |sin(nx)-sin(x)| < e
    Pour la condition d'arrêt à placer dans if, cela doit bien t'aider.

    Citation Envoyé par millie Voir le message
    [...] pour tout n (entier naturel) en partant de n = 0
    Et ceci pour la récursion.

Discussions similaires

  1. Donner la fonction sinus et la tracer dans un repère
    Par chups0401 dans le forum Pascal
    Réponses: 4
    Dernier message: 28/11/2008, 18h10
  2. Fonction sinus et cosinus
    Par danathane dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 14/10/2008, 16h21
  3. Besoin d'explication : fonction sinus un peu bizarre
    Par Contact2012 dans le forum Signal
    Réponses: 9
    Dernier message: 08/09/2008, 13h25
  4. Tracer une fonction sinus
    Par sirne dans le forum C++
    Réponses: 9
    Dernier message: 11/04/2008, 15h03
  5. Comparaison de deux fonctions sinus
    Par hidies dans le forum MATLAB
    Réponses: 8
    Dernier message: 21/01/2007, 23h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo