import matplotlib.pyplot as plt import numpy as np # Fonction pour calculer le champ électrique créé par une charge q en un point (x, y) def champ_electrique(q, x, y): k = 9e9 # Constante de Coulomb r = np.sqrt(x**2 + y**2) # Distance entre la charge et le point theta = np.arctan2(y, x) # Angle entre l'axe x et la ligne joignant la charge et le point Ex = k*q/r**2 * np.cos(theta) # Composante x du champ électrique Ey = k*q/r**2 * np.sin(theta) # Composante y du champ électrique return Ex, Ey # Définition des charges et de leur position q1 = 1e-6 # Charge 1 (en Coulombs) x1, y1 = -0.1, 0 # Position de la charge 1 (en mètres) q2 = -1e-6 # Charge 2 (en Coulombs) x2, y2 = 0.1, 0 # Position de la charge 2 (en mètres) # Création d'une grille de points où le champ électrique sera calculé x = np.linspace(-0.5, 0.5, 20) y = np.linspace(-0.5, 0.5, 20) X, Y = np.meshgrid(x, y) # Calcul du champ électrique en chaque point de la grille Ex, Ey = np.zeros_like(X), np.zeros_like(Y) for i in range(len(x)): for j in range(len(y)): Ex_ij, Ey_ij = champ_electrique(q1, X[i,j]-x1, Y[i,j]-y1) + champ_electrique(q2, X[i,j]-x2, Y[i,j]-y2) Ex[i,j], Ey[i,j] = Ex_ij, Ey_ij # Tracé des lignes de champ électrique plt.streamplot(X, Y, Ex, Ey, density=2, linewidth=1, arrowsize=1.5, arrowstyle='->') plt.scatter([x1, x2], [y1, y2], c=['r', 'b'], s=50, edgecolors='k') plt.xlabel('x (m)') plt.ylabel('y (m)') plt.title('Champ électrique entre deux charges') plt.show()
>