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

Python Discussion :

arrêter l'itération d'une fonction racine


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut arrêter l'itération d'une fonction racine
    bonjour,
    comment arrêter l'itération quand la valeur de r est suffisamment proche de la valeur exacte de la racine recherchée.

    étant donné le programme:
    début
    r = 1
    répéter
    r =(r + n / r) / 2
    fin
    le coder convenablement en PYTHON et le faire tourner"; limiter les répétitions";

    ce que j'ai pu faire
    mais je trouve pas comment arretter l'itération ?!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def racine(n) :
    	r = 1
    	for x in range(10):
    		r = (r + (n/r))/ 2 
    	return r
     
    >>> racine(25.0)
    5.0
    >>> racine(2.0)
    1.414213562373095
    >>> racine(28.0)
    5.291502622129181
    >>> racine(144.0)
    12.0
    merci

  2. #2
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    Salut,

    Je ne sait pas si c'est précisément ce que tu cherches, mais en Python, dans les boucles FOR et WHILE, tu peut utiliser le mot clé BREAK afin d'interrompre la boucle (voir ICI)

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    Bonjour,

    Pour compléter Deusyss, la function "racine" devrait prendre selon moi trois paramètres:
    • la valeur dont on veut la racine
    • le nombre max d'itérations
    • la tolérance

    La tolérance, par exemple tol, te permet de definir à partir de quand stopper le calcul. Si abs(val(k)-val(k-1)) < tol (soit si la valeur actuelle de la racine moins celle trouvée pendant la précédente boucle est inférieur à une certaine tolerance) on stop le calcul meme si on a pas atteint le nombre max d'itérations. Avec break comme l'a dit Deusyss par exemple.

    Tu as à donc definir 2 conditions pour stopper le calul. Je partirais sur une boucle while pour ma part.


    J

  4. #4
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    Citation Envoyé par Julien N Voir le message
    Bonjour,

    Pour compléter Deusyss, la function "racine" devrait prendre selon moi trois paramètres:
    • la valeur dont on veut la racine
    • le nombre max d'itérations
    • la tolérance

    La tolérance, par exemple tol, te permet de definir à partir de quand stopper le calcul. Si abs(val(k)-val(k-1)) < tol (soit si la valeur actuelle de la racine moins celle trouvée pendant la précédente boucle est inférieur à une certaine tolerance) on stop le calcul meme si on a pas atteint le nombre max d'itérations. Avec break comme l'a dit Deusyss par exemple.

    Tu as à donc definir 2 conditions pour stopper le calul. Je partirais sur une boucle while pour ma part.


    J
    *abs(val(k)-val(k-1)) < tol je n'es pas compris ??!!! tant que la racine carré est proche de la valeur en stop mais comment l'écrire sa !!!

  5. #5
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    def racine(n) :
    r = 1
    for x in range(10):
    r = (r + (n/r))/ 2
    while (n - r ** 2) = 0
    break
    return r

    je vois pas comment écrire que si n - r ** 2 est égal presque a 0 !!! car la veut dire que l'erreur est petite

  6. #6
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    On est pas non plus oblige de respecter à la letter ce que le prof a dit...

    Mais bon, si tu écris while (n - r ** 2) = 0, tu devrais pouvoir écrire while abs(n - r ** 2) > tol. Le truc, c'est qu'on cherche ici une valeur approchée, pas exacte. On ne cherche pas à savoir si l'erreur est nulle, mais plutôt à savoir si l'erreur est plus faible qu'une certaine tolerance. Autrement dit, est-ce suffisament juste?

    Je mets une valeur absolue, par ce que la difference peut être negative.

    Ju

  7. #7
    Membre très actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 208
    Par défaut
    non je pense pas car dans le cours le prof a dit :
    Il serait sans doute souhaitable que le programme s’arrête au bout d’un certain temps, par exemple après avoir répété un certain nombre de fois les calculs, ou bien quand la valeur de r est suffisamment proche de la valeur exacte de la racine recherchée. (On peut évaluer facilement cette erreur ; plus n - r2 se rapproche de 0 et plus l’erreur est petite.)

    :s

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] arrêter le déroulement d'une fonction
    Par Guy FALESSE dans le forum IHM
    Réponses: 4
    Dernier message: 20/11/2013, 18h27
  2. [Débutant] Tracer d'une fonction racine carrée
    Par ktolajumel dans le forum MATLAB
    Réponses: 5
    Dernier message: 30/06/2013, 17h39
  3. Recherche de la racine mini d'une fonction inconnue - Le retour
    Par plegat dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 19/11/2007, 22h37
  4. calculer les racines d'une fonction
    Par carole8 dans le forum C
    Réponses: 18
    Dernier message: 06/12/2006, 00h14
  5. Recherche de la racine mini d'une fonction inconnue
    Par plegat dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 31/07/2006, 19h39

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