Table des matières

Réflexion d'une onde sur un milieu semi-infini

1. Problème

1.a. Définitions

On considère une onde plane rencontrant la surface plane d'un milieu semi-infini, en incidence normale. La direction de propagation est donnée par l'axe X, dont l'origine est placée sur la frontière des deux milieux.

../../../../figures/sciphys/elecmag/reflexion/geometrie.svgFigure pleine page

Les fonctions d'onde dans les milieux 1 et 2 sont notées respectivement

ψ1(x,t)(1)ψ2(x,t)(2)

La fonction d'onde et sa dérivée vérifient une condition de continuité sur la frontière :

ψ1(0,t)=ψ2(0,t)(3)ψ1x(0,t)=ψ2x(0,t)(4)

1.b. Onde électromagnétique

Considérons une onde électromagnétique polarisée rectilignement dans une direction y perpendiculaire à la direction de propagation. La fonction d'onde représente la composante du champ électrique dans cette direction :

ψ(x,t)=Ey(x,t)(5)

La continuité de la fonction d'onde vient de celle de la composante tangentielle du champ électrique.

Le champ magnétique est obtenu avec l'équation de Maxwell-Faraday :

Bzt=-Eyx(6)

La continuité de la dérivée de la fonction d'onde vient donc de celle de la composante tangentielle du champ magnétique.

Si l'on suppose que le milieu 1 est le vide, l'équation de propagation est l'équation des ondes dans le vide :

2ψ1x2=1c22ψ1t2(7)

Si le milieu 2 est un milieu linéaire caractérisé par une conductivité γ, une permittivité électrique ε et une perméabilité magnétique μ, l'équation de propagation dans ce milieu est :

2ψ2x2=μγψ2t+με2ψ2t2(8)

Un milieu linéaire dans sa forme générale est défini en régime sinusoïdal. En utilisant la fonction d'onde complexe, et en supposant une dépendance temporelle de la forme e-iωt, l'équation de propagation s'écrit :

2ψ2x2=-iωμ(ω)γ(ω)ψ2-ω2μ(ω)ε(ω)ψ2(9)

1.c. Fonction d'onde quantique

La fonction d'onde associée à une particule matérielle non relativiste obéit à l'équation de Schrödinger :

iψt=-22m2ψx2+Ep(x)ψ(10)

Ep(x) est l'énergie potentielle (au sens de la mécanique classique).

On considère ici la réflexion sur une marche de potentiel :

Ep1=0(11)Ep2=V0(12)

La fonction d'onde est une amplitude de probabilité complexe. La densité de probabilité associée est :

p(x,t)=ψ(x,t)ψ*(x,t)(13)

2. Réflexion d'une onde sinusoïdale

2.a. Solutions sinusoïdales

Une fonction d'onde complexe sinusoïdale est de la forme :

ψ(x,t)=ψ(x)e-iωt(14)

Dans le cas d'une fonction d'onde quantique, il s'agit d'un état d'énergie E déterminée, que l'on écrit plutôt :

ψ(x,t)=ψ(x)e-iEt(15)

La densité de propabilité est alors :

p(x)=ψ(x)ψ*(x)(16)

Elle ne dépend pas du temps; c'est pourquoi on parle d'état stationnaire. En physique ondulatoire classique (par exemple pour une onde électromagnétique), cette densité représente une énergie moyenne associée à l'onde. Elle est constante pour une onde sinusoïdale.

On se place dans un milieu homogène. Les propriétés électromagnétiques (conductivité, permittivité, perméabilité) ne dépendent pas de x. L'énergie potentielle est constante. L'équation de propagation (9) pour une onde électromagnétique et l'équation de schrodinger (10) conduisent à une équation indépendante du temps de la forme :

2ψ(x)x2+k2ψ(x)=0(17)

La constante k est en général complexe. Pour une onde électromagnétique dans un milieu linéaire, on a :

k2=iωμγ+ω2με(18)

Pour l'équation de Schrödinger :

k2=2m(E-Ep)2(19)

La solution générale est :

ψ(x)=Aeikx+Be-ikx(20)

Lorsque k est réel, on obtient une combinaison de deux ondes progressives se propageant en sens inverse. Pour l'équation de Schrödinger, c'est le cas lorsque E>Ep. Pour une onde électromagnétique, c'est le cas dans le vide (ou plus généralement dans un milieu transparent).

2.b. Coefficients de réflexion et de transmission

On peut écrire pour le milieu 1 :

ψ1(x)=Aeik1x+rAe-ik1x(21)

Les deux termes représentent respectivement l'onde incidente et l'onde réfléchie. On a introduit le coefficient de réflexion r.

Dans le milieu 2, le nombre d'onde k2 est en général complexe. Le milieu étant semi-infini, on ne garde que la solution se propageant dans le sens de x croissant :

ψ2(x)=τAeik2x(22)

où l'on a introduit le coefficient de transmission τ. La valeur de k2 utilisée doit avoir une partie réelle et une partie imaginaire positives.

La continuité de la fonction d'onde et de sa dérivée à la frontière s'écrit :

1+r=τ(23)k1-rk1=τk2(24)

On obtient finalement les coefficients de réflexion et de transmission de la fonction d'onde :

r=k1-k2k1+k2(25)τ=2k1k1+k2(26)

Le coefficient de réflexion de la puissance (ou du courant de probabilité) est :

R=|r|2(27)

Le coefficient de transmission de la puissance est :

T=1-R(28)

2.c. Exemple: marche de potentiel pour une onde de particule

Dans la région 1, le nombre d'onde est :

k1=2mE(29)

Le numérateur est la quantité de mouvement de la particule incidente. On peut bien sûr écrire la relation de dispersion avec la pulsation en écrivant E=ω .

Si l'énergie E de la particule a une valeur inférieure à la hauteur V0 de la marche de potentiel, le nombre d'onde dans la région 2 est :

k2=i2m(V0-E)(30)

Le coefficient de réflexion est alors :

r=E-iV0-EE+iV0-E(31)

d'où l'on déduit R=1. La particule est toujours réfléchie dans ce cas, même s'il existe une densité de probabilité non nulle dans la région 2, sous forme d'onde évanescente.

Si E>V0, le nombre d'onde dans la région 2 est :

k2=2m(E-V0)(32)

L'onde dans cette région est progressive. Il s'agit de l'onde de De Broglie associée à une particule dont la quantité de mouvement a été réduite par la marche de potentiel.

Le coefficient de réflexion est :

r=E-E-V0E+E-V0(33)

Lorsque E=V0 la réflexion est totale. Lorsque E augmente, le coefficient de réflexion décroît et s'annule lorsque l'énergie est très grande devant la hauteur de la barrière. La probabilité de réflexion de la particule est R, la probabilité de passage dans le milieu 2 est T=1-R.

La simulation Réflexion d'une onde de matière sur une marche de potentiel montre l'influence du rapport E/V0 sur les ondes.

2.d. Exemple : onde électromagnétique réfléchie par un plasma

Le milieu 1 étant le vide, on a :

k1=ωc(34)

Si le milieu 2 est un plasma neutre de faible densité, la relation de dispersion s'écrit :

k22=ω2-ωc2c2(35)

ωc est la pulsation de coupure du plasma.

Pour une pulsation inférieure à la pulsation de coupure, le coefficient de réflexion est :

r=ω-iωc2-ω2ω+iωc2-ω2(36)

Dans ce cas, le plasma est totalement réfléchissant (R=1).

Pour une pulsation supérieure à la pulsation de coupure :

r=ω-ω2-ωc2ω+ω2-ωc2(37)

On remarque une similitude avec le coefficient de réflexion pour une marche de potentiel sur une particule. L'analogue de l'énergie est ici la pulsation au carré.

2.e. Exemple : onde électromagéntique réfléchie sur un conducteur

Pour un bon conducteur, le courant de déplacement est négligeable. On a alors :

k22=iωμγ(38)

Le nombre d'onde dans la région 2 est donc :

k2=(1+i)ωμγ2=1+iδ(39)

δ est la profondeur de pénétration de l'onde dans le conducteur.

Le coefficient de réflexion est :

r=ωδc-(1+i)ωδc+(1+i)(40)

Pour les conducteurs métalliques, le rapport ωδ/c est très petit dans le domaine des radio-fréquences et des micro-ondes. Le coefficient de réflexion a donc un module pratiquement égal à 1.

3. Réflexion de paquets d'onde

3.a. Définition des paquets d'onde

Une onde électromagnétique sinusoïdale comporte une énergie s'étendant à l'infini dans l'espace et dans le temps. Les ondes réelles ne peuvent être parfaitement sinusoïdales. De même, une onde de particule sinusoïdale représente une particule non localisée dans l'espace, dont la quantité de mouvement (ou l'énergie) est parfaitement définie.

Une description plus réaliste est obtenue avec un paquet d'onde. En principe, un paquet d'onde se construit en sommant des ondes sinusoïdales dont le spectre est continu (intégrale de Fourier). On peut néanmoins construire une succession périodique de paquets d'onde à l'aide d'une somme (série Fourier). Cette approche a l'avantage de se prêter au calcul numérique.

On définit le paquet d'onde par un spectre en pulsation A(ω). Dans le cas d'une onde de particule, il s'agit d'un spectre en énergie car E=ω . Un spectre souvent utilisé pour définir le paquet est le spectre gaussien. La fonction A(ω) est alors une gaussienne centrée sur une pulsation ω0 :

A(ω)=exp(-(ω-ω0)24Δω2)(41)

La largeur Δω est l'écart-type de la densité de probabilité A2.

On définit une série de Fourier avec des pulsations multiples d'une pulsation fondamentale :

ω=nω1(42)

Pour définir un paquet d'onde gaussien, on note N l'indice correspondant à la pulsation centrale ω0 et P le nombre de raies de part et d'autre (2P+1 raies en tout). Pour une relation de dispersion k(ω), la fonction d'onde s'écrit :

ψ(x,t)=n=N-PN+PA(nω1)ei(k(nω1)x-nω1 t)(43)

Le nombre de raies est choisi pour que les raies N-P et N+P soient sur le bord de la gaussienne. Le choix suivant convient :

4Δω=Pω1(44)

La fonction d'onde est périodique, de pulsation fondamentale ω1. La simulation Paquet d'onde et dispersion montre la propagation de ce type de paquets pour différents types de milieu.

Le choix de définir le spectre en pulsation (énergie) et non pas en nombre d'onde (impulsion) permet de traiter la réflexion des différentes harmoniques en utilisant les résultats obtenus ci-dessus en régime sinusoïdal. En mécanique quantique ondulatoire, on définit souvent le spectre en impulsion (pour obtenir l'inégalité d'Heisenberg position-impulsion), mais cela ne convient pas pour le problème de la réflexion car l'impulsion d'une particule change lorsqu'elle franchit la barrière alors que son énergie est constante.

La relation entre les écart-types dans le domaine temporel et le domaine fréquentiel est :

ΔωΔt12(45)

Les écart-types sont ceux des fonctions A2 et ψψ*, interprétées commes des densités de probabilité.

Pour un spectre gaussien, la forme temporelle du paquet est aussi une gaussienne. Dans ce cas, le produit des écart-types prend sa valeur minimale (1/2).

Pour une particule quantique, la relation précédente est l'inégalité de Heisenberg temps-énergie :

ΔEΔt2(46)

Pour x fixé, la fonction ψ(x,t) est périodique dans le temps, de période 2π/ω1. Les paquets se succèdent à cette période. Pour un milieu non dispersif, à t fixé, la période spatiale en x est 2πc/ω1. On voit donc des paquets espacés de cette période, tous identiques et n'évoluant pas. Pour un milieu dispersif, la taille des paquets varie en fonction de leur position sur l'axe x. Si l'on suit un paquet donné, on observe (au voisinage de x=0) une contraction de sa taille pour x<0 et une extension de sa taille pour x>0. Si l'on avait défini le paquet par un spectre en nombre d'onde (ou en impulsion), il y aurait une périodicité en x mais pas en t, et on observerait la contraction des paquets pour t<0 et leur étalement pour t>0.

3.b. Réflexion

L'onde dans le milieu 1 s'écrit :

ψ1(x,t)=n=N-PN+PA(nω1)ei(k1(nω1)x-nω1 t)+n=N-PN+PA(nω1)r(nω1)ei(-k1(nω1)x-nω1 t)(47)

L'onde dans le milieu 2 est :

ψ2(x,t)=n=N-PN+PA(nω1)τ(nω1)ei(k2(nω1)x-nω1 t)(48)

Les calculs doivent être faits sous forme complexe, c'est-à-dire qu'il faut calculer la partie réelle et la partie imaginaire des fonctions d'ondes. Pour la représentation graphique, on utilise la partie réelle. La densité d'énergie (ou densité de probabilité) dans le milieu 1 est :

p1=ψ1ψ1*=Re(ψ1)2+Im(ψ1)2(49)

3.c. Déplacement de la frontière

Les coefficients de réflexion et de transmission ont été calculés ci-dessus en supposant que la frontière est en x=0. Les paquets d'onde sont alors en phase de contraction lorsqu'ils se dirigent vers la frontière. Ils rencontrent la frontière lorsqu'ils ont leur extension spatiale minimale. Si l'on veut que les paquets soient en phase d'étalement lorsqu'ils se dirigent vers la frontière, il faut décaler la frontière en x=L. L'expression des coefficients de réflexion et de transmission est alors :

r=k1-k2k1+k2e2ik1L(50)τ=(eik1L+re-ik1L)e-ik2L(51)

4. Calcul numérique

4.a. Programme python

reflexion.py
import numpy
import math
import cmath
                

La classe Reflexion contient les données et les fonctions nécessaires aux calculs. Le constructeur sert à définir le type de milieu de propagation. L'onde sera définie par des listes contenant les fréquences, les amplitudes, les coefficients de réflexion, de transmission, les nombres d'onde dans les milieux 1 et 2.

class Reflexion:
    def __init__(self,milieu):
        self.freq = []
        self.amp = []
        self.reflex = []
        self.trans = []
        self.k1 = []
        self.k2 = []
        self.nf = 0
        self.fc = 0.0
        self.L = 0.0
        if milieu=="plasma":
            self.f_k1 = self.k1_vide
            self.f_k2 = self.k2_plasma
        elif milieu=="particule":
            self.f_k1 = self.k1_particule
            self.f_k2 = self.k2_particule
                

Les paramètres qu'il faudra éventuellement modifier sont la fréquence de coupure self.fc et la position de la frontière self.L.

Voici la définition des relations de dispersion pour le problème de la réflexion sur un plasma. L'argument est la fréquence. Le nombre d'onde calculé est l'inverse de la longueur d'onde (il ne comporte pas le facteur ). self.fc est la fréquence de coupure.

    def k1_vide(self,f):
        return f
    def k2_plasma(self,f):
        return cmath.sqrt(f*f-self.fc*self.fc)
                 

Voici les relations de dispersion pour une onde de particule quantique en réflexion sur une marche de potentiel. La fréquence est égale à l'énergie de la particule (divisée par la constante de Planck). self.fc est la hauteur de la barrière de potentiel.

    def k1_particule(self,f):
        return cmath.sqrt(f)
    def k2_particule(self,f):
        return cmath.sqrt(f-self.fc)
                 

La fonction suivante calcule les nombres d'onde, les coefficients de réflexion et de transmission pour une fréquence donnée. Tous ces nombres peuvent être complexes.

    def reflexion(self,f):
        deuxpi = 2*math.pi
        k1 = self.f_k1(f)
        k2 = self.f_k2(f)
        r = (k1-k2)/(k1+k2)*cmath.exp(2j*k1*deuxpi*self.L)
        tau = (cmath.exp(1j*k1*deuxpi*self.L)\
              +r*cmath.exp(-1j*k1*deuxpi*self.L))*cmath.exp(-1j*k2*deuxpi*self.L)
        return(k1,k2,r,tau)
                 

La fonction suivante définit une onde sinusoïdale, dont le spectre ne comporte qu'une fréquence :

    def sinus(self,f):
        self.nf = 1
        self.freq = [f]
        self.amp = [1]
        (k1,k2,r,tau) = self.reflexion(f)
        self.reflex = [r]
        self.trans = [tau]
        self.k1 = [k1]
        self.k2 = [k2]
                 

La fonction suivante définit un paquet d'onde gaussien. N est la fréquence centrale et P est le nombre de raies de part et d'autre. Par convention, l'espacement des raies est 1. Le nombre de raies permet donc de modifier la taille du paquet. Seules les fréquences positives sont ajoutées au spectre.

    def paquet(self,N,P):
        sigma = P*0.25
        self.freq = []
        self.amp = []
        self.reflex = []
        self.trans = []
        self.k1 = []
        self.k2 = []
        self.nf = 0
        deuxpi = 2*math.pi
        for n in range(-P,P+1):
            f = N+n
            if f>=0:
                (k1,k2,r,tau) = self.reflexion(f)
                self.freq.append(f)
                self.amp.append(math.exp(-n*n/(4*sigma*sigma)))
                self.reflex.append(r)
                self.k1.append(k1)
                self.k2.append(k2)
                self.trans.append(tau)
                self.nf += 1
                 

La fonction suivante calcule les échantillons des fonctions d'onde à un instant t. xmin et xmax sont les bornes de l'intervalle (la frontière doit être à l'intérieur), t est le temps, np le nombre d'échantillons de part et d'autre de la frontière. Par défaut, les fonctions d'onde (complexe) sont renvoyées. Pout obtenir la densité de probabilité, il faut proba=True.

    def echantillons(self,xmin,xmax,t,np,proba=False):
        x1 = numpy.linspace(xmin,self.L,np)
        psi1_i = numpy.zeros(x1.size,dtype=numpy.complex)
        psi1_r = numpy.zeros(x1.size,dtype=numpy.complex)
        psi1 = numpy.zeros(x1.size,dtype=numpy.complex)
        x2 = numpy.linspace(self.L,xmax,np)
        psi2 = numpy.zeros(x2.size,dtype=numpy.complex)
        deuxpi = 2*math.pi
        for i in range(self.nf):
            psi1_i+=self.amp[i]*(numpy.exp(1j*deuxpi*(self.k1[i]*x1\
                                                        -self.freq[i]*t)))
            psi1_r+=self.amp[i]*self.reflex[i]*numpy.exp(1j*deuxpi*(-self.k1[i]*x1\
                                                                      -self.freq[i]*t))
            psi2+=self.amp[i]*self.trans[i]*numpy.exp(1j*deuxpi*(self.k2[i]*x2\
                                                                   -self.freq[i]*t))
        psi1 = psi1_i+psi1_r
        if proba:
            return (x1,x2,psi1_i*numpy.conj(psi1_i),psi1_r*numpy.conj(psi1_r),psi1*numpy.conj(psi1),psi2*numpy.conj(psi2))
        else:
            return (x1,x2,psi1_i,psi1_r,psi1,psi2)        
                 

4.b. Exemple : particule réfléchie par une marche de potentiel

import numpy
import math
from matplotlib.pyplot import *
import matplotlib.animation as animation
from reflexion import Reflexion
            
reflex = Reflexion("particule")
reflex.L = 0.0
            

On définit un paquet d'onde comportant 5 raies, dont toutes les fréquences sont au dessus de la hauteur de la barrière :

reflex.fc = 40
reflex.paquet(50,5)
            

On définit l'intervalle d'espace et le nombre de points :

np = 4000
xmin = -10
xmax = 10.0
            

Voici le calcul des densités de probabilité à l'instant t=0 :

t = 0.0
(x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,t,np,True)
            

On peut représenter la densité dans le milieu 1 (onde incidente plus réfléchie) et celle dans le milieu 2 :

figure(figsize=(12,5))
plot(x1,psi1,'r')
plot(x2,psi2,'r')
xlabel('x')
ylabel('|psi|^2')
grid()
            
figAfigA.pdf

On voit un paquet en train d'être réfléchi et un paquet transmis à droite de la frontière. Les oscillations de la densité à gauche de la frontière sont dues à l'interférence entre le paquet incident et le paquet réfléchi. Voyons un peu plus tard :

t = 0.1
(x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,t,np,True)
figure(figsize=(12,5))
plot(x1,psi1,'r')
plot(x2,psi2,'r')
xlabel('x')
ylabel('|psi|^2')
grid()
            
figBfigB.pdf

On voit que le paquet incident est en grande partie transmis. Un peu plus tard :

t = 0.2
(x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,t,np,True)
figure(figsize=(12,5))
plot(x1,psi1,'r')
plot(x2,psi2,'r')
xlabel('x')
ylabel('|psi|^2')
grid()
            
figCfigC.pdf

On voit le paquet transmis à droite de la frontière et le paquet réfléchi à gauche, beaucoup plus petit. On remarque aussi l'étalement des paquets au cours de leur propagation : le paquet situé en x=7.5 est plus large et moins haut que la paquet situé juste à droite de la frontière.

Voici le code qui permet de faire une animation montrant l'évolution de la densité de probabilité :

temps = 0.0
proba = True
(x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,temps,np,proba)
dt = 0.01
fig, ax = subplots()
line1, = ax.plot(x1,psi1,'r')
line2, = ax.plot(x2,psi2,'r')
ax.grid()

def animate(i):
    global temps,xmin,xmax,np,proba
    temps += dt
    (x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,temps,np,proba)
    line1.set_xdata(x1)
    line1.set_ydata(psi1)
    line2.set_xdata(x2)
    line2.set_ydata(psi2)
    
ani = animation.FuncAnimation(fig,animate,1000,interval=40)
show()
             

La simulation Réflexion de paquets d'onde sur une marche de potentiel permet de voir l'animation et de faire varier la hauteur de la barrière de potentiel.

4.c. Exemple : réflexion d'une onde électromagnétique sur un plasma

reflex = Reflexion("plasma")
reflex.L = 0.0
                

On définit un paquet dont toutes les fréquences sont sous la fréquence de coupure :

reflex.fc = 70
reflex.paquet(50,10)
                
xmin = -2.0
xmax = 2.0
np = 4000
t = 0.05
(x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,t,np,False)
            

On trace la partie réelle des fonctions d'onde incidente, réfléchie et transmis :

figure(figsize=(12,5))
plot(x1,psi1_i,'b')
plot(x1,psi1_r,'r')
plot(x2,psi2,'b')
xlabel('x')
ylabel('psi')
grid()
            
figDfigD.pdf

Les paquets sont entièrement réfléchis.

Lorsque la fréquence de coupure est inférieure aux fréquences du paquet :

reflex.fc = 40
reflex.paquet(50,10)
t = 0.05
(x1,x2,psi1_i,psi1_r,psi1,psi2) = reflex.echantillons(xmin,xmax,t,np,False)
figure(figsize=(12,5))
plot(x1,psi1_i,'b')
plot(x1,psi1_r,'r')
plot(x2,psi2,'b')
xlabel('x')
ylabel('psi')
grid()
            
figEfigE.pdf

On voit la transmission des paquets, avec tout de même une partie réfléchie. Il y a une forte dispersion dans le plasma, qui provoque l'étalement des paquets. L'animation permet de voir la réduction de la vitesse de groupe.

La simulation Réflexion de paquets d'onde sur un plasma permet de faire varier le spectre du paquet et la fréquence de coupure du plasma.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.