Python définir une fonction logarithme

Le problème exposé dans ce sujet a été résolu.

D’ailleurs, puisque ça peut intéresser d’autres lecteurs, si je devais écrire une fonction responsable de plotter d’autres fonctions, je passerais les fonctions en paramètre.

import numpy as np
import matplotlib.pyplot as plt

def representation(*funcs, domain):
    for f in funcs:
        plt.plot(domain, f(domain))

representation(
    lambda x: np.log(1+x),
    lambda x: x - x**2 / 2,
    lambda x: x,
    domain=np.linspace(0, 10, 100))

La syntaxe def fonction(*args) permet de dire que fonction prend un nombre quelconque d’arguments et qu’ils doivent être groupés dans la liste args. La syntaxe lambda x: np.log(1+x) permet de définir une fonction dite anonyme parce qu’on n’a pas besoin de la nommer. Le code que j’ai écrit fonctionne de la même façon que

import numpy as np
import matplotlib.pyplot as plt

def representation(funcs, domain):
    for f in funcs:
        plt.plot(domain, f(domain))

def f1(x):
    return np.log(1 + x)

def f2(x):
    return x - x**2 / 2

def f3(x):
    return x

representation([f1, f2, f3],
               domain=np.linspace(0, 10, 100))

sauf qu’on n’a pas besoin de nommer les fonctions ni des les grouper à la main dans une liste.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte