• Aucun résultat trouvé

Alg`ebre lin´eaire

Dans le document Licence de physique L3 PHYTEM (Page 55-61)

4.5.1 Un exemple : la diffusion de la chaleur ` a une dimension.

La loi de Fourier de diffusion de la chaleur dit simple-ment que le flux de chaleur en un point est proportionnel au gradient de temp´erature :

φ(~r) =~ −κ(~r)grad~ T(~r)

o`u κ(~r) est la conductivit´e thermique qui d´epend de la nature du milieu. Si celui-ci est homog`ene,κest une con-stante, sinonκd´epend de la position~r.

Si l’on produit de la chaleur en un point~r donn´e (par effet Joule ou par un apport quelconque, ou encore au contraire par une perte dans l’atmosph`ere), cette chaleur doit diffuser et cette chaleur diffus´ee par unit´e de temps doit ˆetre ´egale `a la quantit´e ˙Q(~r) de chaleur produite par unit´e de temps, ce qui donne :

div~φ(~r) = ˙Q(~r)

En combinant ces deux ´equations, on obtient facilement : grad~ κ(~r)·grad~ T(~r) +κ(~r) ∆T(~r) =−Q(~r)˙ (4.5) Cette ´equation, alli´ee `a d’´eventuelles conditions aux lim-ites, permet, en principe, de calculer la distribution de temp´erature en r´egime stationnaire dans un objet, con-naissant ˙Q(~r) et κ(~r). Autant dire que ce n’est pas tou-jours facile : que faudrait-il faire pour une r´esolution num´erique ?

Pour simplifier, on se restreindra ici `a une dimension, mais le probl`eme n’est pas tr`es diff´erent `a trois dimensions, du moins dans des g´eom´etries simples. L’´equation (4.5) se r´eduit alors `a :

dκ dx

dT

dx +κd2T

dx2 =−Q(x)˙

Le premi`ere ´etape est de discr´etiser le probl`eme : on pose,

x=i δx

o`uiest un entier etδxun pas d’int´egration, similaire `a ce qui a d´ej`a ´et´e vu dans le chapitre 4.3.2. On note alors :

T(x) =T(i δx) =Ti

La d´eriv´ee dT

dx peut ˆetre approch´ee par : dT

dx ∼ Ti+1−Ti

δx

ou bien

dT

dx ∼ Ti−Ti1

δx

56 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

ou encore :

dT

dx ∼Ti+1−Ti1

x

On pr´ef`erera la troisi`eme forme plus sym´etrique. La d´eriv´ee seconde, la d´eriv´ee de la d´eriv´ee, s’´ecrit :

d2T Cela donne donc, avec des notations ´evidentes : dκ de segments sur le barreau : c’est a priori un nombre qui peut ˆetre grand, quelques centaines, milliers, voire plus ; or, l’´equation (4.6) se re´ecrit ais´ement :

1 Ti. On vient de reformuler le probl`eme comme un syst`eme lin´eaire de n´equations `aninconnues (les Ti) : si on peut trouver des m´ethodes pour r´esoudre de tr`es gros syst`emes d’´equations lin´eaires, alors le probl`eme ci-dessus peut ˆetre consid´er´e comme r´esolu.

4.5.2 Syst` emes d’´ equations lin´ eaires.

Au del`a de n= 2 ou 3, il ne faut surtout pas tenter de r´esoudre le syst`eme lin´eaire en proc´edant par ´elimination comme on le fait d’habitude pour une r´esolution `a la main : les probl`emes de stabilit´e num´erique deviennent tr`es vite cruciaux. Il vaut bien mieux utiliser des sous-programmes de biblioth`eque : ce sont des programmes d´ej`a ´ecrits, sou-vent depuis longtemps, ´eprouv´es, dont les qualit´es et les d´efauts sont connus, compil´es et rassembl´es dans des bib-lioth`eques. Il suffit d’appeller le sous-programme choisi par uncalldans le programme que l’on a ´ecrit comme n’im-porte quel autre sous-programme, en suivant toutefois les indications fournies dans la documentation10 puis d’in-voquer la biblioth`eque lors de la compilation : c’est en g´en´eral une option de compilation11 : le compilateur ira puiser dans la biblioth`eque ce dont il a besoin. . .

Il n’y a donc aucune raison de r´einventer la roue ! C’est en fait une d´emarche tr`es courante en calcul scientifique : on se pose un probl`eme de physique, puis on se demande comment le traduire de fa¸con `a le traiter avec un pro-gramme de biblioth`eque d´ej`a existant.

10. Souvent en ligne.

11. g´en´eralement, l’option-l(pourlibrary=biblioth`eque), par ex-emple avec la biblioth`equelinpack:g95 machin.f90 -llinpack -o machin.

Dans le cas pr´esent, un syst`eme d’´equations lin´eaires se pr´esente de la fa¸con suivante :



o`u l’on cherche lesxi. Le probl`eme peut se reformuler en termes matriciels :

Pour ce qui est de la matrice A, il faut savoir que fortran stocke les matrices multicolonnes colonne par colonne : une colonne, puis une autre, puis une autre.

En m´emoire, se succ`edent ainsi : a11, a21, a31,· · · an1

(premi`ere colonne),a12, a22,. . .(deuxi`eme colonne),. . . etc., c’est-`a-dire que le premier indice va le plus vite (en C, c’est l’inverse). Si l’on veut ´ecrire des programmes effi-caces, il faut tenter de privil´egier les appels `a des ´el´ements successifs en m´emoire12, et donc dans les boucles im-briqu´ees, mettre autant que possible, le premier indice dans la boucle la plus interne. Par exemple :

do j = 1, n ! boucles dans le bon ordre a(1:n,j) = ...

enddo

et non l’inverse :

do i = 1, n ! boucles dans le mauvais ordre a(i,1:n) = ...

enddo

Pour r´esoudre le syst`eme d’´equations, on pourrait imag-iner qu’il suffise de calculer l’inverse de la matrice A et faire le produit :

x=A1·b

mais il se trouve que les algorithmes de r´esolution directe du syst`eme d’´equations sont plus efficaces.

4.5.2.1 La m´ethode LU

C’est le v´eritable cheval de bataille de tous ces probl`emes (voir r´ef. [3] pour une discussion plus appro-fondies des qualit´es et d´efauts des diff´erentes m´ethodes, par exemple Gauss-Jordan).

12. Parce que le compilateur g`ere mieux les transferts entre emoire et processeur de paquets de nombres connexes que des nom-bres pris dans n’importe quel ordre.

Imaginons que l’on ait d´ecompos´e la matrice A en un produit de deux matrices :

A=L·U

o`u L est une matrice triangulaire inf´erieure (L = lower) qui n’a des ´el´ements que sur et sous la diagonale :

L= sup´erieure (U=upper) qui n’a des ´el´ements que sur et au dessus de la diagonale :

U=

Le syst`eme initial se re´ecrit : L·(U·x) =b il reste `a chercherytel que :

L·y=b puisxtel que :

U·x=y

L’avantage de proc´eder ainsi est que maintenant le syst`eme est trivial `a cause de la forme triangulaire des deux ma-trices :

puis, en proc´edant de mˆeme `a l’envers : xn = yn

unn

· · ·

Reste `a faire la d´ecomposition proprement dite.

Il s’agit d’un algorithme typique de ceux dont sont friands les amateurs. Nous le d´etaillons ici pour le plaisir de ce genre de tourisme13! Cela s’appelle l’algorithme de Crout. priori non nuls, ainsi queU, soitn2+ninconnues, et donc nde trop. On fixe alors :

lii= 1, ∀i

13. Et surtout pas pour l’apprendre par cœur. . .

Pouri≤j, on obtient ais´ement : Tous les termes dans les sommes des ´equations (4.8) et (4.9) sont d´ej`a calcul´es `a condition d’appliquer les deux

´equations par i croissants pour unj donn´e, puis changer dej. Il ne s’agit finalement que d’un r´eordonancement tr`es simple du probl`eme.

En g´en´eral, les programmes qui appliquent cet algo-rithmes d´etruisent le contenu de la matriceAen rangeant les ´el´ements de L dans la partie inf´erieure de A, et les

´el´ements deUdans la partie sup´erieure, sachant que leslii

ne sont pas conserv´es, puisqu’ils valent 1. En outre, afin de limiter les d´egˆats lors des divisions parujj dans l’´equation (4.9), un certain r´earrangement des lignes et colonnes du syst`eme d’´equations doit ˆetre fait pour commencer par les ´el´ements pour lesquels ujj est grand (une divi-sion par un nombre tr`es petit donne parfois des r´esultats impr´evisibles). Les programmes de biblioth`eque font cela et souvent fournissent en prime des diagnostics lorsqueA est singuli`ere, ou trop proche d’une matrice singuli`ere.

4.5.2.2 Am´elioration it´erative de la pr´ecision.

Il faut n´eanmoins faire un peu attention `a la pr´ecision du r´esultat obtenu, car les termes du type 1

lii

et 1 uii

dans les

´equations (4.7) et (4.9) peuvent donner lieu `a des surprises si les diviseurs sont petits. Il y a plusieurs fa¸cons de s’en sortir. La premi`ere consiste `a utiliser un sous-programme de biblioth`eque capable de d´etecter ce genre de probl`eme : pratiquement toutes les biblioth`eques en proposent. Un autre test possible est de comparer les r´esultats obtenus en simple et en double pr´ecision.

Une cure possible est de partir d’une solution approch´ee x, et donc fausse, obtenue par, mettons, la m´ethodeLU et de chercher `a l’am´eliorer.

Soit :

qui est un syst`eme que l’on peut r´esoudre pour obtenirδx.

On peut alors corrigerx et recommencer jusqu’`a obtenir la pr´ecision voulue, `a condition ´evidemment que l’algo-rithme converge. . .

Il faut savoir cependant que les biblioth`eques pro-posent g´en´eralement un tr`es grand nombre de sous-programmes pr´evus pour des cas tr`es divers : il est donc conseill´e de choisir le programme adapt´e. Toutefois, pour la plupart des probl`emes standards du physi-cien, la m´ethodeLU est tr`es satisfaisante, mais pour les probl`emes exigeant d’´enormes matrices creuses tels que les

58 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

m´ethodes d’´el´ements finis (pour la r´esolution de probl`emes de m´ecanique des fluides par exemple), des m´ethodes sp´ecialement pr´evues `a cet effet doivent ˆetre utilis´ees.

4.5.2.3 Matrice inverse.

Une fois la d´ecomposition achev´ee, il est facile de

rem-placer bpar : 

ce qui donne la premi`ere colonne de A1 dansx, puis on proc`ede colonne par colonne en posant :

b=

en pla¸cant le nombre 1 sur lai-`eme ligne debpour obtenir lai-`eme colonne deA1.

4.5.2.4 D´eterminant d’une matrice.

C’est encore plus simple : detA=

Yn j=1

ujj

4.5.2.5 Matrice tridiagonale.

Si l’on ´etudie l’´equation (4.6), on s’aper¸coit vite que seuls les termes en i−1, i et i+ 1 sont non nuls. La matrice A ne comporte alors que des termes diagonaux, sous-diagonaux et sur-diagonaux : elle est donc tridiago-nale : Dans ce cas, il n’est nul besoin de stocker toute la matrice A avec sesn2 ´el´ements puisque, pour la plupart, ils sont nuls. On ´ecrit plutˆot

A= qui ne n´ecessite que trois tableaux den´el´ements,dpour la diagonale, e pour la sous-diagonale et f pour la sur-diagonale. Noter que e1et fn ne sont pas d´efinis.

Les ´equations (4.8) et (4.9) se r´eduisent `a : i=j−1 uj1j= ej

i=j ujj = dj−ljj1uj1j

i=j+ 1 lj+1j= fj

ujj

Les ´equations ci-dessus ne constituent pas en elles-mˆeme l’int´erˆet principal de ce paragraphe : le but est ici d’attirer l’attention sur le fait que pour un type de matrice, la m´ethode de r´esolution que l’on choisira n’est pas toujours la mˆeme que pour un autre type de ma-trice. Les biblioth`eques sont parfois fort riches et il est de bon ton de chercher un peu dans la documentation quel peut ˆetre le sous-programme le plus adapt´e au cas parti-culier envisag´e. Il existe des solutions pour des matrices

bande-diagonales ou des solutions it´eratives par ap-proximations successives pour des probl`emes difficiles, des d´ecompositions en valeurs singuli`eres quand le probl`eme se pose. . ., les ressources sont abondantes, parfois un peu trop, mˆeme !

4.5.3 Une g´ en´ eralisation de la m´ ethode de Newton ` a plusieurs dimensions.

Au chapitre 4.1.2, on a mentionn´e le fait que la m´ethode de Newton de recherche de z´ero pouvait se g´en´eraliser `a plusieurs dimensions. Cela peut ˆetre utile, si par exemple, au lieu d’un seul pendule comme dans l’exemple, on en avait plusieurs coupl´es entre eux et non plus astreints `a se d´eplacer dans un plan : on aurait alors deux angles polaires par pendule `a trouver et donc un syst`eme de 2N variables

`

a rechercher.

C’est le moment de s’y attaquer. Soit doncnfonctions denvariables

fj(x1, . . . , xi, . . . , xn), ∀j ∈[1, n]

dont on suppose qu’elles poss`edent un z´ero et qu’elles sont raisonnablement civilis´ees 14 : ces fonctions ne sont toutefois ´evidemment pas lin´eaires.

On d´emarre la recherche comme avant `a partir d’un point de d´epart :

x(0)1 , . . . , x(0)i , . . . , x(0)n on lin´earise alors les fonctions localement :

fj(x1, . . . , xi, . . . , xn) ci-dessus se re´ecrivent :

∂fj

14. Le termecivilis´epour une fonction signifie en gros que l’algo-rithme que l’on va utiliser marche. . .

−fj(x(0)1 , . . . , x(0)i , . . . , x(0)n )

C’est un syst`eme d’´equations lin´eaires dont les inconnues sont les{dxi}:

J·dx(1)=−f(0)

avec des notations sans surprise. La matriceJdes d´eriv´ees partielles, Jij =∂fj

∂xi, s’appelle la matrice jacobienne.

On r´esout donc le syst`eme, ce qui permet de calculer les {x(1)i } puis on recommence jusqu’`a convergence, comme dans le cas `a une dimension.

4.5.4 Probl` emes de vecteurs propres et de valeurs propres ou eigenproblems.

Il s’agit de r´esoudre l’´equation : A·x=λx

o`u connaissant A, on en cherche les valeurs propres λet les vecteurs propres x.

4.5.4.1 Un exemple : les modes propres d’un ensemble d’oscillateurs harmoniques coupl´es.

Prenons un cas tr`es simple : deux pendules simples coupl´es par un fil de torsion. L’´energie potentielle du syst`eme s’´ecrit :

V =−m1gcosθ1−m2gcosθ2+1

2C(θ1−θ2)2 avec des notations ´evidentes. Les ´equations du mouvement s’en d´eduisent sans difficult´e :



Puisque l’on s’int´eresse ici `a un probl`eme lin´eaire, on peut se restreindre `a des oscillations de petite amplitude, et avec l’approximation habituelle, on obtient :



un syst`eme pour lequel on cherche des solutions station-naires p´eriodiques du type :

θ1=a1eiωt, θ2=a2eiωt

ce qui se r´esout ais´ement en ´ecrivant que le d´eterminant du syst`eme est nul, etc.15

Cependant, on peut re´ecrire le probl`eme matricielle-ment :

La matriceDs’appelle la matrice dynamique du syst`eme et l’on s’aper¸coit donc que ω2 est une valeur propre de la matrice dynamique et quea en est un vecteur propre.

Pour un syst`eme 2×2 comme celui-ci, l’int´erˆet d’une telle remarque n’est pas ´evident, mais pour un syst`eme 100× 100 ? Par exemple, une mol´ecule qui comporte ne serait-ce que quelques dizaines d’atomes. . . il suffit alors d’´ecrire la matrice dynamique du syst`eme, une matricen×n o`u nest le nombre de degr´es de libert´e du syst`eme, et d’en chercher valeurs et vecteurs propres.

Il se trouve qu’il y a des algorithmes tr`es efficaces pour calculer num´eriquement les valeurs propres et les vecteurs propres de tr`es grosses matrices.

Ici encore, la fa¸con de proc´eder d´epend du type de ma-trice que l’on veut ´etudier, et ici encore, il faut faire appel

`

a des programmes de biblioth`eque.

4.5.4.2 Matrices tridiagonales sym´etriques : la m´ethode QL.

La matrice dynamique du paragraphe 4.5.4.1 peut ˆetre sym´etris´ee en rempla¸cant a1 par α1 = √

m11a1 et a2

par α2 = √

m12a2. De plus, si le nombre de pendules est plus grand que deux, si les pendules sont align´es et chaque pendule n’interagit qu’avec ses deux voisins les plus proches, la matrice D est tridiagonale sym´etrique. Il se trouve que beaucoup de probl`emes peuvent ˆetre ramen´es au calcul des valeurs propres d’une matrice tridiagonale sym´etrique qui est justement le cas le plus simple.

La plupart des programmes de biblioth`eque utilise la m´ethodeQLqui consiste `a faire une s´erie de transforma-tions orthogonales :

As+1=Ls·Qs

o`u Ls est une matrice triangulaire inf´erieure et Qs une matrice orthogonale, c’est-`a-dire que :

Qs1=Qts

Une s´erie de th´eor`emes, que nous n’´etudierons pas ici, montrent que l’on peut d´ecomposerLsde la fa¸con suivante

Ls=Qts·As

´ecrireQscomme un produit de rotations planes et que la s´equence

As+1=Qts·As·Qs

15. C’est d’ailleurs un exercice conseill´e : le d´eterminant donne une

´equation bicarr´ee enω, on trouve donc deux solutions positives et donc deux fr´equences propres ; `a chaque fr´equence propre correspond un couple (a1, a2) d’amplitudes pour les deux pendules, c’est-`a-dire un mode propre. Le mouvement des pendules est une combinaison lin´eaire de ces deux modes.

60 Licence de physique L3 : PHYTEM, Universit´e Pierre et Marie Curie Paris-6 & ENS-Cachan

fera apparaˆıtre les valeurs propres sur la diagonale.

Pour l’utilisateur, il suffit de fournir deux tableaux uni-dimensionnels contenant la diagonale et la sous-diagonale de la matrice initiale A ou A0. Au retour, on obtient les valeurs propres `a la place de la diagonale en g´en´eral class´ees par ordre de valeur d´ecroissante. Si l’on veut aussi les vecteurs propres, il faut ´egalement fournir un tableau n×net. . . bien lire la documentation pour d´eterminer si un vecteur propre donn´e occupe une ligne ou une colonne de la dite matrice ! En g´en´eral, les vecteurs propres obtenus sont normalis´es `a 1, soit, pour un vecteur propreaidonn´e :

X

a2i,ℓ= 1

o`uai,ℓ est laℓ-i`eme composante du vecteur propreai. 4.5.4.3 Rendre une matrice tridiagonale.

Quand la matrice n’a pas la forme requise, il faut la transformer d’abord, par exemple, lorsque les pendules coupl´es de notre exemplevoientleurs seconds voisins, ou bien lorsque l’objet ´etudi´e est une mol´ecule en vibra-tion dont les atomes sont coupl´es les uns aux autres en trois dimensions.

La m´ethode tourne toujours autour du mˆeme genre d’op´erations : on fait une s´equence du type :

As+1=Rts·As·Rs

o`u Rs est une rotation plane judicieusement choisie et l`a encore une batterie de th´eor`emes appropri´es montre que l’on doit converger vers une matrice tridiagonale.

4.5.4.4 Probl`emes aux valeurs propres g´en´ era-lis´es.

Ce sont des probl`emes du type :

A·x=λB·x (4.10)

o`u l’on cherche les valeurs propresλet les vecteurs propres x,AetB´etant des matrices connues : voyons un exemple.

4.5.4.4.1 L’´equation de Schr¨odinger. La r´esolu-tion num´erique de l’´equar´esolu-tion de Schr¨odinger est un probl`eme particuli`erement difficile et, outre qu’un tome entier ne suffirait pas `a le traiter compl`etement (voir, par exemple, la r´ef´erence [12]), c’est un domaine o`u la recherche est active ! Ici, nous nous contenterons de l’´equation stationnaire et l’on tentera une r´esolution en d´eveloppant la fonction d’onde ψ sur une base de fonc-tions connues : c’est, a priori, une approximation car rien ne dit que la vraie solution puisse ˆetre correctement d´evelopp´ee sur la base choisie, surtout si celle-ci est r´eduite

`

a un nombre fini, voire un petit nombre, de fonctions.

La consultation d’un cours de physique quantique mon-tre que l’on peut poser le probl`eme de la fa¸con suivante :

E=

(X)H(X)ψ(X)dX

R ψ(X)ψ(X)dX (4.11) o`u H est le Hamiltonien (connu) du syst`eme consid´er´e, X d´esigne l’ensemble des variables du probl`eme, ψ(X) la fonction d’onde que l’on cherche et E l’´energie (que

l’on cherche ´egalement). Pour simplifier les notations, il est d’usage d’´ecrire la mˆeme ´equation comme suit :

E=< ψ|H|ψ >

< ψ|ψ >

L’´energieE d´epend ´evidemment de la fonction d’onde et l’on montre que si l’on modifie l´eg`erementψ, E doit ˆetre minimum par rapport `a ce changement, si toutefois E et ψsont solutions du probl`eme.

On d´eveloppe alors la fonction d’onde sur une base de fonctions connuesχ:

ψ=X

cχ

en esp´erant que la base choisiemarchera. Le principe variationnel ci-dessus dit que le meilleur jeu de coefficients c est celui pour lequelEest minimum, donc pour unδck

quelconque, leδE doit ˆetre nul au premier ordre. Avec ces notations, l’´equation (4.11) s’´ecrit :

E= X

ℓm

ccmHℓm

X

cc

(4.12)

o`u

Hℓm=< χ|H|χm>

`

a condition toutefois que la base de fonctions soit or-thonorm´ee, soit :

< χm>=δℓm

Si l’on impose une variation δck au coefficient ck dans l’´equation (4.12), on obtient alors :

δE= X

m

δckcmHkm+X

cδckHℓk

!X

cc

−X

ℓm

ccmHℓm(δckck+ckδck)

or δE doit ˆetre nul ∀k, ∀δck, ce qui donne, apr`es avoir r´e-inject´e l’´equation (4.11) dans l’expression ci-dessus :

X

m

cmHkm=E ck ∀k autrement dit

H·c=Ec

avec des notations sans surprise. On reconnait l`a une

´equation aux valeurs propres : la r´esoudre donne `a la fois les ´energies propres et les coefficients correspondants du d´eveloppement de la fonction d’onde.

Pour des raisons diverses, il peut arriver cependant que la base de fonctions utilis´ee ne soit pas orthonorm´ee : par

Pour des raisons diverses, il peut arriver cependant que la base de fonctions utilis´ee ne soit pas orthonorm´ee : par

Dans le document Licence de physique L3 PHYTEM (Page 55-61)