[Wissenschaftlich-technische Berechnung mit Python] Lösen simultaner linearer Gleichungen, numerische Berechnung, Numpy

Einführung

Lösen Sie die N-dimensionalen simultanen linearen Gleichungen $ A x = b $ mit A als Matrix für $ x $.

Inhalt

(1) Berechnen Sie die inverse Matrix $ A ^ -1 $ von A nach der Methode linalg.inv von numpy. Finden Sie den Lösungsvektor $ x = A ^ {-1} b $.

(2) Berechnen Sie $ x $ direkt mit der Methode np.linalg.solve. ** Dies ist in der Regel schneller. ** ** **


Code (1)

%%time

import numpy as np
"""
A x =Der x-Vektor, der b erfüllt, ist linalg.Fragen Sie mit lösen
"""
#Erzeugung der Matrix A.
a1_lis = [1, 0, 0]
a2_lis = [0, 2, 0]
a3_lis = [0, 0, 4] 
A_matrix=np.array([a1_lis, a2_lis, a3_lis])

# b vector
b = np.array([4,5,6]) #Generieren Sie b als Zeilenvektor und verwenden Sie es als Translokationsmatrix"Spaltenvektor generieren "
b_vec = b.T
A_inv = np.linalg.inv(A_matrix)
x_vec= np.dot(A_inv,b_vec) #Berechnen Sie den x-Vektor. Zum Produkt der Matrix@Verwenden eines Operators(Referenz)

print(x_vec)

Oder Sie können unten mit "Matrix" schreiben. Die Lesbarkeit ist hoch. Es wird jedoch nicht empfohlen, da es oft unpraktisch ist.

import numpy as np
"""
A x =x Vektor, der b erfüllt= A^-1 Berechnen Sie durch Berechnung von b
"""
#Erzeugung der Matrix A.
a1_lis = [1, 0, 0]
a2_lis = [0, 2, 0]
a3_lis = [0, 0, 4] 
A_matrix=np.matrix([a1_lis, a2_lis, a3_lis])

# b vector
bb = np.matrix([4,5,6]) #Generieren Sie b als Zeilenvektor und verwenden Sie es als Translokationsmatrix"Spaltenvektor generieren "
b_vec = bb.T

x_vec=A_matrix.I@b_vec #Berechnen Sie den x-Vektor. Zum Produkt der Matrix@Verwenden eines Operators(Referenz)

print(x_vec)

Ergebnis (1)

[[ 4. ]
 [ 2.5]
 [ 1.5]]

(2) Bei Verwendung von numpy.linalg.solve (empfohlen)


import numpy as np
"""
A x =Der x-Vektor, der b erfüllt, ist linalg.Fragen Sie mit lösen
"""
#Erzeugung der Matrix A.
a1_lis = [1, 0, 0]
a2_lis = [0, 2, 0]
a3_lis = [0, 0, 4] 
A_matrix=np.array([a1_lis, a2_lis, a3_lis])

# b vector
b = np.array([4,5,6]) #Generieren Sie b als Zeilenvektor und verwenden Sie es als Translokationsmatrix"Spaltenvektor generieren "

x_vec= np.linalg.solve(A_matrix,b) #Berechnen Sie den x-Vektor. Zum Produkt der Matrix@Verwenden eines Operators(Referenz)

print(x_vec)

Ergebnis (2) [ 4. 2.5 1.5]


Nachtrag

** Die numpy.linalg.solve-Methode ist intern Lapacks LAPACK dgesv (tatsächlich gleichzeitig) Ein Wrapper für [1](Lösung linearer Gleichungen) und zgesv (Lösung komplexer simultaner linearer Gleichungen) [1 ]. ** ** **

● In der Computerphysik usw. werden häufig simultane lineare Gleichungen erhalten. Es gibt verschiedene Schemata zum Finden der inversen Matrix, abhängig von der Art der Matrix $ A $, aber es scheint, dass Sie vorerst nur die Lösungsmethode verwenden sollten, wenn Sie ** Code schreiben ... ** ** ** Es gibt die Gaußsche Eliminierungsmethode, die Jacobi-Methode, die Gauß-Seidel-Methode, die konjugierte Gradientenmethode usw. als rudimentäre numerische Berechnungsmethoden zur Lösung simultaner linearer Gleichungen [2]. Vielleicht möchten Sie es nachschlagen, wenn Sie es brauchen.


Verweise

[1] Beschreibung von numpy.linalg.solve: https://docs.scipy.org/doc/numpy-1.7.0/reference/generated/numpy.linalg.solve.html

[2] Ichiro Kawakami, ["Numerische Berechnung"](https://www.amazon.co.jp/%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97- % E7% 90% 86% E5% B7% A5% E7% B3% BB% E3% 81% AE% E6% 95% B0% E5% AD% A6% E5% 85% A5% E9% 96% 80% E3 % 82% B3% E3% 83% BC% E3% 82% B9-8-% E5% B7% 9D% E4% B8% 8A-% E4% B8% 80% E9% 83% 8E / dp / 4000077783), Iwanami Shoten, 1989.

Über @ operator: [[Wissenschaftliche / technische Berechnung durch Python] Berechnung des Matrixprodukts durch @ operator, python3.5 oder höher, numpy](Wissenschaftliche / technische Berechnung durch Python] Berechnung des Matrixprodukts durch @ operator, python3.5 Danach numpy)

Recommended Posts

[Wissenschaftlich-technische Berechnung mit Python] Lösen simultaner linearer Gleichungen, numerische Berechnung, Numpy
[Wissenschaftlich-technische Berechnung mit Python] Summenberechnung, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Lösen der gewöhnlichen Differentialgleichung zweiter Ordnung nach der Numerov-Methode, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Monte-Carlo-Integration, numerische Berechnung, Numpy
[Wissenschaftlich-technische Berechnung mit Python] Lagrange-Interpolation, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Lösen gewöhnlicher Differentialgleichungen, mathematischer Formeln, Sympy
[Wissenschaftlich-technische Berechnung mit Python] Lösen (verallgemeinerter) Eigenwertprobleme mit numpy / scipy mithilfe von Bibliotheken
[Numerische Berechnungsmethode, Python] Lösen gewöhnlicher Differentialgleichungen mit der Eular-Methode
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
[Wissenschaftlich-technische Berechnung durch Python] Lösung des Randwertproblems gewöhnlicher Differentialgleichungen im Matrixformat, numerische Berechnung
[Wissenschaftlich-technische Berechnung nach Python] Numerische Integration, Trapezgesetz / Simpson-Gesetz, numerische Berechnung, scipy
[Wissenschaftlich-technische Berechnung mit Python] 2D-Random-Walk (Drunken-Walk-Problem), numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Numerische Lösung der gewöhnlichen Differentialgleichung zweiter Ordnung, Anfangswertproblem, numerische Berechnung
[Wissenschaftlich-technische Berechnung mit Python] Liste der Matrizen, die in Hinpan in der numerischen linearen Algebra vorkommen
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Eigenwertproblems der Matrix durch Potenzmultiplikation, numerische lineare Algebra
[Wissenschaftlich-technische Berechnung mit Python] Histogramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Berechnung des Matrixprodukts mit @ operator, python3.5 oder höher, numpy
[Wissenschaftlich-technische Berechnung von Python] Numerische Berechnung zur Ermittlung des Ableitungswerts (Differential)
[Wissenschaftlich-technische Berechnung mit Python] Logistisches Diagramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Polarkoordinatendiagramm, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung nach Python] Lösen der eindimensionalen Newton-Gleichung nach der Runge-Kutta-Methode 4. Ordnung
[Wissenschaftlich-technische Berechnung mit Python] Spline-Interpolation dritter Ordnung, scipy
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung von 1-dimensionalen und 2-dimensionalen Wellengleichungen nach der FTCS-Methode (explizite Methode), doppelt gekrümmte partielle Differentialgleichungen
[Wissenschaftlich-technische Berechnung mit Python] Numerische Lösung gewöhnlicher Differentialgleichungen erster Ordnung, Anfangswertproblem, numerische Berechnung
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung des Problems des eindimensionalen harmonischen Oszillators nach der Speed-Berle-Methode
[Wissenschaftlich-technische Berechnung mit Python] Beispiel für die Visualisierung von Vektorfeld, elektrostatischem Magnetfeld, Matplotlib
[Wissenschaftlich-technische Berechnung von Python] 1-dimensionale 3D-diskrete Hochgeschwindigkeits-Fourier-Transformation, scipy
[Wissenschaftlich-technische Berechnung von Python] Anpassung durch nichtlineare Funktion, Zustandsgleichung, scipy
[Wissenschaftlich-technische Berechnung nach Python] Ableitung analytischer Lösungen für quadratische und kubische Gleichungen, mathematische Formeln, Sympy
Lösen wir simultane lineare Gleichungen mit Python Sympy!
[Wissenschaftlich-technische Berechnung von Python] Zeichnungsanimation der parabolischen Bewegung mit Locus, Matplotlib
[Wissenschaftlich-technische Berechnung mit Python] Analytische Lösungssympathie zur Lösung von Gleichungen
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, visualisieren, matplotlib 2D-Daten mit Fehlerleiste
[Wissenschaftlich-technische Berechnung von Python] Zeichnung von 3D-gekrümmter Oberfläche, Oberfläche, Drahtrahmen, Visualisierung, Matplotlib
[Wissenschaftlich-technische Berechnung von Python] Lösen der eindimensionalen Schrödinger-Gleichung im stationären Zustand durch Schießmethode (1), Potential vom Well-Typ, Quantenmechanik
[Wissenschaftlich-technische Berechnung mit Python] Plot, Visualisierung, Matplotlib von 2D-Daten, die aus einer Datei gelesen wurden
[Wissenschaftlich-technische Berechnung mit Python] Zeichnen, Visualisieren, Matplotlib von 2D-Konturlinien (Farbkonturen) usw.
Berechnung des Python-Numpy-Arrays
[Wissenschaftlich-technische Berechnung von Python] Lösen der eindimensionalen Schrödinger-Gleichung im stationären Zustand durch Aufnahmemethode (2), harmonisches Oszillatorpotential, Quantenmechanik
Numerische Berechnung mit Python
[Wissenschaftlich-technische Berechnung durch Python] Liste der Verwendung von (speziellen) Funktionen, die in der Physik unter Verwendung von scipy verwendet werden
[Wissenschaftliche und technische Berechnung von Python] Zeichnung fraktaler Figuren [Shelpinsky-Dreieck, Bernsley-Farn, fraktaler Baum]
[Wissenschaftlich-technische Berechnung von Python] Wellen "Stöhnen" und Gruppengeschwindigkeit, Wellenüberlagerung, Visualisierung, Physik der High School
[Python] Berechnungsmethode mit numpy
[Wissenschaftlich-technische Berechnung nach Python] Monte-Carlo-Simulation nach der Metropolenmethode der Thermodynamik des 2D-Anstiegsspinsystems
Wissenschaftlich-technische Berechnung mit Python] Zeichnen und Visualisieren von 3D-Isoplanes und deren Querschnittsansichten mit Mayavi
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung der zweidimensionalen Laplace-Poisson-Gleichung für die elektrostatische Position nach der Jacobi-Methode, elliptische partielle Differentialgleichung, Randwertproblem
[Wissenschaftlich-technische Berechnung nach Python] Numerische Lösung der eindimensionalen instationären Wärmeleitungsgleichung nach der Crank-Nicholson-Methode (implizite Methode) und der FTCS-Methode (positive Lösungsmethode), parabolische partielle Differentialgleichung
Einführung in die Python Numerical Calculation Library NumPy
So lösen Sie simultane lineare Gleichungen
[Wissenschaftlich-technische Berechnung nach Python] Lösen der Schledinger-Gleichung im stationären Zustand im dreidimensionalen isotropen Oszillatorpotential nach der Matrixmethode, Randwertproblem, Quantenmechanik