Majd Laayoune
MP-1
Devoir libre 3
1- Ligne du champ pour une charge ponctuelle :
import [Link] as plt
import numpy as np
## Paramétrage
e_0 = 8.85*10**(-12)
objets = []
## Construction de la distribution de charge et de la zone d'observation
def ajouter_objet(x,y,q):
[Link]([x,y,q])
# Ajout d'une charge ponctuelle
q_charge = - 1.6*10**(-19)
L = 10**(-10)
a = L / 100
ajouter_objet(0, 0, q_charge)
## Calcul du potentiel
def calculV(xM,yM,q,xO,yO):
"""
calcul du potentiel en xM, yM créé par une charge ponctuelle q placée en xO,yO
"""
# problème pour la position de coordonnées xO,yO
if xM == xO and yM == yO :
return 0
else :
return q/(4*[Link]*e_0)*1/((xM-xO)**2+(yM-yO)**2)**(1/2)
x = [Link](- L/2, L/2, int(L/a))
y = [Link](- L/2, L/2, int(L/a))
X, Y = [Link](x,y)
nM = len(X)
no = len(objets)
V = [Link]((nM,nM))
for i in range(0,nM) :
for j in range (0,nM):
for k in range(0,no):
V[i,j] = V[i,j] + calculV(x[i], y[j], objets[k][2], objets[k][0],
objets[k][1])
## Calcul du champ électrique
Ex = [Link]((nM -1, nM -1))
Ey = [Link]((nM-1 , nM -1))
for i in range (0, nM-2) :
for j in range (0, nM-2) :
Ex[i,j] = - (V[i,j+1] - V[i,j]) / a
Ey[i,j] = - (V[i+1,j] - V[i,j]) / a
## Ajustage des matrices V, X et Y
Vajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1) :
for j in range (0, nM - 1) :
Vajust[i,j] = V[i,j]
Xajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1):
for j in range (0, nM - 1):
Xajust[i,j] = X[i,j]
Yajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1):
for j in range (0, nM - 1):
Yajust[i,j] = Y[i,j]
## Affichage des courbes
schema = [Link](Xajust, Yajust, Vajust, 40)
cbar = [Link]()
cbar.set_label("Potentiel en Volt")
[Link]("equal")
[Link]("Equipotentielles et lignes de champ")
schema = [Link](Xajust, Yajust, Ex, Ey, linewidth=1, density=1)
[Link]()
OBSERVATIONS :
Le calcul du potentiel semble correct. Il prend en compte les contributions de chaque charge
ponctuelle et calcule le potentiel électrique en chaque point de la région d'observation.
Les composantes du champ électrique (Ex et Ey) sont calculées en prenant le gradient négatif du
potentiel. Cela est conforme à la relation E=−∇V.
Le tracé offre une visualisation complète du potentiel et du champ électrique où les lignes du
champ convergent vers la charge ponctuelle.
2- Dipôle électrostatique :
## Importation des bibliothèques
import [Link] as plt
import numpy as np
## Paramétrage
e_0 = 8.85*10**(-12)
objets = []
## Construction de la distribution de charge et de la zone d'observation
def ajouter_objet(x,y,q):
[Link]([x,y,q])
# Ajout d'un dipôle
q_dipole = 2.9*10**(-20)
d_dipole = 1.274*10**(-10)
L = 10**(-9)
a = L / 100
ajouter_objet(- d_dipole/2, 0, q_dipole)
ajouter_objet(+ d_dipole/2, 0, - q_dipole)
## Calcul du potentiel
def calculV(xM,yM,q,xO,yO):
"""
calcul du potentiel en xM, yM créé par une charge ponctuelle q placée en
xO,yO
"""
# problème pour la position de coordonnées xO,yO
if xM == xO and yM == yO :
return 0
else :
return q/(4*[Link]*e_0)*1/((xM-xO)**2+(yM-yO)**2)**(1/2)
x = [Link](- L/2, L/2, int(L/a))
y = [Link](- L/2, L/2, int(L/a))
X, Y = [Link](x,y)
nM = len(X)
no = len(objets)
V = [Link]((nM,nM))
for i in range(0,nM) :
for j in range (0,nM):
for k in range(0,no):
V[i,j] = V[i,j] + calculV(x[i], y[j], objets[k][2], objets[k][0],
objets[k][1])
## Calcul du champ électrique
Ex = [Link]((nM - 1, nM - 1))
Ey = [Link]((nM - 1, nM - 1))
for i in range (0, nM-2) :
for j in range (0, nM-2) :
Ex[i,j] = - (V[i,j+1] - V[i,j]) / a
Ey[i,j] = - (V[i+1,j] - V[i,j]) / a
## Ajustage des matrices V, X et Y
Vajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1) :
for j in range (0, nM - 1) :
Vajust[i,j] = V[i,j]
Xajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1):
for j in range (0, nM - 1):
Xajust[i,j] = X[i,j]
Yajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1):
for j in range (0, nM - 1):
Yajust[i,j] = Y[i,j]
## Affichage des courbes
schema = [Link](Xajust, Yajust, Vajust, 40)
cbar = [Link]()
cbar.set_label("Potentiel en Volt")
[Link]("equal")
[Link]("Equipotentielles et lignes de champ")
schema = [Link](Xajust, Yajust, Ex, Ey, linewidth=1, density=1)
[Link]()
OBSERVATIONS :
L'ajout d'un dipôle est implémenté correctement avec deux charges opposées à une distance
donnée. Cela permet de modéliser un dipôle électrique.
Le calcul du potentiel est similaire au premier exemple et semble correct, prenant en compte les
contributions des charges ponctuelles.
Le calcul du champ électrique est également similaire, en utilisant la différence finie pour obtenir
les composantes Ex et Ey à partir du potentiel.
3-Condensateur plan :
## Importation des bibliothèques
import [Link] as plt
import numpy as np
## Paramétrage
e_0 = 8.85*10**(-12)
objets = []
## Construction de la distribution de charge et de la zone d'observation
def ajouter_objet(x,y,q):
[Link]([x,y,q])
# Ajout d'un condensateur
q_cond = 10 ** (-14)
L_cond = 0.01 # Longueur des plaques du condensateur
e_cond = 0.005 # Distance entre les deux plaques
L = 0.015 # Longueur du domaine
a = L/100 # pas spatial
xi = [Link](0, L_cond, 100)
for i in xi:
ajouter_objet(-L_cond/2 + i, e_cond/2, q_cond)
for i in xi:
ajouter_objet(- L_cond/2 + i, - e_cond/2, - q_cond)
## Calcul du potentiel
def calculV(xM,yM,q,xO,yO):
"""
calcul du potentiel en xM, yM créé par une charge ponctuelle q placée en
xO,yO
"""
# problème pour la position de coordonnées xO,yO
if xM == xO and yM == yO :
return 0
else :
return q/(4*[Link]*e_0)*1/((xM-xO)**2+(yM-yO)**2)**(1/2)
x = [Link](- L/2, L/2, int(L/a))
y = [Link](- L/2, L/2, int(L/a))
X, Y = [Link](x,y)
nM = len(X)
no = len(objets)
V = [Link]((nM,nM))
for i in range(0,nM) :
for j in range (0,nM):
for k in range(0,no):
V[i,j] = V[i,j] + calculV(x[i], y[j], objets[k][2], objets[k][0],
objets[k][1])
## Calcul du champ électrique
Ex = [Link]((nM - 1, nM - 1))
Ey = [Link]((nM - 1, nM - 1))
for i in range (0, nM-2) :
for j in range (0, nM-2) :
Ex[i,j] = - (V[i,j+1] - V[i,j]) / a
Ey[i,j] = - (V[i+1,j] - V[i,j]) / a
## Ajustage des matrices V, X et Y
Vajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1) :
for j in range (0, nM - 1) :
Vajust[i,j] = V[i,j]
Xajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1):
for j in range (0, nM - 1):
Xajust[i,j] = X[i,j]
Yajust = [Link]((nM - 1, nM - 1))
for i in range (0, nM - 1):
for j in range (0, nM - 1):
Yajust[i,j] = Y[i,j]
## Affichage des courbes
schema = [Link](Xajust, Yajust, Vajust, 40)
cbar = [Link]()
cbar.set_label("Potentiel en Volt")
[Link]("equal")
[Link]("Equipotentielles et lignes de champ")
schema = [Link](Xajust, Yajust, Ex, Ey, linewidth=1, density=1)
[Link]()
OBSERVATIONS :
Le condensateur est modélisé en ajoutant des charges linéaires le long des plaques.
Le calcul du potentiel est effectué prenant en compte les contributions des charges ponctuelles.
Le calcul du champ électrique utilise la différence finie pour obtenir les composantes Ex et Ey à
partir du potentiel, de manière similaire aux exemples précédents.
La direction des lignes du champ nous indique que l’armature verte est chargée positivement, et
le contraire pour la bleue.