Erreur code sur l'Algorithme de Newton
Bonjour à tous,
J'ai une question en 2 parties:
Je cherche à retrouver y'(0) solution de l'équation xexp[1/(1+x)]-4=0 via l'algorithme de Newton.
On me dit que mon résultat doit être d'environ 3.14.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
import numpy as np
import matplotlib.pyplot as plt
x0=1
def F(x):
return x*np.exp(1/(1+x))-4
def Fp(x):
return (np.exp(1/(1+x)))*(x/(1+x))
x=x0
for i in range(1):
x = x - F(x)/Fp(x)
print(x) |
Jusque là tout va bien j'obtiens ce que l'on me demande.
Partie 2: Définir une fonction yp() dont l'appel yp(y,yp0) calcule, grâce à l'algorithme de Newton, étant donné y et une valeur de initiale yp0, la valeur y' vérifiant l'équation y*y'*exp(1/(1+y')=4.
Par exemple, `yp(1.6, 0.5)` devrait retourner la valeur y' correspondant au cas où y prendrait la valeur 1.6 (l'algorithme de Newton déterminant y' étant initialisé avec une première estimation
égale à \num{0.5}).
Et là je suis bloquée je ne vois pas du tout faire le code même si je pense savoir la méthode:
- Je reprends les équations de la 1ère partie afin d'avoir mon F(x) et mon F'(x).
Par contre comment je définie yp0 et y de manière à faire l'appel de la fonction.
J'ai commencé ça (qui bien entendu me renvoie une erreur que je n'arrive pas à corriger:oops:):
Code:
1 2 3 4 5 6 7 8 9 10 11
|
import numpy as np
import matplotlib.pyplot as plt
def Newton(x):
xi=1
x=xi
for i in range(20):
x = xi - F(x)/Fp(x)
return yp
print (yp(1.6,0.5)) |
Quelqu'un peut-il m'aider s'il vous plaît?
En attendant une réponse je vous souhaite à tous une bonne journée :D