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()