[PYTHON] Was ist die Newton-Methode? ?? Ungefähre Lösung der nach der Newton-Methode zu lösenden Gleichung

Was ist die Newton-Methode?

Die Newton-Methode ist einer der Algorithmen zum Finden von x, so dass f (x) = 0 ist, und es ist eine Methode, die die Lösung der Gleichung approximieren kann.

Mit der Newton-Methode ist es möglich, den Wert von √2 und den Wert von x so zu approximieren, dass sin (x) = 0,5 ist.

Newton-Methodenkonzept

Bei der Newton-Methode basiert die Berechnung auf der folgenden Idee.

** Wenn Sie nach einem Wert x suchen, bei dem f (x) = 0 ist, ist der Tangentenabschnitt x2 bei einem Wert x1 näher am wahren Wert x als der ursprüngliche Wert x1 **

Wie in der folgenden Abbildung gezeigt, finden Sie den Abschnitt x2 der Tangentenlinie f '(x) bei einem bestimmten Wert x1, wenn Sie x so finden möchten, dass f (x) = 0 in der Funktion f (x) ist. Dies bedeutet, dass x2 näher als x1 an dem Wert x liegt, den Sie finden möchten.

figure111.png

Wenn Sie dieselbe Operation basierend auf dem zuvor berechneten Wert von x2 ausführen, liegt x3 näher am Zielwert x.

figure22.png

Je öfter Sie diesen Vorgang wiederholen, desto näher liegt der berechnete Abschnittswert am gewünschten Wert x.

Spezifische Berechnungsmethode

Das Verfahren zum Finden von x2 und x3 aus x1 wird gezeigt, und allgemeine relationale Ausdrücke werden daraus berechnet.

Berechnen Sie x2 aus x1

Beachten Sie das rechtwinklige Dreieck, das durch x1, x2, f (x1) erzeugt wird (siehe Abbildung unten). ⊿x und ⊿y repräsentieren die Länge der Seiten eines rechtwinkligen Dreiecks.

figure33.png

Da f '(x1) eine Tangentenlinie bei f (x1) ist, kann x2 aus der Beziehung der Neigungsdefinitionsformel erhalten werden.

\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}

Mit dem gleichen Verfahren können Sie auch x3 aus x2 berechnen.

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

Mit anderen Worten gilt der folgende relationale Ausdruck für die x-Koordinate xn + 1, die durch Anwenden der Newton-Methode auf die x-Koordinate xn berechnet wurde, die durch n-maliges Ausführen der Newton-Methode berechnet wurde.

Newton-Methode


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

Je mehr Berechnungen n Sie erhöhen, desto näher kommt xn dem wahren Wert x.

Berechnungsbeispiel (finde √2)

Ich glaube, ich konnte die Newton-Methode irgendwie verstehen, aber ich werde mein Verständnis darüber, wie man sie tatsächlich verwendet, durch tatsächliche Berechnungsbeispiele vertiefen. Hier möchte ich den Wert von √2 finden.

Erstens kenne ich den Wert von √2 nicht, also setzen wir ihn als x

x=\sqrt{2}

Quadrieren Sie beide Seiten, um die Berechnung zu vereinfachen, und transformieren Sie die Formel so, dass f (x) = 0 ist.

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

Wenn es auf den relationalen Ausdruck der Newton-Methode angewendet wird, wird es wie folgt.

\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}

Nehmen wir hier an, dass der Wert von x1 5 ist, und führen Sie die Berechnung durch.

\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}

Führen Sie die gleiche Berechnung durch, bis n = 5 ist

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

Da der wahre Wert von √2 1,414 ... ist, können Sie sehen, dass je mehr Berechnungen durchgeführt werden, desto näher am wahren Wert liegt.

Newton-Methode programmgesteuert geschrieben

Das Programm, das den oben beschriebenen Wert von √2 findet, wird unten vorgestellt. Schreiben Sie das Programm mit Python3 unter dem Gesichtspunkt, dass der Inhalt des Programms leicht zu verstehen ist.

NewtonMethod.py


#Einen geeigneten Anfangswert einstellen
x = 5.0

while True:
    
    #Suchen Sie nach der Newton-Methode ein neues x
    x2 =  x - (x * x - 2) / (x * 2)

    #Die Berechnung endet, wenn der berechnete Wert innerhalb des Fehlerbereichs liegt
    if abs(x2 - x) < 0.0001:
        break
        
    #Wiederholen Sie die Berechnung mit dem berechneten Wert als x
    x = x2

#Anzeige der Berechnungsergebnisse
print(x)

x = 5.0 Durch Setzen des Anfangswertes auf 5,0 anstelle von 5 wird das Ergebnis nach dem Dezimalpunkt auch in der Variablen gesichert.

x2 = x - (x * x - 2) / (x * 2) Berechnen Sie aus der im vorherigen Abschnitt erhaltenen Gleichung den Wert von x, der nahe am wahren Wert liegt.

if abs(x2 - x) < 0.0001 Wenn die Berechnung wiederholt wird, nähert sich die Lösung dem wahren Wert und die Änderung des Wertes wird kleiner. Stellen Sie daher den Fehler ein und beenden Sie die Berechnung, wenn der Betrag der Wertänderung im Bereich des Fehlers liegt.

Zusammenfassung

Die Newton-Methode ist eine Methode zum Finden von x, so dass f (x) = 0 ist, und sie kann durch Ausführen iterativer Berechnungen ungefähr in Bezug auf x berechnet werden. Durch Angabe des Fehlerbereichs können Sie außerdem einen Wert mit einer garantierten Anzahl effektiver Ziffern erhalten.

Recommended Posts

Was ist die Newton-Methode? ?? Ungefähre Lösung der nach der Newton-Methode zu lösenden Gleichung
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
[Wissenschaftlich-technische Berechnung mit Python] Analytische Lösungssympathie zur Lösung von Gleichungen
Verwendung zum Aufrufen einer Methode einer Instanz, bevor sie von __new__ zurückgegeben wird
Die Kopiermethode von pandas.DataFrame ist standardmäßig Deep Copy
Flüssigkeitsvisualisierung BOS-Methode, die zu Hause durchgeführt werden kann, um zu sehen, was unsichtbar ist
Was tun, wenn ein Video von cv2.VideoCapture nicht gelesen werden kann?
[Linux] Was ist die Methode zum Lösen von Paketabhängigkeitsfehlern von yum und rpm am tatsächlichen Arbeitsplatz?