Inscription / Connexion Nouveau Sujet
Niveau Maths sup
Partager :

Python-zéro de fonctions

Posté par
alb1du29
12-04-17 à 16:19

Bonjour, je fais des exercices sur les zéros de fonctions. Je dois commencer par la méthode de la dichotomie et j'ai donc réalisé le programme ci dessous, mais il me renvoie 1, alors qu'il devrait me renvoyer "une liste des 50 premières valeurs de l'algorithme de dichotomie sous forme de chaines de caractères.".
La fonction a été définie et les bornes sont a=1 et b=2.

from math import*
from decimal import*
a=1
b=2
getcontext().prec=100

def f(x):
    return (x**2)-2

def dichotomie(a,b,n):
    for i in range(n):
        m=(a+b)/2
        if f(a)*f(m)<=0:
            b=m
        else:
            a=m
    return m

Posté par
bbomaths
re : Python-zéro de fonctions 12-04-17 à 16:32

Bonjour.

Est-il possible d'avoir le "main" ?

Posté par
alb1du29
re : Python-zéro de fonctions 12-04-17 à 16:48

Le main ?

Posté par
bbomaths
re : Python-zéro de fonctions 12-04-17 à 16:52

le code qui appelle la fonction dichotomie()

Posté par
alb1du29
re : Python-zéro de fonctions 12-04-17 à 17:12

Je ne vois pas trop de quoi vous voulez parler...

from math import*
from decimal import*
a=1
b=2
getcontext().prec=100

def f(x):
    return (x**2)-2

def dichotomie(a,b,n):
    for i in range(n):
        m=(a+b)/2
        if f(a)*f(m)<=0:
            b=m
        else:
            a=m
    return m

def secante(a,b,n):
    for i in range(n):
        a=a-f(a)*(b-a)/(f(b)-f(a))
    return a


Python-zéro de fonctions

Posté par
bbomaths
re : Python-zéro de fonctions 12-04-17 à 17:27


# *** import ****************

# module specifique pour le systeme
import sys

# module pour le système d'exploitation
import os

# *** globals ***************

a = 0.0
b = 0.0
n = 0

# *** def *******************

def f(x):

    return (x**2) - 2

def dichotomie(a, b, n) :

    for i in range(n):

        m = (a + b) / 2

        print " a = % 10.6f n = % 10.6f b = % 10.6f" % (a, m, b)

        if f(a) * f(m) <= 0 :

            b = m

        else :

            a = m

        return m

# *** main ******************

# effacement de l'ecran
os.system('cls')

print "\n"

a = float(input("entrez la borne inf. a : "))

b = float(input("entrez la borne sup. b : "))

n = int(input("entrez le nombre d'iterations n : "))

m = dichotomie(a, b, n)

Posté par
verdurin
re : Python-zéro de fonctions 12-04-17 à 19:03

Bonsoir.
Ta fonction retourne un nombre (la valeur de m après n itérations).

Citation :
mais il me renvoie 1, alors qu'il devrait me renvoyer "une liste des 50 premières valeurs de l'algorithme de dichotomie sous forme de chaines de caractères.".

Elle n'a aucune raison de renvoyer une liste de valeurs sous une forme quelconque si tu ne lui demandes pas.

Posté par
bbomaths
re : Python-zéro de fonctions 12-04-17 à 19:10

C'est une de mes raisons pour réclamer le "main"...

Posté par
verdurin
re : Python-zéro de fonctions 12-04-17 à 19:18

Salut bbomaths, a mon avis il n'y en a pas.
C'est juste tapé comme ça dans l'interpréteur.
Et la fonction renvoie 1 quand on tape ensuite

dichotomie(a, b, n)

Posté par
bbomaths
re : Python-zéro de fonctions 12-04-17 à 19:34

Verdurin, bonsoir.

C'est effectivement une bonne raison... Faudrait qu'ils apprennent à écrire des scripts pour éviter de tout réécrire...

Posté par
jarod128
re : Python-zéro de fonctions 12-04-17 à 20:22

Bonjour.
C'est normal d'avoir 1.
Le return "sort" de la fonction
Et donc la boucle n'est effectué qu'une fois.
Tu dois stocker tes valeurs dans une liste puis la retourner

Posté par
bbomaths
re : Python-zéro de fonctions 12-04-17 à 21:02

Pour éviter tous malentendus, mon code :

Python-zéro de fonctions



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1742 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !