[Calcul scientifique / technique par Python] Exemple de visualisation de champ vectoriel, champ magnétique électrostatique, matplotlib

introduction

** Visualisez le champ vectoriel en utilisant matplotlib. À titre d'exemple, tracez les champs magnétiques électrostatiques et statiques appris en physique au lycée. ** **

Chaque programme a un flux

  1. Créez un maillage x, y pour dessiner avec la méthode meshgrid de numpy,
  2. Définissez la fonction vectorielle $ F (u (x, y), v (x, y)) $ sur les points (x, y) générés
  3. Dessinez une flèche (vecteur) sur le maillage avec différentes options (https://matplotlib.org/devdocs/api/_as_gen/matplotlib.axes.Axes.quiver.html).

C'est.

Il sera plus facile à comprendre si vous vérifiez l'opération en regardant un exemple concret.

Contenu

(1) Visualisation du champ électrostatique créé par une charge ponctuelle (2) Champ électrostatique créé par deux charges ponctuelles (dipôles électriques) (3) Champ magnétique statique créé par un courant constant passant par l'origine (4) Champ vectoriel tridimensionnel (champ électrostatique créé par une charge ponctuelle à l'origine)


(1) Visualisation du champ électrostatique créé par une charge ponctuelle


"""
(1)Champ électrostatique créé par une charge ponctuelle à l'origine
"""

import numpy as np
import matplotlib.pyplot as plt

plt.figure()


LX, LY=2.1,2.1   #Paramètres du maillage
gridwidth=0.33 
X, Y= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth))  #Génération de maillage

R = np.sqrt(X**2+Y**2) #Distance de l'origine

#Coordonnées de position et charge de la charge ponctuelle
X1,Y1=0,0   #Placement de la charge à l'origine
Q1=1       #Réglage de la quantité de charge
R1=np.sqrt((X-X1)**2+(Y-Y1)**2) #Point arbitraire de cette charge(X,Y)Distance à
plt.plot(X1,Y1,'o',color='blue') #Charge de points de tirage

#Fonction vectorielle F(U(x,y), V(x,y))Défini. L'expression du champ électrostatique est utilisée.
U = Q1*(X-X1)/(R1**2)  
V = Q1*(Y-Y1)/(R1**2)

plt.quiver(X,Y,U,V,color='red',angles='xy',scale_units='xy', scale=5.0) #Champ vectoriel de tracé

plt.xlim([-LX,LX]) #Plage de X à dessiner
plt.ylim([-LY,LY]) #Plage de y pour dessiner

#Dessin graphique
plt.grid()
plt.draw()
plt.show()

Résultat (1)

t.png Champ électrostatique dû à une charge ponctuelle placée à l'origine.


(2) Champ électrostatique créé par deux charges ponctuelles (dipôles électriques)


"""
(2)Frais de deux points(Bipolaire électrique)Champ électrostatique créé par
"""

import numpy as np
import matplotlib.pyplot as plt

plt.figure()


LX, LY=2,2

gridwidth=0.2 
X, Y= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth)) 

R = np.sqrt(X**2+Y**2)

#Coordonnées de position et charge de deux charges ponctuelles
X1,Y1=1.1,0
Q1=1
R1=np.sqrt((X-X1)**2+(Y-Y1)**2)
plt.plot(X1,Y1,'o',color='blue')

X2,Y2=-1.1,0
Q2=-1
R2=np.sqrt((X-X2)**2+(Y-Y2)**2)
plt.plot(X2,Y2,'o',color='blue')
##

#Paramètres de la fonction vectorielle. 2 charges.
U = Q1*(X-X1)/(R1**2)+Q2*(X-X2)/(R2**2)
V = Q1*(Y-Y1)/(R1**2)+Q2*(Y-Y2)/(R2**2)

plt.quiver(X,Y,U,V,color='red',angles='xy',scale_units='xy', scale=6.5)


plt.xlim([-LX,LX])
plt.ylim([-LY,LY])

#Dessin graphique
plt.grid()
plt.draw()
plt.show()

Résultat (2): Champ électrostatique créé par deux charges ponctuelles (dipôles électriques)

tt.png

Un champ électrostatique créé par deux charges ponctuelles (les charges sont respectivement 1 et -1) placées en (-1,1,0) et (1,1,0).

(3) Champ magnétique statique créé par un courant constant passant par l'origine

"""
(3)Champ magnétique statique créé par un courant constant passant par l'origine
"""

import numpy as np
import matplotlib.pyplot as plt

plt.figure()


LX, LY=3,3

gridwidth=0.3 
X, Y= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth)) 

R = np.sqrt(X**2+Y**2)

#Coordonnées de position et charge de la charge ponctuelle
X1,Y1=0,0 
I=1  #Valeur actuelle constante
R1=np.sqrt((X-X1)**2+(Y-Y1)**2)
plt.plot(X1,Y1,'o',color='blue')

#Paramètres de la fonction vectorielle. Champ magnétique statique créé par un courant constant F(U(x,y), V(x,y))
U = I*-1*(Y-Y1)/(R1)
V = I*(X-X1)/(R1)


plt.quiver(X,Y,U,V,color='red',angles='xy',scale_units='xy', scale=4.5)


plt.xlim([-LX,LX])
plt.ylim([-LY,LY])

#Dessin graphique
plt.grid()
plt.draw()
plt.show()


Résultat (3) Champ magnétique statique créé par un courant constant

t.png

Un champ magnétique statique créé par un courant constant et uniforme I qui est perpendiculaire à la surface du papier à partir de l'origine.


(4) Champ vectoriel tridimensionnel (champ électrostatique créé par une charge ponctuelle à l'origine)

"""
(4)Illustration du champ de vecteur 3D
Champ électrostatique créé par une charge ponctuelle à l'origine
"""
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D #Importer pour le tracé 3D

import numpy as np

fig = plt.figure()
ax = Axes3D(fig)


LX, LY, LZ = 2,2,2  #paramètres de maillage xyz
gridwidth=0.9 # 
X, Y, Z= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth),np.arange(-LZ, LZ, gridwidth) ) #Génération de maillage

R = np.sqrt(X**2+Y**2+Z**2)

#Coordonnées de position et charge de la charge ponctuelle
X1,Y1, Z1=0,0,0
Q1=1
R1=np.sqrt((X-X1)**2+(Y-Y1)**2+(Z-Z1)**2)
ax.scatter3D(X1,Y1,Z1,"o", color='blue')

U = Q1*(X-X1)/(R1**2)
V = Q1*(Y-Y1)/(R1**2)
W= Q1*(Z-Z1)/(R1**2)


ax.quiver(X, Y, Z, U, V, W, color='red',length=1, normalize=False)

ax.set_xlim([-LX, LX])
ax.set_ylim([-LY, LY])
ax.set_zlim([-LZ, LZ])
plt.show()

Résultat (4) Champ vectoriel 3D (champ électrostatique créé par une charge ponctuelle à l'origine)

tt.png

Un tracé tridimensionnel du champ électrique créé par la charge ponctuelle placée à l'origine.

Recommended Posts

[Calcul scientifique / technique par Python] Exemple de visualisation de champ vectoriel, champ magnétique électrostatique, matplotlib
[Calcul scientifique / technique par Python] histogramme, visualisation, matplotlib
[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] Dessin de surface courbe 3D, surface, fil de fer, visualisation, matplotlib
[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 scientifique / technique par Python] Calcul de somme, calcul numérique
[Calcul scientifique / technique par Python] Calcul de matrice inverse, numpy
[Calcul scientifique / technique par Python] Interpolation de Lagrange, calcul numérique
[Calcul scientifique / technique par Python] Dessin d'animation de mouvement parabolique avec locus, matplotlib
[Calcul scientifique / technique par Python] Tracer, visualiser, matplotlib des données 2D avec barre d'erreur
[Calcul scientifique / technique par Python] Interpolation spline de troisième ordre, scipy
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
[Calcul scientifique / technique par Python] Intégration Monte Carlo, calcul numérique, numpy
[Calcul scientifique / technique par Python] Vague "gémissement" et vitesse de groupe, superposition des vagues, visualisation, physique du lycée
[Calcul scientifique / technique par Python] Intégration numérique, loi trapézoïdale / Simpson, calcul numérique, scipy
[Calcul scientifique / technique par Python] Résolution d'équations linéaires simultanées, calcul numérique, numpy
[Calcul scientifique / technique par Python] Transformation de Fourier à grande vitesse discrète en 3D unidimensionnelle, scipy
[Calcul scientifique / technique par Python] Marche aléatoire 2D (problème de marche ivre), calcul numérique
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] Ajustement par fonction non linéaire, équation d'état, scipy
[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] 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
[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] Calcul numérique pour trouver la valeur de la dérivée (différentielle)
[Calcul scientifique / technique par Python] Solution analytique sympa pour résoudre des équations
[Calcul scientifique / technique par Python] Résolution de l'équation de Newton unidimensionnelle par la méthode Runge-Kutta du 4ème ordre
Mémo de visualisation par Python
[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] 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] Solution numérique d'un problème d'oscillateur harmonique unidimensionnel par vitesse Méthode de Berle
[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
Application Python: visualisation de données, partie 2: matplotlib
[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 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] Dérivation de solutions analytiques pour équations quadratiques et cubiques, formules, sympy
[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] 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