Programme Python court

Discutez d'informatique ici !
Noona
Messages: 7
Enregistré le: 01 Jan 2012, 23:53

Programme Python court

par Noona » 02 Mar 2015, 22:20

Bonjour,
J'utilise Python depuis environ 1 mois, ce qui fait que je ne sais pas bien m'en servir. On m'a posé l'exercice suivant et mon prof nous a donné une correction approximative que je ne comprends pas donc je fais appel à vous. Il paraît que la procédure est simple ( j'ai d'ailleurs utilisé la méthode de la sécante très maladroitement ), mais je n'arrive pas à écrire de programme digne.
Est-ce que quelqu'un aurait ici une correction à me proposer ?
D'autant plus que j'ai un exercice similaire à réaliser et je ne sais pas par quel bout commencer.

Merci par avance pour votre soutien...

Écrire une fonction secante(a,b,f,max_iter=200) qui prend en entrée deux réels a et b et
une fonction f tels que |f(a)| > |f(b)| > 0, et renvoie une approximation d’un point x;) où
f(x;)) = 0 en itérant la formule de la sécante : xn+1 et le point où s’annule la fonction affine qui
coïncide avec f aux points xn et xn;)1. Pour se garder du cas où cette suite ne converge pas,
on convient de limiter le nombre d’itérations à max_iter, et de retourner None s’il est atteint



joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 17:31

par joel76 » 03 Mar 2015, 00:55

Tu peux essayer ceci :
Code: Tout sélectionner
import sys

def secante(a,b,f,max=200) :
    W = f(b)

    # il n'y a jamais égalité à 0 avec les nombres decimaux
    if abs(W) < sys.float_info.epsilon :
        return b

    if max == 0 :
        return None

    # calcul de la sécante   
    c = V * (a-b) / (W-f(a)) + a

    return secante(b, c , f, max - 1)
Tu peux essayer avec cet appel, secante(0.5, 1, lambda x : (x-2)**2) tu obtiendra presque 2 !

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite