Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en...

15
Méthodes informatiques pour la physique, TD Hubert Klein 2012 1

Transcript of Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en...

Page 1: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

Méthodes informatiques pour la physique, TD

Hubert Klein

2012

1

Page 2: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

Prise en main

Nous allons cette année utiliser le language python et certaines de ses librairies scientifiques pour réaliser noscalculs. Nous allons nous familiariser avec cet environnement de travail au cours de cette première séance.

Vous trouverez sur eCUME, dans la rubrique correspondant à la première séance un fichier nommé prise_en_main.pyqui contient quelques exemples illustrant la syntaxe du language, et l’utilisation des librairies que nous allons utiliser.

Vous pouvez ouvrir ce fichier à l’aide d’un éditeur de texte, puis lancer dans un terminal la commande ipython-pylab qui va lancer une session python interactive et charger les librairies dont nous avons besoin.

Vous pourrez alors exécuter les différents exemples présents dans le fichier et examiner leurs résultats, puis vouslivrer à vos propres expérimentations pour commencer votre apprentissage du language.

Les points importants à comprendre aujourd’hui :

1. La réalisation d’un test sur une variable

2. La structure d’une itération en python

3. La création et la manipulation des éléments d’un tableau à une dimension à l’aide de la librairie numpy

4. Le tracé d’un graphe à l’aide de la librairie matplotlib

A titre d’exercice :

1. Créer un tableau contenant les 100 premiers nombres impairs, et les afficher jusqu’à la valeur 77

2. Tracer la fonction sin(π.x)/π.x dans l’intervalle [−20 : 20] par pas de 0,01

3. Quel est le résultat de l’opération 3/2 ? Et de 3.0/ 2 ?

4. Quel est le résultat de l’opération 1+10−16 ?

2

Page 3: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

1 Precision de représentation, Algorithme instable

Nous allons nous intéresser au caclul de l’intégrale

En =∫ 1

0xn exp(x−1)dx

En est positif et décroit avec n.

On peut facilement établir la relation de récurrence

En = [xn exp(x−1)]10−n∫ 1

0xn−1 exp(x−1)dx = 1−n.En−1

Le premier terme E1 s’exprime

E1 =∫ 1

0xexp(x−1)dx =

(x−1).exp(x)e

=1e

1.1 Programmation

1. Réalisez un petit programme qui calcule les vingt premiers termes de la suite et qui les affiche. Montrer que laformule utilisée est instable (comparer aux valeurs exactes fournies par l’enseignant).

2. Le problème peut-être résolu en utilisant la relation de récurrence suivante

En−1 =1−En

n

3. Modifier votre programme pour utiliser cette récurrence alternative, montrer que l’algorithme est alors stablepour les vingt premières valeurs. On prendra E20 = 0.

Le fichier valeurs_exactes.dat contient les valeurs des 20 premiers termes de la suite calculés avec une grandeprécision. Le code suivant permet de charger et d’afficher ces valeurs à partir du fichier :

valeurs_exactes=loadtxt(’valeurs_exactes.dat’,dtype=float,delimiter=’,’,skiprows=2,usecols=(1,))print valeurs_exactes

Vous pourrez ensuite les utiliser dans votre programme en comparaison des valeurs que vous calculez.

1.2 Analyse

Observer la propagation des erreurs au cours du calcul, pour expliquer pourquoi l’un des algorithmes est stable.Dans le cas de l’algorithme instable déterminer à partir de quelle récurrence le calcul commence à diverger, comparezà la valeur théorique attendue.

3

Page 4: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

2 Régression linéaire

Le courant tunnel entre deux électrodes dépend de la distance séparant celles-ci suivant l’expression I≡Aexp(−Bz)où I est le courant, et z la distance séparant les électrodes (de l’ordre de grandeur du nm)

2.1 Programmation

1. Montrez qu’il est possible de linéariser ce problème pour extraire les constantes A et B.

2. Le fichier iv.dat contient une série de 100 couples (z, I). Ecrivez un programme réalisant une régressionlinéaire sur cet ensemble de données et fournissant en sortie les valeurs A et B..

3. Le fichier iv2.dat contient des données encadrées par des barres d’erreur sur I. Réalisez un programme permet-tant de calculer les coefficients A et B en tenant compte de ces incertitudes.

Le code suivant permet d’ouvrir le fichier iv.dat (2 colonnes de 100 valeurs), et de stocker les valeurs lues dansle tableau à deux dimensions data

data=loadtxt(’iv.dat’,dtype=float)print data.shape#.shape renvoie un tuple (nbre lignes,nbre colonnes)#data[:,0] : colonne des x#data[:,1] : colonne des y

4

Page 5: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

3 Marche aléatoire

FIGURE 1 – Exemple de marche au hasard à deux dimensions, avec un pas de 0,6 µm, 150 itérations

Nous allons nous intéresser au mouvement aléatoire d’une particule, c’est à dire simuler un mouvement Brownien,tout d’abord à une dimension, puis à deux dimensions.

Dans le cas 1D, il s’agira de simuler le déplacement d’une particule le long d’un axe x pouvant se déplacer versla gauche ou la droite d’une distance l avec les mêmes probabilités p = 1/2. L’extension à 3D se fera en considérantdes déplacelments l s’effectuant avec les mêmes probabilités quelle que soit la direction.

3.1 Cas à une dimension

Nous allons nous intéresser au déplacement d’un objet sur un axe au cours du temps. La question est quelleest la distance parcourue en moyenne ? Nous nous attendrions à une distance nulle, puisque l’objet à les mêmesprobabilités de se dépacer vers la gauche ou la droite. La question est en fait mal posée, il faudrait se demander quelleest la distance moyenne parcourue en valeur absolue ? Soit quelle est la moyenne de |D|. Il est plus commode deraisonner avec le carré de la distance, D2, en fonction du nombre de pas N réalisés au cours de la marche.

Si l’on suppose que la longueur du pas est 1, après un pas D2N = 1, on peut alors écrire que < D2

1 >= 1. Lavaleur de D2

N pour N > 1 peut se déduire de DN−1, en effet si après N− 1 pas on a DN−1, alors après N pas on aDN = DN−1±1, d’où pour la distance au carré

D2N =

{D2

N−1 +2DN−1 +1D2

N−1−2DN−1 +1

Pour un certain nombre de séquences indépendantes, nous pouvons espérer obtenir chaque valeur une fois sur deux.La valeur attendue est donc simplement la moyenne des deux valeurs possibles, soit D2

N−1 + 1. nous nous attendonsdonc à

< D2N >=< D2

N−1 >+1

nous avons vu que < D21 >= 1, d’où

< D2N >= N

ce qui est un résultat relativement simple. . .. Si nous souhaitons revenir à des distances, il suffit de calculer la moyennequadratique (root mean square) Drms, qui vaut pour N pas :

Drms =√

< D2 >=√

N

Ecrivez un programme permettant de vérifier cet énoncé. Vous utiliserez pour cela le générateur de nombre aléa-toire random_sample de numpy. Vous utiliserez les valeurs tirées pour décider du sens du mouvement. Vous tracerezD2

N = f (t).

5

Page 6: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

3.1.1 distribution de probabilité

Nous allons maintenant raffiner un peu le programe. Nous allons effectuer plusieurs expériences de N pas, etreprésenter la distribution des distances D. Il faudra pour cela stocker la distance parcourue au cours de chaque marchedans un tableau, puis tracer un histogramme des différentes valeurs D obtenues. Vous réaliserez un histogramme sur1000 containers.

– Réaliser plusieurs essais en faisant varier le nombre de pas– Montrer que ces courbes peuvent être approximées par une loi normale, quel est le paramètre qui influence la

largeur à mi-hauteur ?Rappel : la loi normale est une fonction gaussienne s’écrivant

f (x) =1

σ√

2πexp(−(x−µ)2

2σ2 )

où µ est la valeur moyenne de x, et σ son écart-type. Dans le cas de notre processus aléatoire, µ = 0 et σ =√

N.

3.1.2 Programmation

1. Réaliser un programme permettant de vérifier la dépendance de la valeur moyenne de DRMS par rapport aunombre de pas N

2. Modifier le programme pour qu’il réalise plusieurs expériences de N pas, stocke toutes les distances D parcou-rues et en réalise l’histogramme sur N/2 intervalles.

3. Vérifier que cette histogramme est modélisée par une loi normale.

Le tirage aléatoire de nombre compris entre 0 et 1 va se faire à l’aide de la fonction random_sample(size=N) dumodule numpy.random. Le code suivant permet de tirer steps fois un nombre dans l’intervalle [0 : 1[, de réinitialiserle générateur de nombre aléatoire dans un état différent, tout cela runs fois.

from numpy.random import *steps=1001runs=10000graine=1389seed(graine)for i in range(runs):

for j in range(steps):dir=random_sample()

graine=graine+1seed(graine)

L’histogramme va être réalisé avec la fonction histogram de numpy. Le code suivant calcule l’histogramme dutableau res entre ses valeurs minimales et maximales sur bins intervalles. Les intervalles sont renvoyés dans letableau bins, les fréquences dans le tableau hist. Les valeurs renvoyées sont ici normées (argument normed=True),elles sont ensuite tracées.

hist,bins=histogram(res,bins=long/2,normed=True)plt.plot(bins[:-1],hist)

3.2 Cas à trois dimensions, diffusion d’une molécule dans un gaz

Nous allons utiliser la théorie cinétique des gaz pour injecter des paramètres pertinents dans notre modèle. ladistribution des vitesses v (Maxwell-Boltzmann) s’écrit

f (v) =

√2π

(m

kBT

)3

v2 exp(− mv2

2kBT

)

6

Page 7: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

la distribution des vélocités suivants les axes x,y,z s’écrit

f (vx,vy,vz) =

(m

2πkBT

)3/2

exp

(−−m(v2

x + v2y + v2

z )

2kBT

)(1)

=

(m

2πkBT

)1/2

exp(−mv2

x

2kBT

).

(m

2πkBT

)1/2

exp

(−mv2

y

2kBT

).

(m

2πkBT

)1/2

exp(−mv2

z

2kBT

)(2)

qui est le produit de 3 distributions gaussiennes. La distribution pour une vitesse est :

f (vx) =

(m

2πkBT

)1/2

exp(−mv2

x

2kBT

)c’est à dire une distribution de valeur moyenne 0 et d’écart type σ = kBT/m

La distribution de Maxwelle-Boltzmann permet de calculer la vitesse la plus probable d’une molécule à unetempérature T :

v =

√2kBT

m=

√2RTM

où m est la masse de la molécule, M sa masse molaire, et R la constante des gaz parfaits. ainsi que la vitesse moyenne :

< v >=

√8RTM

et le libre parcours moyen, c’est à dire la distance parcourue par une molécule avant de subir un choc :

λ =kBT√2πd2P

d étant le diamètre de la molécule, et P la pression.Si nous sommes capables de simuler correctement la trajectoire aléatoire d’une particule en 3D, nous devrions

trouver une loi du typeD2(t) = αt

où α représentera le coefficient de diffusion de la molécule (en m2.s−1 en unité du S.I.). Ce coefficient nouspermettra de remonter au déplacement moyen d’une molécule pour un temps donné. Pour faire les calculs, nousutiliserons une molécule de menthol de masse molaire M = 156.3g, à une température de 300 K et une pressionP = 105 Pa.

3.2.1 Programmation

Nous allons simuler le déplacement de la particule en tirant aléatoirement des vitesses suivant les axes x,y,z dansdes distributions gaussiennes, puis en multipliant ces vitesses par le temps moyen entre deux chocs. Nous obtiendronsainsi trois coordonnées qui nous permettront de calculer le déplacement de la particule pendant cet intervalle detemps. Le code suivant permet de tirer un tableau de 100 valeurs dans une distribution gaussienne de moyenne 0 etd’écart-type sigma à l’aide de la fonction normal :

from numpy.random import *

graine=1389seed(graine)sigma=...x=normal(loc=0,scale=sigma,size=100)

1. déterminer la vitesse moyenne de cette molécule, son libre parcours moyen, et le temps moyen entre 2 chocs

2. écrire un programme permetant de calculer la distance moyenne parcourue en fonction du temps

7

Page 8: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

3.2.2 Interprétation

1. évaluer la valeur de la constante de diffusion α

2. quelle va être l’influence de la température sur la distace moyenne parcourue ?

3. d’après ces calculs, combien de temps faut-il à cette molécule pour diffuser dans une pièce d’un volume de9m3 ?

8

Page 9: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

4 Étude du rayonnement du corps noir

Max Planck a montré qu’une enceinte portée à une température T (un corps noir) est la source d’un rayonnementélectromagnétique. La distribution spectrale de la densité d’énergie (énergie par élément de volume) ρ(λ,T ) de cerayonnement s’exprime

ρ(λ,T ) =8πhc

λ51

exp( hc

λkT

)−1

où λ est la longueur d’onde, k la constante de Boltzmann, h la constante de Planck et c la vitesse de la lumière dans levide.

0

5

10

15

20

25

0 0.2 0.4 0.6 0.8 1

ρ(λ,T )

λ

FIGURE 2 – Distribution spectrale de la densité d’énergie rayonnée par un corps noir (u.a.)

On détermine la densité d’énergie totale à une température donnée en intégrant cette équation en fonction de λ

ρtotal(T ) =∫

0ρ(λ,T )dλ

Nous allons essayer de calculer numériquement la densité d’énergie totale numériquement. Nous utiliserons pourcela la méthode des trapèzes. Le calcul ne pourra pas être mené directement, car il n’est pas posible d’intégrer numé-riquement sur des bornes infines ou semi-infinies. Nous allons donc résoudre le problème en 2 étapes

1. une intégration numérique bornée de 0 à B par la méthode des trapèzes

2. pour l’intervalle B→ ∞ nous utiliserons une approximation de la fonction à intégrer dont on déterminera l’ex-pression analytique

4.1 Programmation

1. Dans un premier temps, réécrire l’équation de la densité d’énergie en introduisant un changement de variablex = hν/kT (faire une étape intermédiaire en remplaçant d’abord λ par c/ν ).

2. Montrer ensuite qu’au delà d’une certaine valeur de x on peut approximer la fonction par une fonction dont onpeut déterminer la primitive analytiquement (il faudra pour cela réaliser une intégration par parties).

3. Ecrire un programme capable d’intégrer une fonction f (x) par la méthode des trapèzes, le tester dans un cas oùla méthode sera exacte. La routine d’intégration sera écrite sous la forme d’une fonction.

4. Modifier le programme pour intégrer la densité d’énergie du corps noir en incluant l’approximation pour laborne infinie.

9

Page 10: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

4.2 Analyse

1. Calculer les valeurs de la densité d’énergie pour la gamme de température T ∈ [173K,373K] en prenant 100points dans l’intervalle. Vérifier que le résultat suit bien une loi de puissance enT .

2. Modifier le programme précédent pour calculer la densité d’énergie dans deux domaines de longueur d’onde :visible de 400 à 700 nm, et infra-rouge de 1µm à 10 µm. Faire tourner le calcul pour des températures allant del’ambiante jusqu’à 10 000K, représenter alors la proportion relative de rayonnement dans les deux domainesde longueur d’onde en fonction de la température. Que vaut cette proportion pour le rayonnement solaire ? Apartir de quelle température un objet rayone-t-il plus dans le visible que l’infra-rouge ?

4.3 Allons plus loin

Nous allons maintenant vérifier s’il est possible de modéliser le rayonnement émis par le soleil par un modèlede corps noir. La figure suivante représente l’irradiance solaire qui serait percue sur la terre si elle était dépourvued’atmosphère. Ces données au format ASCII sont disponibles dans le fichier ASTMG173.csv où la première colonnede données représente les longueurs d’ondes en nm, et la deuxième l’irradiance en W.m2.nm−1.

FIGURE 3 – Irradiance totale mesurée au sommet de l’atmosphère terrestre, exprimée en W.m2.nm−1’

La radiance spectrale d’un corps noir s’exprime

BT (λ) =2hc2

λ5 .1

exp(

hcλkBT

)−1

et représente la puissance émise par la surface du corps, par unité de surface projetée de l’émetteur, par unitéspectrale (de longueur d’onde ici), et par unité d’angle solide. Pour pouvoir superposer cette radiance au spectremesuré au sommet de l’atmosphère terrestre, il va donc falloir normaliser cette puissance émise à la surface émettricedu soleil vue depuis la terre, et à l’angle solide correspondant à 1m2 de la surface terrestre vue depuis le soleil. Noussupposerons que le rayonnement est reçu à incidence normale sur la surface de la terre.

Nous allons écrire un programme de minimisation par la méthode des moindres carrés pour trouver la températurecorrespondant à l’accord optimal entre le modèle du corps noir et les données expérimentales. Cette températurenous donnera une estimation de la température de la surface du soleil que nous pourrons comparer aux données de lalittérature.

10

Page 11: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

Pour cela nous allons utiliser le module scipy.optimize, et plus particulièrement la fonction leastsq de cemodule qui est une routine générale de minimisation par la méthode des moindres carrés. Le fait que cette routine soitgénérique rend son utilisation un peu compliquée...

4.3.1 Utilisation de la routine leastsq

il faut définir deux fonctions : le modèle model et la fonction d’erreur permettant de calculer l’écart entre lemodèle et les données errfunc. Ces deux fonctions doivent utiliser une même liste de paramètres p, x,y représententles valeurs à modéliser.

def model(p,x):return p[0]*x**2+p[1]*x+p[2]

def errfunc(p,x,y):return model(p,x)-y

Il suffit ensuite d’initialiser les valeurs des paramètres et de lancer la régression

p0=[12,58,45]p1,success = leastsq(errfunc,p0[:],args=(data_x,data_y))

la liste retournée p1, contient le jeu de paramètres correspondant à la régression. Pour plus d’informations, reportezvous à l’aide de la fonction.

4.3.2 Données

– Diamètre du soleil DS = 1,392.106km– Distance moyenne soleil / terre (approximée à 1 U.A) DST = 149,597870700.106km

11

Page 12: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

5 Résolution d’équations différentielles

5.1 Méthode d’Euler, décroissance radioactive

Nous allons appliquer la méthode d’Euler à l’intégration de l’équation différentielle correspondant à la désinté-gration radioactive

dNdt

=−k.N

où N représente le nombre de noyaux radioactifs d’une source, et k la constante de décroissance de cette source.Nous allons calculer le taux de décroissance d’un échantillon de 1µg de césium-137 (M=136,9070835 g.mol−1).

En comparant les résultats numériques à la solution analytique, déterminer l’incrément de temps à partir duquel laméthode est stable.

5.2 Match Euler / Scipy, oscillateur

Nous allons maintenant tenter d’intégrer une équation différentielle correspondant au mouvement oscillant d’unemasse m suspendue au bout d’un ressort de raideur k. L’équation différentielle du mouvement de cette masse s’écrit

d2xdx2 +ω

2x = 0

où ω =√

k/m est la pulsation propre de l’oscillateur.Pour la résolution numérique, l’équation va être écrite sous la forme de deux équations du premier ordre, et les

solutions seront calculées comme un vecteur X(x, dx/dt). Vous essaierez tout d’abord de simuler le mouvement par laméthode d’Euler en prenant k =m= 1 avec un pas de temps de 10 ms pour un temps total de 10s, avec x(t = 0)= 0,1m.Pour cela vous définirez une fonction deriv renvoyant les valeurs des dérivées du vecteur X.

Nous utiliserons ensuite la méthode odeint du module scipy.integrate, en utilisant la fonction dériv définieprécedemment. La fonction odeint prend comme argument la fonction permettant de calculer les dérivées, le vecteurcontenant les conditions initiales ainsi que le vecteur temps.

from scipy.integrate import odeint

def deriv(x,t):dx=x[1]d2x=-alpha*x[0]return (dx,d2x)

#vecteur tempst=linspace(0,1,1000)#conditions initialesx0=[0,0]#résolution#le vecteur X est de la forme X(x,dx/dt)X=odeint(deriv,x0,t)plot(t,X[:,0])show()

en utilisant le même pas de temps et les mêmes conditions initiales, comparez les résultats obtenus par les deuxméthodes.

12

Page 13: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

6 Dynamique Moléculaire : la molécule de HCl

6.1 Physique

Au cours de ce projet, nous allons modéliser le comportement oscillatoire d’une molécule diatomique : l’acidechlorhydrique HCl

Pour cela, nous allons devoir résoudre l’équation de Schrödinger (indépendante du temps) :(− h̄2

2m∂2

∂r2 +V (r))

Ψ(r) = E(r)Ψ(r)

Toute la physique du problème se trouve dans le potentiel à utiliser pour décrire correctement les interactionsentre atomes. Le potentiel de Morse est un modèle relativement simple pour l’énergie potenitelle d’une moléculediatomique. C’est une meilleure approximation que l’oscillateur harmonique pour le comportement oscillatoire d’unemolécule car il inclue explicitement l’effet de la rupture de liaison, et prend en compte l’anharmonicité d’une liaisonréelle entre atomes. Il s’exprime :

V (r) = De(1− exp(−α(r− re))2

où re représente la distance d’équilibre entre atomes,De la profondeur du puit et α la largeur du puit de potentiel. Pource potentiel, les valeurs propres solutions de l’équation de Schrödinger seront de la forme

hν0(n+1/2)− (hν0(n+1/2))2

4.De

ν0 =α

√2.De

µ

avec µ la masse réduite du systèmePour une molécule de HCl ces paramètres prennent les valeurs suivantes :– re = 1.275 Å– De = 4.61 eV– α = 1.81 Å−1

Si l’on approxime la tranistion vibrationnelle de l’état fondamental au premier état excité par un oscillateur har-monique quantique, la constante de liaison (analogue à la raideur d’un ressort) peut-être calculée. La fréquence detransition s’exprime

h̄ω =

√kµ

On trouve couramment dans la littérature une fréquence associée à cette transition de 86,6.1012Hz, et une constantede liaison associée de 482 N.m−1.

Pour éviter les problèmes d’arrondis au cours des calculs nous allons utiliser les unités atomiques où– h̄ = 1– l’unité d’énergie est le hartree 1Ha = 27.211 eV

13

Page 14: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

– l’unité de masse est la masse de l’électron me = 9.10938215e−31 kg– l’unité de longueur est le rayon de Bohr a0 = 5.2917720859e−11 m

Les autres paramètres à considérer étant les masses des deux atomes mis en jeu (en unité de masse atomique) :– mH = 1.007976– mCl = 35.4527Nous allons bien évidemment résoudre notre problème numériquement,

6.2 A faire

1. Mettre toutes les constantes utilisées dans le bon système d’unités. Un certain nombre de conversions vontêtre nécessaires avant les calculs. Ces conversions seront facilitées par le module scipy.constants qui vouspermet de les appeller simplement dans un programme. Certaines constantes possèdent un symbole propre :h pour la constante de planck, e pour la charge de l’électron... (voir la page suivante pour plus de détailshttp ://docs.scipy.org/doc/scipy/reference/constants.html). Les autres constantes sont appellées via la commandevalue(’nom de la constante’) qui renvoie la valeur numérique demandée. Les noms de constantes quenous allons utiliser sont :– atomic unit of length pour le rayon de Bohr– atomic unit of electric potential pour l’unité d’énergie– atomic mass constant pour convertir les masses d’unités atomique en Kg– atomic unit of mass pour l’unité de masseA noter que la commande unit(nom de la constante) renvoie ses unités physiques, et la commande precision(nomde la constante) renvoie sa précision de détermination.

2. Discrétiser l’équation de Schrödinger, et montrer qu’elle se ramène à une écriture matricielle de la forme A.X =λX où A est une matrice tridiagonale réelle, X un vecteur représentant la fonction d’onde, et λ la valeur proprecorrespondante.

3. écrire un programme permettant de résoudre cette équation pour notre molécule

6.3 Programmation

Nous allons utiliser une routine déjà existante de la librairie scipy pour diagonaliser notre matrice : eigh

#on utilise la routine eigh de scipy pour diagonaliser la matrice

14

Page 15: Méthodes informatiques pour la physique, TD ·  · 2012-04-03Le problème peut-être résolu en utilisant la relation de récurrence suivante E ... #.shape renvoie un tuple (nbre

2012 Méthodes Informatiques pour la Physique, TP/TD

from scipy.linalg import eigh

#creation de la matrice NxNH=zeros ( (N,N) )

#remplissage matricefor i in range (1,N-1):

H[i][i...

#diagonalisation, valeurs de retours : valeurs_propres[N],vecteurs_propres[N,N]values,vectors=eigh (H)#1 vecteur propre = 1 colonne de la matrice vecteurs_propres[N,N]

6.4 Interprétation

1. Les niveaux d’énergie sont-ils en accord avec la formule théorique ?

2. Représenter sur un graphe la forme du potentiel ainsi que les 3 premières solutions de l’équation (représenterla fonction d’onde décalée de la valeur de l’énergie)

3. Calculer la première transition possible entre deux niveaux vibrationnels, comparer à des valeurs expérimen-tales.

4. Modifier le programme pour remplacer le potentiel de morse par un potentiel harmonique de la forme V (r) =1/2k.r2 avec k = 2.De.α

2. Dans ce cas les valeurs propres sont de la forme En = hν0(n+1/2).

5. Le potentiel harmonique est-il une bonne approximation pour l’état vibrationnel fondamental de la molécule ?Pour ses états excités ? Pourquoi.

15