programmation python et nombre dérivée

Bonjour à tous,
Je dois créer un programme python pour calculer le taux d'accroissement d'une fonction en h appelée taux_variation(f,a,h) puis à partir de cette fonction créer une fonction nombre_derive(f,a) qui calcule le taux de variation pour h=0.000001
Pour cela, on a d'abord crée

def coefficient_directeur(xA,yA,xB,yB):
deltax=xB-xA
deltay=yB-yA
return deltay/deltax

Qui fonctionne sans soucis mais quand je veux l'utiliser dans taux_variation cela ne fonctionne pas quand je lance par exemple taux_variation (x*x; 5 , 1) il y a un message d'erreur

def taux_variation(f,a,h):
xA=a
xB=a+h
yA=f(a)
yB=f(a+h)
c=coefficient_directeur(xA,yA,xB,yB)
return c

Merci d'avance

Vous avez dit "message d'erreur" ? Mais encore ?

Bonjour.

f ne doit-il pas être déclaré comme une fonction ? Comment Python comprend-il x*x(5) ?

Cordialement.

Pour le message d'erreur [ATTACH=CONFIG]472602[/ATTACH]
Pour ce qui est de definir une fonction celle se fait dans avant la création de la fonction taux ?

Non, mais pour appliquer taux à une fonction f, il faut que f soit une fonction.
N'ayant jamais pratiqué Python, je laisse d'autres conseiller. mais je remarque que tu confonds la fonction (f) avec l'image d'un x inconnu (f(x), ici x*x ou 3x+2). 3x+2 est une expression, comme xB-xA, et comme x n'a pas été défini, Python ne sait pas quoi en faire.

Cordialement.

Bonjour,

Réfléchis à partir du petit programme écrit ici :

Il calcule le taux de variation d'une fonction f(x) = Ax² + Bx + C

Il permet d'entrer les valeurs de A, B et C ainsi que la valeur de x et de h ...

Ce n'est probablement ce que tu veux, mais en comprenant comment cela fonctionne, tu pourras comprendre ce qui ne va pas dans ce que tu as écrit et tu pourras essayer de l'adapter.

def coefficient_directeur(xA,yA,xB ,yB):
 deltax=xB-xA
 deltay=yB-yA
 return deltay/deltax

def taux_variation(f,a,h):
 xA=a
 xB=a+h
 if(f==fonc) :
   print("La fonction est Ax² + Bx + C : ")
   print("Entrez A :")
   A=float(input())
   print("Entrez B :")
   B=float(input())
   print("Entrez C :")
   C=float(input())
   yA=fonc(A,B,C,xA)
   yB=fonc(A,B,C,xB)
 c=coefficient_directeur(xA,yA, xB,yB)
 return c

def fonc(a,b,c,x):
   return (a*x*x + b*x + c)

print("Entrez x :")
x=float(input())
print("Entrez h :")
h=float(input())      
print(taux_variation(fonc,x,h))

3x n'est pas valide. Il faut écrire 3*x.
Le reste est un vaste sujet et je suis sur un téléphone donc je laisse d'autres expliquer.

D'accord je comprend l'idée.
En définissant une fonction avant cela fonctionne sans problème
mais est-il possible de modifier ce programme pour qu'il demande à l'utilisateur l'expression de la fonction ?
Dans def f(x) peut on rajouter un input ? Je n'ai pas réussi à le faire
[ATTACH=CONFIG]472658[/ATTACH]

Oui, tu demandes la fonction avec input() comme une chaîne et tu l'évalues avec eval().

Bonjour,

Regarde ceci et essaie de comprendre.

C'est dommage de donner une réponse toute cuite.
Ce n'est vraiment pas l'esprit du forum ni la charte d'ailleurs.

C'est encore plus dommage quand c'est du code pas top qui notamment met un input dans une fonction alors qu'il aurait du être fait dans le main et son résultat passé en argument.

Je n'ai pas d'ordi sous la main mais au fait le x local est bien passé à eval ?

J'ai vérifié et ça marche, pas besoin de passer par le dict optionnel. Il y a des cas où ça ne marche pas tout seul mais je n'ai plus les détails en tête.