[Calcul scientifique / technique par Python] Résolution d'équations linéaires simultanées, calcul numérique, numpy

introduction

Résolvez les équations linéaires simultanées à N dimensions $ A x = b $ avec A comme matrice pour $ x $.

Contenu

(1) Calculez la matrice inverse $ A ^ -1 $ de A par la méthode linalg.inv de numpy. Trouvez le vecteur solution $ x = A ^ {-1} b $.

(2) Calculez $ x $ directement à partir de la méthode np.linalg.solve. ** C'est généralement plus rapide. ** **


Code (1)

%%time

import numpy as np
"""
A x =Le vecteur x qui satisfait b est linalg.Demander à l'aide de résoudre
"""
#Génération de la matrice 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]) #Générez b comme vecteur de ligne et utilisez-le comme matrice de translocation"Générer un vecteur de colonne "
b_vec = b.T
A_inv = np.linalg.inv(A_matrix)
x_vec= np.dot(A_inv,b_vec) #Calculez le vecteur x. Au produit de la matrice@Utilisation d'un opérateur(référence)

print(x_vec)

Ou vous pouvez écrire ci-dessous en utilisant "matrice". La lisibilité est élevée. Cependant, il n'est pas recommandé car il est souvent peu pratique.

import numpy as np
"""
A x =x vecteur qui satisfait b= A^-1 Calculer par calcul de b
"""
#Génération de la matrice 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]) #Générez b comme vecteur de ligne et utilisez-le comme matrice de translocation"Générer un vecteur de colonne "
b_vec = bb.T

x_vec=A_matrix.I@b_vec #Calculez le vecteur x. Au produit de la matrice@Utilisation d'un opérateur(référence)

print(x_vec)

Résultat (1)

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

(2) Lors de l'utilisation de numpy.linalg.solve (recommandé)


import numpy as np
"""
A x =Le vecteur x qui satisfait b est linalg.Demander à l'aide de résoudre
"""
#Génération de la matrice 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]) #Générez b comme vecteur de ligne et utilisez-le comme matrice de translocation"Générer un vecteur de colonne "

x_vec= np.linalg.solve(A_matrix,b) #Calculez le vecteur x. Au produit de la matrice@Utilisation d'un opérateur(référence)

print(x_vec)

Résultat (2) [ 4. 2.5 1.5]


Addenda

** La méthode numpy.linalg.solve est en interne LAPACK [dgesv] de Lapack (https://www.nag.co.uk/numeric/FL/nagdoc_fl22/pdf/F07/F07AAF.pdf) (simultanée réelle Un wrapper pour [1](solution d'équations linéaires) et zgesv (solution d'équations linéaires simultanées complexes) [1 ]. ** **

● En physique computationnelle, etc., des équations linéaires simultanées sont souvent obtenues. Il existe différents schémas pour trouver la matrice inverse en fonction de la nature de la matrice $ A $, mais il semble que vous devriez simplement utiliser la méthode de résolution pour le moment lors de l'écriture de ** code ... ** ** Il existe la méthode d'élimination gaussienne, la méthode Jacobi, la méthode Gaussienne-Seidel, la méthode du gradient conjugué, etc. comme méthodes de calcul numérique rudimentaire pour résoudre des équations linéaires simultanées [2]. Vous voudrez peut-être le rechercher lorsque vous en avez besoin.


Les références

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

[2] Ichiro Kawakami, ["Calcul numérique"](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.

À propos de l'opérateur @: [[Calcul scientifique / technique par Python] Calcul du produit de la matrice par l'opérateur @, python3.5 ou supérieur, numpy](Calcul scientifique / technique par Python] Calcul du produit de la matrice par l'opérateur @, python3.5 Après ça, numpy)

Recommended Posts

[Calcul scientifique / technique par Python] Résolution d'équations linéaires simultanées, calcul numérique, numpy
[Calcul scientifique / technique par Python] Calcul de somme, calcul numérique
[Calcul scientifique / technique par Python] Résolution de l'équation différentielle ordinaire du second ordre par la méthode Numerov, calcul numérique
[Calcul scientifique / technique par Python] Intégration Monte Carlo, calcul numérique, numpy
[Calcul scientifique / technique par Python] Interpolation de Lagrange, calcul numérique
[Calcul scientifique / technique par Python] Résolution d'équations différentielles ordinaires, formules mathématiques, sympy
[Calcul scientifique / technique par Python] Résolution de problèmes de valeurs propres (généralisés) en utilisant numpy / scipy, en utilisant des bibliothèques
[Méthode de calcul numérique, python] Résolution d'équations différentielles ordinaires par la méthode Eular
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
[Calcul scientifique / technique par Python] Résolution du problème de la valeur aux limites des équations différentielles ordinaires au format matriciel, calcul numérique
[Calcul scientifique / technique par Python] Intégration numérique, loi trapézoïdale / Simpson, calcul numérique, scipy
[Calcul scientifique / technique par Python] Marche aléatoire 2D (problème de marche ivre), calcul numérique
[Calcul scientifique / technique par Python] Solution numérique d'une équation différentielle ordinaire du second ordre, problème de valeur initiale, calcul numérique
[Calcul scientifique / technique par Python] Liste des matrices qui apparaissent dans Hinpan en algèbre linéaire numérique
[Calcul scientifique / technique par Python] Solution numérique du problème des valeurs propres de la matrice par multiplication de puissance, algèbre linéaire numérique
[Calcul scientifique / technique par Python] histogramme, visualisation, matplotlib
[Calcul scientifique / technique par Python] Calcul du produit de la matrice par l'opérateur @, python3.5 ou supérieur, numpy
[Calcul scientifique / technique par Python] Calcul numérique pour trouver la valeur de la dérivée (différentielle)
[Calcul scientifique / technique par Python] Graphique logistique, visualisation, matplotlib
[Calcul scientifique / technique par Python] Graphique de coordonnées polaires, visualisation, matplotlib
[Calcul scientifique / technique par Python] Résolution de l'équation de Newton unidimensionnelle par la méthode Runge-Kutta du 4ème ordre
[Calcul scientifique / technique par Python] Interpolation spline de troisième ordre, scipy
[Calcul scientifique / technique par Python] Solution numérique d'équations d'ondes unidimensionnelles et bidimensionnelles par méthode FTCS (méthode explicite), équations aux dérivées partielles bi-courbes
[Calcul scientifique / technique par Python] Solution numérique d'équations différentielles ordinaires du premier ordre, problème de valeur initiale, calcul numérique
[Calcul scientifique / technique par Python] Solution numérique d'un problème d'oscillateur harmonique unidimensionnel par vitesse Méthode de Berle
[Calcul scientifique / technique par Python] Exemple de visualisation de champ vectoriel, champ magnétique électrostatique, matplotlib
[Calcul scientifique / technique par Python] Transformation de Fourier à grande vitesse discrète en 3D unidimensionnelle, scipy
[Calcul scientifique / technique par Python] Ajustement par fonction non linéaire, équation d'état, scipy
[Calcul scientifique / technique par Python] Dérivation de solutions analytiques pour équations quadratiques et cubiques, formules, sympy
Résolvons des équations linéaires simultanées avec Python sympy!
[Calcul scientifique / technique par Python] Dessin d'animation de mouvement parabolique avec locus, matplotlib
[Calcul scientifique / technique par Python] Solution analytique sympa pour résoudre des équations
[Calcul scientifique / technique par Python] Tracer, visualiser, matplotlib des données 2D avec barre d'erreur
[Calcul scientifique / technique par Python] Dessin de surface courbe 3D, surface, fil de fer, visualisation, matplotlib
[Calcul scientifique / technique par Python] Résolution de l'équation de Schrödinger unidimensionnelle à l'état stationnaire par méthode de tir (1), potentiel de type puits, mécanique quantique
[Calcul scientifique / technique par Python] Tracé, visualisation, matplotlib de données 2D lues à partir d'un fichier
[Calcul scientifique / technique par Python] Dessin, visualisation, matplotlib de lignes de contour 2D (couleur), etc.
calcul de tableau numpy python
[Calcul scientifique / technique par Python] Résolution d'une équation de Schrödinger unidimensionnelle en régime permanent par méthode de tir (2), potentiel d'oscillateur harmonique, mécanique quantique
Calcul numérique avec Python
[Calcul scientifique / technique par Python] Liste des utilisations des fonctions (spéciales) utilisées en physique en utilisant scipy
[Calcul scientifique et technique par Python] Dessin de figures fractales [Triangle de Shelpinsky, fougère de Bernsley, arbre fractal]
[Calcul scientifique / technique par Python] Vague "gémissement" et vitesse de groupe, superposition des vagues, visualisation, physique du lycée
[Python] Méthode de calcul avec numpy
[Calcul scientifique / technique par Python] Simulation de Monte Carlo par la méthode metropolis de la thermodynamique du système de spin ascendant 2D
Calcul scientifique / technique avec Python] Dessin et visualisation d'isoplans 3D et de leurs vues en coupe à l'aide de mayavi
[Calcul scientifique / technique par Python] Solution numérique de l'équation de Laplace-Poisson bidimensionnelle pour la position électrostatique par la méthode Jacobi, équation aux dérivées partielles elliptiques, problème des valeurs aux limites
[Calcul scientifique / technique par Python] Solution numérique d'une équation de conduction thermique non stationnaire unidimensionnelle par méthode Crank-Nicholson (méthode implicite) et méthode FTCS (méthode de solution positive)
Introduction à la bibliothèque de calcul numérique Python NumPy
Comment résoudre des équations linéaires simultanées
[Calcul scientifique / technique par Python] Résolution de l'équation de Schledinger à l'état stationnaire dans le potentiel d'oscillateur isotrope tridimensionnel par la méthode matricielle, problème des valeurs aux limites, mécanique quantique