TD6 - Equation de Schrödinger - Phytem

publicité
Université Pierre et Marie Curie,
LICENCE de PHYSIQUE
ENS Cachan
PHYTEM
—
Physique numérique
TD no6
Valeurs propres et vecteurs propres
Résolution de l’équation de Schrödinger par un calcul de différences finies
—
L’équation de Schrödinger Hψ = Eψ est l’équation maı̂tresse de la mécanique quantique :
résoudre un problème de physique quantique revient en général à résoudre cette équation dans
le cas considéré. Malheureusement, en pratique, même dans les cas simples, on se heurte à des
problèmes techniques souvent ardus quand on cherche à le faire ; fort souvent même, il n’y a
pas de solution analytique du tout ! Dans le présent exercice, on étudiera une méthode simple,
peu exigeante sur le plan de la programmation (il s’agit essentiellement de faire appel à un
sous-programme de bibliothèque déjà existant) pour tenter de résoudre numériquement des
problèmes dont la solution est connue (puits infini, oscillateur harmonique) afin de contrôler
la méthode, puis dans des cas où la solution n’est pas connue. Ce sera aussi l’occasion de se
familiariser à peu de frais avec l’objet étrange qu’est la fonction d’onde ψ.
On se restreint ici à l’équation de Schrödinger stationnaire (ou non-dépendante du temps)
à une particule et à une dimension. Il s’agit donc de chercher les états propres d’une particule
dans un potentiel stationnaire 1 .
Dans ces conditions, l’équation de Schrödinger s’écrit :
−
h̄2 d2 ψ(x)
+ V (x) ψ(x) = E ψ(x)
2m dx2
(1)
où V et ψ sont des fonctions de l’abscisse x, V (x) est l’énergie potentielle de la particule au
point d’abscisse x, ψ(x) la fonction d’onde qui décrit l’état de la particule et E l’énergie associée
à cet état ; m est la masse de la particule et h̄ la constante de Plank. Résoudre l’équation (1)
revient à trouver les fonctions d’ondes ψ(x) et les énergies E pour lesquelles l’équation est
vérifiée : il s’agit d’une équation différentielle du second ordre dont on connait les solutions
analytiques dans certains cas (V = Cst, V = 21 kx2 , . . .), mais reste insoluble dans bien des cas
d’où la recherche de solutions numériques.
Afin de simplifier les notations, on utilisera un système d’unités ad hoc 2 dans lequel h̄ = 1
et m = 1, donc l’équation (1) devient :
−
1 d2 ψ(x)
+ V (x) ψ(x) = E ψ(x)
2 dx2
(2)
I– La méthode des différences finies.
Le problème est légèrement différent de celui de la résolution d’une (ou plusieurs) équation(s)
du mouvement (voir le problème du patin) où l’on calcule de proche en proche les valeurs que
prend la ou les fonctions recherchées : ici, on veut simultanément toutes les valeurs de ψ(x) et
de surcroı̂t E est aussi une inconnue. Les méthodes de type Runge-Kutta ne conviennent donc
pas, il faut en trouver d’autres.
1. voir le cours de physique quantique.
2. Dans les calculs de structure électronique, la masse de l’électron est prise comme unité. L’unité d’énergie
devient le Hartree = 27.2eV et l’unité de longueur le Bohr = 0.53Å.
1
La méthode des différences finies en est une possible. Elle consiste en une discrétisation du
problème, c’est-à-dire que l’on fait l’approximation de remplacer la variable continue x par une
variable discrète xi :
xi = (i − 1)δx , i ∈ [1, n]
où i est un indice entier. La droite infinie est évidemment remplacée par un segment fini de
longueur L = nδx .
1) Qu’est-ce que cela entraı̂ne, avant même tout calcul, pour n et δx ?
2) On pose :
ψi = ψ(xi )
Vi = V (xi )
Trouver une expression approchée pour la dérivée première de ψ prise un demi-intervalle au
delà de xi :
dψ
δx
(xi + )
dx
2
ainsi que la même dérivée prise un demi-intervalle en deçà de xi :
δx
dψ
(xi − )
dx
2
3) En déduire une expression approchée pour la dérivée seconde de ψ prise en xi :
d2 ψ
(xi )
dx2
4) Écrire l’équation de Schrödinger sous une forme discrétisée.
II– Valeurs propres-vecteurs propres.
On considère maintenant que la fonction d’onde discrétisée est un vecteur :
ψ1
ψ2
..
.







ψ=
 ψi

..

.


 ψn−1
ψn














1) Écrire l’expression de la matrice n × n notée H telle que l’équation de Schrödinger
discrétisée s’écrive maintenant sous forme matricielle :
Hψ = Eψ
On appellera H l’Hamiltonien discrétisé : ce n’est plus un opérateur comme dans l’équation (1),
mais une matrice, de même que ψ n’est plus une fonction de x mais un vecteur. Cette matrice
H a-t-elle des propriétés particulières ?
2) Que se passe-t-il en x1 et xn ? On fera l’approximation supplémentaire que ψ0 = ψn+1 = 0,
c’est-à-dire que la fonction d’onde ≪ à l’infini ≫ est nulle. Quel sens physique cela peut-il avoir ?
2
3) Quel type de problème mathématique doit-on maintenant résoudre ? De ce point de vue,
que peut on alors dire du vecteur ψ et de E ?
III– Mise en œuvre numérique.
Il n’est pas question d’écrire un programme capable de résoudre un problème aux valeurs
propres ! Il existe de nombreuses bibliothèques de programmes déjà écrits et testés : ils sont
fiables et efficaces, il est inutile de réinventer la roue ! On utilisera ici une bibliothèque appelée
LAPACK 3 : on fera appel au sous-programme subroutine dsteqr capable de calculer les
valeurs propres et les vecteurs propres d’une matrice triadiagonale symétrique. Plutôt que
d’aller déchiffrer le mode d’emploi de dsteqr 4 , on pourra recopier le sous-programme suivant,
ou s’en inspirer :
subroutine diago(n,d,e,vp)
implicit none
integer,
intent(in)
:: n ! taille de la matrice
real(8), dimension(n),
intent(inout) :: d ! elements diagonaux
! en sortie, d contient les valeurs propres
real(8), dimension(n),
intent(in)
:: e ! elements sous-diagonaux
real(8), dimension(n,n), intent(out)
:: vp ! vecteurs propres
! vp(i,j) = i-ème élément du j-ème vecteur propre
integer :: info, l
real(8), dimension(2*n+2) :: work ! espace de travail
! en entree vp doit etre une matrice unite
vp = 0._8 ; forall( l = 1:n ) vp(l,l) = 1._8
call dsteqr( ’V’, n, d, e, vp, n, work, info ) ! appel LAPACK
if ( info == 0 ) then
print ’("Diagonalisation effectuee" )’
else
print ’("Echec de diagonalisation : INFO = ",i3)’, info
endif
end subroutine diago
Note : tous les nombres réels sont en 8 octets (real(kind=8) ou real(8)).
– En entrée, on a :
integer :: n : nombre de lignes et de colonnes de la matrice
real(kind=8), dimension(n) :: d : éléments diagonaux de la matrice
real(kind=8), dimension(n) :: e : éléments sous-diagonaux de la matrice.
Les autres éléments de la matrice sont nuls et ignorés.
– En sortie :
integer :: n : inchangé
real(kind=8), dimension(n) :: d : les valeurs propres obtenues
real(kind=8), dimension(n) :: e : détruite
real(kind=8), dimension(n,n) :: vp : les vecteurs propres (vp(i,j) est le i-ième élément
du j-ième vecteur propre).
3. pour Linear Algebra PACKage : c’est une bibliothèque standard très largement utilisée et qui fait partie
des paquets de la plupart des distributions Linux.
4. si besoin, ça se trouve aisément sur internet.
3
Les valeurs et vecteurs propres obtenus sont classées par valeurs croissantes des valeurs
propres.
1) Écrire un sous-programme qui crée un tableau real(8), dimension(n) :: v, contenant
les valeurs du potentiel. Pour le puits infini, il suffit de mettre 0, pour le potentiel harmonique,
x2 . Lorsqu’on voudra ensuite changer la forme du potentiel, il suffira de modifier ce sousprogramme, à l’exclusion du reste du programme.
2) Écrire un programme principal qui :
1. définisse un intervalle [−L/2, L/2], le divise en n segments de longueur δx et remplisse
les tableaux x(i) (contenant les xi ) et v(i) (contenant les vi ),
2. définisse et remplisse les tableaux d et e contenant les éléments diagonaux et sousdiagonaux de H,
3. en recherche les valeurs propres et les vecteurs propres et écrive les valeurs propres dans
un fichier et quelques vecteurs propres dans un autre.
La compilation de ce programme se fait en indiquant avec les options -l que l’on veut faire
appel à la bibliothèque lapack :
gfortran mon_prog.f90 -llapack -o mon_prog
où mon_prog.f90 est évidemment le nom de votre programme, que vous pouvez choisir librement. . .
IV– Étude numérique.
Puits carré infini.
Il est facile de définir un puits carré infini : il suffit de fixer la valeur du potentiel à zéro
partout sur l’intervalle ; comme la fonction d’onde est toujours nulle en dehors de l’intervalle,
cela revient à ce que le potentiel soit infini en dehors dudit intervalle.
Rappels théoriques 5 :
Si on considère une particule dans un puits carré infini de largeur L, les fonctions d’onde
solutions de l’équation de Schrödinger indépendante du temps sont nulles en dehors du puits
et ont la forme suivante dans le puits :
ψp (x) =
s
2
pπx
cos
L
L
p = 1, 3, 5, . . .
ψp (x) =
s
pπx
2
sin
L
L
p = 2, 4, 6, . . .
Les énergies de ces états s’écrivent :
h̄2 πp
Ep =
2m L
2
h̄2
= 1.
m
1) Essayer le programme avec n = 100, et L = 5, afin de comparer le résultat obtenu avec
le résultat théorique 6 .
Rappel : on choisit ici
5. Reportez-vous au cours de physique quantique.
6. on notera au passage que rechercher les valeurs propres et les vecteurs propres d’une matrice 100 × 100
n’a, a priori, rien de trivial !
4
Tracer la courbe Ep en fonction de p avec, sur le même graphe, la courbe théorique. Tracer
également les premières fonctions d’onde (p ∈ [1, 5]) ainsi que les fonctions d’onde théoriques,
puis quelques fonctions d’onde d’ordre plus élevé, dans le domaine où l’accord n’est pas bon.
Faites votre diagnostic.
On pourra faire quelques essais avec différentes valeurs de n et de L.
Potentiel harmonique.
Rappels théoriques.
Le deuxième cas dont la solution est connue est le potentiel harmonique 7 :
1
m
V (x) = kx2 = ω 2 x2 ,
2
2
ω=
s
k
m
Les énergies propres s’écrivent maintenant :
1
h̄ω,
Ep = p +
2
p = 0, 1, 2, 3, . . .
L’état fondamental, pour p = 0 a donc une énergie E0 = h̄ω/2.
Les fonctions d’onde deviennent :
2
1
x − x2
ψp (x) = q √
Hp ( )e 2σ0
σ0
σ0 π2p p!
s
h̄
et Hp est un polynôme de Hermite.
mω
2) Modifier
votre programme pour étudier le potentiel harmonique : on prendra k = 1, soit
√ q
√
h̄ω = 2m k/m = 2.
Répéter les opérations précédentes, tracer les énergies avec la courbe théorique et les premières
fonctions d’onde. N’y a-t-il pas une complication supplémentaire par rapport au cas précédent ?
Refaire le même calcul, toujours avec n = 100 mais L = 20. Diagnostic.
3) Recommencer, cette fois avec n = 200 et L = 20. Tracer sur le même graphe, l’énergie
potentielle divisée par un facteur (par exemple 100), et les premières fonctions d’onde au carré,
décalées verticalement de façon à bien les distinguer. Qu’est-ce que ça représente ?
où σ0 =
V– Double puits.
L’intérêt de cet exercice n’est bien sûr pas de chercher à résoudre un problème -le puits
infini ou l’oscillateur harmonique- dont la solution analytique est connue : cela permet juste de
tester le programme que l’on a écrit et d’illustrer le cours de physique quantique.
Toutefois, le même programme, à très peu de choses près, permet de résoudre des problèmes
sensiblement plus compliqués, pour lesquels les solutions analytiques sont pour l’essentiel inaccessibles. Remplacer le potentiel par un potentiel à double-puits :
V (x) = V0
x
x0
2
−1
!2
Il est facile de constater que les deux minnima se trouvent en ±x0 et que la hauteur de la
barrière est V0 (pour s’en assurer, tracer la courbe à la main. . .).
7. Se reporter de nouveau au cours de physique quantique.
5
On choisira x0 = 1 (en Bohr), soit une distance entre les deux puits 2x0 de l’ordre de
l’Ångström. On prendra soin de choisir l’intervalle de calcul pour éviter les artéfacts rencontrés
avant.
1) Tracer les deux premières fonctions d’onde ψ1 (x) et ψ2 (x) pour V0 = 0.001 Hartree (soit
27meV). Commenter sur la localisation de la particule et la symétrie des fonctions d’onde.
Tracer les fonctions d’onde :
ψ+ =
ψ1 + ψ2
√
;
2
ψ− =
ψ1 − ψ2
√
2
La commande gnuplot : plot ’fichier ’ using 1:($2+$3)/sqrt(2) (même chose avec le signe
moins) permet de le faire.
Que dire de la localisation de la particule dans ces cas là ?
Comme ce ne sont pas des fonctions propres, elles ne sont pas stationnaires : on doit alors
résoudre l’équation de Schrödinger dépendante du temps,
ih̄
∂ψ
h̄2 ∂ 2 ψ
=−
+Vψ
∂t
2m ∂x2
Montrer que :
iE2 t
iE1 t
h̄
+ ψ (x) e h̄
√ 2
ψ(x, t) =
2
est solution de cette équation. En déduire une estimation de la fréquence d’effet tunnel.
On pourra calculer cette fréquence en accroissant V0 de 0.001 à 100 en multipliant par 10 à
chaque fois. Comparer les fonctions d’onde obtenues pour 0.001 et 100. Commentaire.
2) Tracer les deux premières fonctions d’onde pour V0 = 1000. Qu’y a-t-il de nouveau ?
3) Introduire un champ de façon à rendre le double puits asymétrique :
ψ1 (x) e
V (x) = V0
x
x0
2
−1
!2
+ Ex
Essayer avec V0 = 10 et E = 0 et 0.1.
VI– L’électron.
Jusqu’à présent la particule étudiée n’était pas identifiée, ça pouvait être n’importe quel
type de particule.
On peut imaginer maintenant qu’il s’agit d’un électron soumis au potentiel dû aux atomes
environnants, noyaux et électrons associés, afin de déterminer les propriétés électroniques du
milieu considéré. A priori, ce potentiel devrait s’écrire


X
e2  X
Zi
1 
V (x) =
−
+
4πǫ0
i |x − Xi |
j |x − xj |
où Zi et Xi sont les numéro atomique et position de l’atome i et xj sont les positions de électrons
qui accompagnent les noyaux. Malheureusement, en dépit de la simplicité apparente de cette
expression, ce problème est d’une difficulté redoutable ! En effet, on ne peut pas découpler le
mouvement d’un électron de celui de tous les autres et il faudrait donc écrire une fonction
d’onde globale de tous les électrons 8 : ψ(x1 , x2 , x3 , . . . , xne ).
8. l’approximation dite de
immobiles. . .
≪
Born-Oppenheimer
≫
6
permet, en général, de considérer les noyaux comme
On peut toutefois souvent faire l’approximation où l’on considère un électron dans un champ
effectif créé par les noyaux et leurs électrons. On perd ainsi les effets de l’interaction explicite
électron-électron, mais si les autres électrons sont ≪ bien accrochés ≫ à leur noyau, ce n’est pas
toujours très grave. . .
On peut, par exemple, tenter :
V (x) =
X
i
−V0 e−
|x−Xi |
ρ
On pourra prendre 10 atomes, n = 1000, L = 20, V0 = 400 et ρ = 0.5. Les atomes seront
également répartis entre x = −6 et x = 6.
Tracer les 20 premières énergies propres et 11 ou 12 densités de probabilité (sur le même
graphe que l’énergie potentielle).
Commenter.
VII– Conclusion.
On a, sans coup férir, diagonalisé des matrices (1000 × 1000) en comptant sur la capacité
de calcul de l’ordinateur : c’est ce qu’on appelle un calcul par ≪ force brute ≫. Compte tenu du
temps que cela prend, que pensez-vous d’un problème tridimensionnel à un électron (et donc
une matrice (10003 × 10003 ) à traiter), et a fortiori d’un problème tridimensionnel à quelques
centaines d’électron (en gros, une molécule simple. . .) ?
7
Téléchargement