Nichtlineare simultane Gleichungen können mit Python leicht gelöst werden.

Bei numerischen Berechnungen besteht eine gute Chance, eine nichtlineare Simultangleichung zu lösen. Vor vielen Jahren, als ich ein Doktorand war, der forschte, habe ich es in Fortran implementiert. In letzter Zeit habe ich mehr Möglichkeiten, Programme in Python zu schreiben, und ich bin auf eine Situation gestoßen, in der ich eine nichtlineare Simultangleichung erneut gelöst habe. Die Newton-Methode ist eine bekannte Methode zum Lösen nichtlinearer simultaner Gleichungen, aber ich habe nach einer guten Bibliothek gesucht, da die Implementierung von Grund auf schwierig ist.

Es kann mit "Scipy.optimize.root" gelöst werden

Es war einfach, nicht seltsam. Dieses Mal möchte ich als Beispiel die folgenden nichtlinearen Simultangleichungen lösen.

\begin{align} x^{2}+y^{2}-1=0 \\\ x=0 \end{align}

Der Quellcode lautet wie folgt. Ich werde später eine kurze Erklärung geben.

import numpy as np
from scipy import optimize

#Geben Sie die zu lösende Funktion in einer Liste zurück
def func(x):
    return [x[0]**2 + x[1]**2 -1.0,
            x[0]]


result = optimize.root( func, [ 1.0, 0.0], method="broyden1")
print(result)

Das Ausführungsergebnis ist wie folgt.

     fun: array([-1.98898568e-07, -5.14009858e-06])
 message: 'A solution was found at the specified tolerance.'
     nit: 9
  status: 1
 success: True
       x: array([-5.14009858e-06,  9.99999901e-01])

Beschreibung des Quellcodes / Ausführungsergebnisses

Einzelheiten zur Verwendung von scipy.optimize.root finden Sie in der scipy-Dokumentation. Hier ist eine grobe Erklärung. Das erste Argument von optimize.root ist die Funktion func, die die Funktion definiert, die Sie lösen möchten. Das zweite Argument ist der Anfangswert, der verwendet werden soll, wenn mit der Lösung des Problems begonnen wird. Im dritten Argument geben Sie an, wie gelöst werden soll. Weitere Informationen finden Sie im scipy-Dokument. Hier ist jedoch eine Einschränkung. .. Dieses Mal wird broyden1 in der Methode angegeben, aber je nach Argument muss die Jacobi-Matrix separat definiert werden. Es war ein Ärger für mich, also habe ich einen gewählt, der keine Jakobi-Prozession erfordert.

Der wichtige Teil des Ausführungsergebnisses ist auch der Teil von x: array (), der die eigentliche Lösung darstellt, und er scheint $ x = 0, y = 1 $ zu sein. Weitere Informationen zur Lösung finden Sie unter scipy.optimize.OptimizeResult.

Schließlich

Python ist praktisch, da es auf verschiedene Arten einfach implementiert werden kann. Ich wollte mich als Doktorand treffen. Nein, ich habe ihn getroffen, aber es war mühsam, den Zug zu wechseln, also tat ich so, als würde ich ihn nicht sehen. Es tut uns leid.

Recommended Posts

Nichtlineare simultane Gleichungen können mit Python leicht gelöst werden.
Lösen Sie simultane Gleichungen sofort mit Python
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
Einfaches Formatieren von JSON mit Python
Nichtlineare Funktionsmodellierung in Python
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Neue Funktionen in Python 3.9 (1) - Der Summensatzoperator kann im Wörterbuchtyp verwendet werden.
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
Lösen Sie normale Differentialgleichungen in Python
Zusammenfassung der AtCoder C-Probleme, die in der Mathematik der High School gelöst werden können
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Implementiert in Python PRML Kapitel 7 Nichtlineare SVM
Zeichnen Sie Daten einfach in Shell und Python
Tkinter konnte nicht in Python importiert werden
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Liste der Tools, mit denen Sie auf einfache Weise die Emotionsanalyse japanischer Sätze mit Python ausprobieren können (versuchen Sie es mit Google Colab).
++ und-können nicht zum Inkrementieren / Dekrementieren in Python verwendet werden
Lösen wir simultane lineare Gleichungen mit Python Sympy!
Erstellen von Sphinx, das mit Markdown geschrieben werden kann
Sie können auch mit Python problemlos eine GUI erstellen
ABC125_C --GCD auf Blackboard [In Python gelöste Notizen]
Erste Schritte mit AWS IoT in Python
Matrixberechnung und lineare Gleichungen: Lineare Algebra in Python <3>
Zusammenfassung der statistischen Datenanalysemethoden mit Python, die im Geschäftsleben verwendet werden können
Visualisierung von geografischen Informationen von R und Python, die von Power BI ausgedrückt werden können
In Python3.8 und höher kann der inverse Mod mit der integrierten Funktion pow berechnet werden.
Ein Mechanismus zum Aufrufen von Ruby-Methoden aus Python, der in 200 Zeilen ausgeführt werden kann