Bonjour,
j'essaye de calculer une racine avec la méthode de la sécante. J'ai fait juste avant la méthode de Newton, et ça fonctionne très bien. Pour la méthode de la sécante, j'ai juste modifié l'expression tournant dans la bouche, mais j'ai une erreur à chaque fois :
def methode_de_la_secante(xo,x1,func):
# Initialisation de la méthode
x = np.zeros(10)
x[0] = xo
x[1] = x1
for i in range(1,9):
x[i+1] = x[i] - ((x[i]-x[i-1])/(func(x[i])- func(x[i-1])))*func([i])
x[i] = x[i+1]
#print("", x)
return x
Je n'ai pas de problème de syntaxe. Mais quand j'appelle la fonction pour calculer une valeur avec la méthode de la sécante avec ça :
racinex = methode_de_la_secante(2, 3, fhistoriquenewton)
print("", racinex)
J'obtiens un message d'erreur :
TypeError Traceback (most recent call last)
TypeError: only size-1 arrays can be converted to Python scalars
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
<ipython-input-120-d2473857d584> in <module>
----> 1 racinex = methode_de_la_secante(2, 3, fhistoriquenewton)
2 print("", racinex)
<ipython-input-119-d45ea82bfc5a> in methode_de_la_secante(xo, x1, func)
8 #A = x[i] - x[i-1]
9 #B = func(x[i]) - func(x[i-1])
---> 10 x[i+1] = x[i] - ((x[i]-x[i-1])/(func(x[i])- func(x[i-1])))*func([i])
11 #x[i+1] = x[i] - (A/B)*func([i])
12 x[i] = x[i+1]
ValueError: setting an array element with a sequence.
J'ai modifié plusieurs fois l'expression de x|i+1| et je ne comprends pas pourquoi l'erreur persiste. Je ne comprends pas non plus pourquoi il me dit que je transforme un array en séquence ...