Je suis occupé à faire du code sur la méthode de bissection. Il est facile, bien sûr, d'écrire le script et de l'exécuter. Cependant, l'astuce intervient lorsque je veux définir une fonction qui prendra une expression telle que x ** 2 en entrée. J'ai mis au rancart quelque chose cependant. C'est en quelque sorte le travail accompli, mais à ma première déclaration if, il se plaint de ne pas pouvoir multiplier une fonction par une fonction. Comment pourrais-je résoudre ce problème aussi? J'ai vraiment essayé de faire mes devoirs sur ce problème avant de demander et malheureusement je ne trouve pas la solution. J'aimerais juste savoir comment faire cela.Créer une fonction qui accepte une expression comme une entrée en python
from sympy.abc import x
def bisect(f, a, b):
f = lambda x: f
f_a, f_b = f(a), f(b)
tol = 1e-4
count = 0
print '\t'.join(['Step' , 'a', 'b', 'c', 'f(c) ' , '(b-a)/2)'])
while (b-a)/float(2) > tol:
c = (a+b)/2
f_c = f(c)
print '\t'.join([str(count) , str(a) , str(b) , str(c), str((b-a)/float(2))])
if f_a*f_c < 0:
b = c
f_b = f_c
else:
a = c
f_a = f_c
count = count + 1
Pouvez-vous trier votre indentation s'il vous plaît. La meilleure façon, je pense, de résoudre ce que vous demandez de simplement passer en tant que lambda - vous ne pouvez pas passer dans une expression comme argument. –