[PYTHON] Quelle est la méthode Newton? ?? Solution approximative de l'équation à résoudre par la méthode de Newton

Quelle est la méthode Newton?

La méthode de Newton est l'un des algorithmes pour trouver x tel que f (x) = 0, et c'est une méthode qui peut approcher la solution de l'équation.

En utilisant la méthode de Newton, il est possible d'approcher la valeur de √2 et la valeur de x de telle sorte que sin (x) = 0,5.

Concept de méthode de Newton

Dans la méthode Newton, le calcul est basé sur l'idée suivante.

** Lors de la recherche d'une valeur x telle que f (x) = 0, la section tangente x2 à une valeur x1 est plus proche de la valeur vraie x que la valeur d'origine x1 **

Comme le montre la figure ci-dessous, lorsque vous voulez trouver x tel que f (x) = 0 dans une fonction appelée f (x), vous pouvez trouver la section x2 de la ligne tangente f '(x) à une certaine valeur x1. Cela signifie que x2 est plus proche que x1 de la valeur x que vous voulez trouver.

figure111.png

Si vous effectuez la même opération en fonction de la valeur de x2 calculée précédemment, x3 sera plus proche de la valeur cible x.

figure22.png

Plus vous répétez cette procédure, plus la valeur de section calculée sera proche de la valeur x souhaitée.

Méthode de calcul spécifique

La procédure de recherche de x2 et x3 à partir de x1 est indiquée et les expressions relationnelles générales sont calculées à partir de celles-ci.

Calculer x2 à partir de x1

Notez le triangle à angle droit créé par x1, x2, f (x1) comme indiqué dans la figure ci-dessous. ⊿x et ⊿y représentent respectivement les longueurs des côtés d'un triangle rectangle.

figure33.png

Puisque f '(x1) est une ligne tangente à f (x1), x2 peut être obtenu à partir de la relation de la formule de définition de l'inclinaison.

\begin{aligned}
f'(x_1)&=\frac{\Delta y}{\Delta x} \\
&=\frac{f(x_1)}{x_1 - x_2} \\
\Leftrightarrow x_1-x_2&=\frac{f(x_1)}{f'(x_1)} \\
\therefore x_2 &=x_1 - \frac{f(x_1)}{f'(x_1)}
\end{aligned}

Vous pouvez également calculer x3 à partir de x2 en utilisant la même procédure.

\begin{aligned}
x_3 &=x_2 - \frac{f(x_2)}{f'(x_2)}
\end{aligned}

En d'autres termes, l'expression relationnelle suivante est valable pour la coordonnée x xn + 1 calculée en appliquant la méthode Newton à la coordonnée x xn calculée en exécutant la méthode de Newton n fois.

Méthode Newton


\begin{aligned}
x_{n+1} &=x_n - \frac{f(x_n)}{f'(x_n)}
\end{aligned}

Plus vous augmentez de calculs n, plus xn se rapproche de la vraie valeur x.

Exemple de calcul (trouver √2)

Je pense que j'ai pu comprendre la méthode Newton d'une manière ou d'une autre, mais je vais approfondir ma compréhension de la façon de l'utiliser réellement à travers des exemples de calcul réels. Ici, je voudrais trouver la valeur de √2.

Premièrement, je ne connais pas la valeur de √2, alors définissons-la comme x

x=\sqrt{2}

Mettez les deux côtés au carré pour faciliter le calcul et transformez la formule de sorte que f (x) = 0.

\begin{aligned}
x^2 &= 2 \\
x^2-2 &= 0 \\
f(x) &= 0  \hspace{1em} (\therefore f(x) = x^2 - 2)
\end{aligned}

Lorsqu'il est appliqué à l'expression relationnelle de la méthode Newton, il devient comme suit.

\begin{aligned}
x_{n+1} &= x_n - \frac{f(x_n)}{f'(x_n)} \\
&= x_n - \frac{x_{n}^2-2}{2x_n}
\end{aligned}

Ici, supposons que la valeur de x1 est 5 et effectuons le calcul.

\begin{aligned}
x_2 &= x_1 - \frac{x_{1}^2-2}{2x_1} \\
&= 5 - \frac{5^2 -2 }{2 \times 5} \\
&= 2.7
\end{aligned}

Faites le même calcul jusqu'à n = 5

\begin{aligned}
x_3 &\risingdotseq 1.720 \\
x_4 &\risingdotseq 1.441 \\
x_5 &\risingdotseq 1.414
\end{aligned}

Puisque la valeur vraie de √2 est 1,414 ..., vous pouvez voir que plus le nombre de calculs est élevé, plus la valeur vraie est proche.

Méthode Newton écrite par programmation

Le programme qui calcule la valeur de √2 comme indiqué ci-dessus est présenté ci-dessous. Écrivez le programme en utilisant Python3 du point de vue que le contenu du programme est facile à comprendre.

NewtonMethod.py


#Définition d'une valeur initiale appropriée
x = 5.0

while True:
    
    #Trouver un nouveau x par la méthode Newton
    x2 =  x - (x * x - 2) / (x * 2)

    #Le calcul se termine lorsque la valeur calculée se situe dans la plage d'erreur
    if abs(x2 - x) < 0.0001:
        break
        
    #Répétez le calcul avec la valeur calculée comme x
    x = x2

#Affichage des résultats des calculs
print(x)

x = 5.0 En définissant la valeur initiale sur 5,0 au lieu de 5, le résultat après la virgule décimale est également sécurisé dans la variable.

x2 = x - (x * x - 2) / (x * 2) À partir de l'équation obtenue dans la section précédente, calculez la valeur de x qui est proche de la valeur vraie.

if abs(x2 - x) < 0.0001 Au fur et à mesure que le calcul est répété, la solution s'approche de la valeur réelle et le changement de valeur devient plus petit. Par conséquent, définissez l'erreur et terminez le calcul lorsque le montant de la modification de la valeur se situe dans la plage de l'erreur.

Résumé

La méthode de Newton est une méthode pour trouver x tel que f (x) = 0, et elle peut être calculée approximativement par rapport à x en effectuant des calculs itératifs. De plus, en spécifiant la plage d'erreur, vous pouvez obtenir une valeur avec un nombre garanti de chiffres effectifs.

Recommended Posts

Quelle est la méthode Newton? ?? Solution approximative de l'équation à résoudre par la méthode de Newton
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
[Calcul scientifique / technique par Python] Solution analytique sympa pour résoudre des équations
Utilisation pour appeler une méthode d'une instance avant qu'elle ne soit renvoyée par __new__
La méthode de copie de pandas.DataFrame est une copie profonde par défaut
Méthode de visualisation des fluides BOS qui peut être effectuée à la maison pour voir ce qui est invisible
Que faire lorsqu'une vidéo ne peut pas être lue par cv2.VideoCapture
[Linux] Quelle est la méthode pour résoudre les erreurs de dépendance de package de yum et rpm sur le lieu de travail réel?