🖥️ Dipôle électrostatique : calcul numérique

Notebook Capytale de cet exercice : 408f-12077872

Un dipôle est constitué d’une charge 𝑞=1 nC au point 𝐴 de coordonnées (𝑎2,0,0) et d’une charge −𝑞 au point 𝐴′ de coordonnées (−𝑎2,0,0), avec 𝑎=1 cm. On souhaite calculer numériquement le potentiel puis le champ électriques créés par le dipôle dans tout l’espace, et les représenter.

1/ Justifier qu’il suffit de connaitre le potentiel et le champ électriques dans le plan (𝑂𝑥𝑦) pour les connaitre dans tout l’espace.

Coup de pouce 1
Quelles sont les invariances de la distribution de charges ?
Coup de pouce 2
Par quelle transformation peut-on amener un point 𝑀 quelconque de l’espace dans le plan (𝑂𝑥𝑦) ?
Corrigé

La distribution de charges est invariante par toute rotation autour de l’axe (𝑂𝑥), qui porte les deux charges.

Le plan (𝑂𝑥𝑦) contient les deux charges : c’est un plan de symétrie de la distribution, donc en tout point de ce plan, 𝐸⃗ est contenu dans le plan. Il suffit de calculer ses composantes 𝐸𝑥 et 𝐸𝑦.

2/ En utilisant l’expression connue du potentiel créé par une charge ponctuelle, exprimer le potentiel 𝑉(𝑥,𝑦) créé par le dipôle en un point 𝑀(𝑥,𝑦,0) du plan (𝑂𝑥𝑦), en fonction de 𝑞, 𝑎, 𝜀0, 𝑥 et 𝑦. On prend le potentiel nul à l’infini.

Coup de pouce 1
Quel est le potentiel créé par une charge ponctuelle ?
Coup de pouce 2
Quel théorème permet d’additionner les potentiels créés par les deux charges ?
Coup de pouce 3
Exprimer les distances 𝑑=𝐴𝑀 et 𝑑′=𝐴′𝑀 en fonction de 𝑥, 𝑦 et 𝑎.
Corrigé

Une charge ponctuelle 𝑞𝑖 crée à la distance 𝑑𝑖 le potentiel 𝑞𝑖/(4𝜋𝜀0𝑑𝑖). D’après le théorème de superposition :

𝑉(𝑥,𝑦)=𝑞4𝜋𝜀0(1𝑑−1𝑑′)avec𝑑=(𝑥−𝑎2)2+𝑦2et𝑑′=(𝑥+𝑎2)2+𝑦2

3/ Compléter la fonction potentiel(x, y), qui renvoie le potentiel créé par le dipôle au point (𝑥,𝑦) du plan (𝑂𝑥𝑦).

import numpy as np
import matplotlib.pyplot as plt

epsilon_0 = 8.85e-12  # permittivité du vide en F/m
q = 1e-9              # charge en C
a = 1e-2              # distance entre les charges en m

def potentiel(x, y):
    """Potentiel créé par le dipôle au point (x, y) du plan (Oxy)."""
    d = ...        # distance AM
    d_prime = ...  # distance A'M
    return ...
Coup de pouce 1
La racine carrée s’écrit np.sqrt(...) et le carré **2.
Corrigé
def potentiel(x, y):
    d = np.sqrt((x - a / 2)**2 + y**2)
    d_prime = np.sqrt((x + a / 2)**2 + y**2)
    return q / (4 * np.pi * epsilon_0) * (1 / d - 1 / d_prime)

Pour représenter le potentiel, on le calcule aux points d’une grille du plan (𝑂𝑥𝑦). X, Y = np.meshgrid(x, y) construit cette grille à partir des tableaux x et y des abscisses et des ordonnées : X et Y sont deux tableaux à deux dimensions qui contiennent les coordonnées de tous les points de la grille. Les opérations de numpy s’appliquent aussi bien à des nombres qu’à des tableaux : potentiel(X, Y) renvoie directement le tableau des potentiels aux points de la grille.

La fonction plt.contour(X, Y, V, levels=...) trace les lignes de niveau du tableau V, c’est-à-dire ici les équipotentielles, pour les valeurs données par levels.

4/ Compléter le programme ci-dessous pour tracer les équipotentielles dans le plan (𝑂𝑥𝑦). Quelle équipotentielle sépare les deux charges ? Justifier sa valeur à l’aide de l’expression de 𝑉.

x = np.linspace(-2 * a, 2 * a, 300)
X, Y = np.meshgrid(x, x)  # grille de 300 × 300 points
V = ...  # potentiel aux points de la grille
# équipotentielles de -1000 V à 1000 V, tous les 100 V ; coordonnées en mm
plt.contour(X * 1e3, Y * 1e3, V, levels=np.linspace(-1000, 1000, 21), cmap='coolwarm')
plt.colorbar(label="V (V)")
plt.xlabel("x (mm)")
plt.ylabel("y (mm)")
plt.axis('scaled')
plt.show()
Coup de pouce 1
Une seule ligne est à compléter : la fonction potentiel accepte des tableaux.
Coup de pouce 2
En un point du plan 𝑥=0, comparer les distances 𝑑 et 𝑑′.
Corrigé
V = potentiel(X, Y)

Les équipotentielles entourent les charges : le potentiel est positif autour de 𝐴 (charge 𝑞) et négatif autour de 𝐴′ (charge −𝑞). Le plan 𝑥=0 sépare les deux charges : c’est l’équipotentielle 𝑉=0. En effet, tout point de ce plan est à égale distance des deux charges : 𝑑=𝑑′, donc 𝑉=0.

Pour calculer le champ 𝐸⃗=−grad⃗𝑉, on approxime les dérivées partielles du potentiel par des différences finies, avec un pas ℎ très petit devant 𝑎.

5/ À l’aide de développements de Taylor de 𝑉(𝑥+ℎ,𝑦) et 𝑉(𝑥−ℎ,𝑦), établir l’approximation

𝜕𝑉𝜕𝑥(𝑥,𝑦)≈𝑉(𝑥+ℎ,𝑦)−𝑉(𝑥−ℎ,𝑦)2ℎ

Donner l’approximation analogue de 𝜕𝑉𝜕𝑦.

Coup de pouce 1
Écrire la formule de Taylor à l’ordre 2 pour 𝑉(𝑥+ℎ,𝑦), puis pour 𝑉(𝑥−ℎ,𝑦).
Coup de pouce 2
Soustraire les deux développements : les termes en ℎ2 se compensent.
Corrigé

La formule de Taylor à l’ordre 2 donne

𝑉(𝑥+ℎ,𝑦)=𝑉(𝑥,𝑦)+ℎ𝜕𝑉𝜕𝑥(𝑥,𝑦)+ℎ22𝜕2𝑉𝜕𝑥2(𝑥,𝑦)+𝑜(ℎ2)𝑉(𝑥−ℎ,𝑦)=𝑉(𝑥,𝑦)−ℎ𝜕𝑉𝜕𝑥(𝑥,𝑦)+ℎ22𝜕2𝑉𝜕𝑥2(𝑥,𝑦)+𝑜(ℎ2)

En soustrayant ces deux relations, 𝑉(𝑥+ℎ,𝑦)−𝑉(𝑥−ℎ,𝑦)=2ℎ𝜕𝑉𝜕𝑥(𝑥,𝑦)+𝑜(ℎ2), d’où l’approximation demandée en divisant par 2ℎ. De même :

𝜕𝑉𝜕𝑦(𝑥,𝑦)≈𝑉(𝑥,𝑦+ℎ)−𝑉(𝑥,𝑦−ℎ)2ℎ

6/ Compléter la fonction champ(x, y), qui renvoie les composantes du champ électrique au point (𝑥,𝑦) du plan (𝑂𝑥𝑦). Calculer numériquement le champ en 𝑂 et le comparer à celui qu’on obtient en superposant les champs créés par les deux charges.

h = 1e-6  # pas de dérivation en m, très petit devant a

def champ(x, y):
    """Composantes (Ex, Ey) du champ électrique au point (x, y) du plan (Oxy)."""
    Ex = ...
    Ey = ...
    return Ex, Ey

print(champ(0, 0))
Coup de pouce 1
En coordonnées cartésiennes, 𝐸⃗=−grad⃗𝑉 s’écrit 𝐸𝑥=−𝜕𝑉𝜕𝑥 et 𝐸𝑦=−𝜕𝑉𝜕𝑦.
Coup de pouce 2
La fonction potentiel peut être appelée en n’importe quel point, par exemple potentiel(x + h, y).
Coup de pouce 3
En 𝑂, chacune des deux charges crée un champ de norme 𝑞/(4𝜋𝜀0(𝑎/2)2). Quel est son sens ?
Corrigé
def champ(x, y):
    Ex = - (potentiel(x + h, y) - potentiel(x - h, y)) / (2 * h)
    Ey = - (potentiel(x, y + h) - potentiel(x, y - h)) / (2 * h)
    return Ex, Ey

Le programme affiche 𝐸𝑥≈−7,19⋅105 V m−1 et 𝐸𝑦=0.

En 𝑂, la charge 𝑞 placée en 𝐴 crée un champ dirigé de 𝐴 vers 𝑂, selon −𝑒⃗𝑥, et la charge −𝑞 placée en 𝐴′ un champ dirigé de 𝑂 vers 𝐴′, lui aussi selon −𝑒⃗𝑥. Les deux ont la même norme, donc

𝐸⃗(𝑂)=−2𝑞4𝜋𝜀0(𝑎/2)2𝑒⃗𝑥=−2𝑞𝜋𝜀0𝑎2𝑒⃗𝑥≈−7,19⋅105 V m−1𝑒⃗𝑥

Le calcul numérique redonne bien ce résultat.

La fonction plt.streamplot(X, Y, Ex, Ey) trace les lignes de champ d’un champ de vecteurs plan dont on connait les composantes Ex et Ey aux points de la grille X, Y.

7/ Compléter le programme ci-dessous pour superposer les lignes de champ aux équipotentielles. D’où partent et où aboutissent les lignes de champ ? Comment sont-elles disposées par rapport aux équipotentielles ? Vers où pointe le champ ?

Ex, Ey = ...  # champ aux points de la grille
plt.contour(X * 1e3, Y * 1e3, V, levels=np.linspace(-1000, 1000, 21), cmap='coolwarm')
plt.streamplot(X * 1e3, Y * 1e3, Ex, Ey)
plt.xlabel("x (mm)")
plt.ylabel("y (mm)")
plt.axis('scaled')
plt.show()
Coup de pouce 1
Comme potentiel, la fonction champ accepte des tableaux.
Coup de pouce 2
Revoir le lien entre cartes de champ et cartes de potentiel établi dans le cours.
Corrigé
Ex, Ey = champ(X, Y)

Les lignes de champ partent de la charge positive 𝑞, en 𝐴, et aboutissent à la charge négative −𝑞, en 𝐴′. Elles sont orthogonales aux équipotentielles, et le champ pointe vers les potentiels décroissants. Il est plus intense là où les équipotentielles sont resserrées, au voisinage des charges et entre elles.