Pokročilé programovanie XI Diagonalizácia matíc Peter Markoš Katedra experimentálnej fyziky F2-523 Letný semester 2015/2016
Obsah Fyzikálne príklady: zviazané oscilátory, anizotrópne systémy, kvantová mechanika Jacobiho metóda diagonalizácie reálnych symetrických a komplexných hermitovských matíc Iteračná metóda, Schmidtova ortogonalizácia
Systém zviazaných oscilátorov Uvažujme N navzájom zviazaných oscilátorov. Pohybová rovnica pre i-ty oscilátor: M i 2 x i t 2 = M iω 2 i x i j k ij (x i x j ) Posledný člen reprezentuje vzájomnú väzbu. Príklad: Dva rovnaké zviazané oscilátory majú dva vlastné módy: Predpokladajme x 1 = u 1 e iωt, x 2 = u 2 e iωt Pohybové rovnice potom prejdú na systém lineárnych rovníc ( ) ( ) ( ) ω 2 + k/m k/m u1 k/m ω 2 = Ω 2 u1 + k/m u 2 u 2 Ktorý má riešenie len pre dve vlastné hodnoty Ω 1,2.
Dva rovnaké zviazané oscilátory majú dva vlastné módy: Ω 1 = ω Ω 2 = ω 2 + 2k/M dané vlastnými hodnotami matice ( ) ω 2 + k/m k/m k/m ω 2 + k/m
Príklad: kmity atómov v kryštalickej mriežke Vo fyzike tuhých látok: Atómy v jednorozmernej mriežke s mriežkovou konštantou a. T L k M M M M M a n - 1 n n + 1 u n Pohybové rovnice: M i 2 x i t 2 = M iω 2 i x i j K ij (x i x j ) Zjednodušenie: M i = M, ω i = ω, { MK ak K ij = 0 inak i j = 1
Príklad: kmity atómov v kryštalickej mriežke Zjednodušenie: atómy sú rovnaké, M i m, ω i ω Hľadáme riešenie x i = u i e iωt 1 s vlastnými frekvenciami Ω. Tento prípad vieme vyriešiť analyticky: Disperzný vzťah pre kmity: Ω 2 (q) = 4 K M sin2 qa 2, u i = Ae iaqi Ω 0,5 0-1 -0,5 0 0,5 1 q a / π Všetky atómy kmitajú s rovnakou frekvenciou ale rôznymi výchylkami u i. Frekvencie Ω sú vlastné frekvencie. Hodnoty vlnového vektora q určíme z okrajových podmienok.
Všeobecný prípad Matica K ij je plná. Opäť predpokladáme x i = u i e iωt, 2 x i t 2 = Ω2 u i a pre časovo nezávislé amplitúdy u i dostaneme systém lineárnych rovníc ω 1 2 Ω2 K 12 K 13... K 1N u 1 K 21 ω 2 2 Ω2 K 23... K 2N u 2............ = 0 K N1... K NN 1 ω N 2 Ω2 u N Ω 2 sú vlastné hodnoty. Dôležité: matica musí byť symetrická: K ij = K ji. Neskôr narazíte aj na hermitovské matice K ij = Kji Len tak zaručíme, že vlastné hodnoty sú reálne.
Jacobiho metóda - geometrická formulácia Najprv diagonalizujme symetrickú maticu 2 2: ( ) ( ) ( ) cosφ sin φ a11 a 12 cosφ + sin φ = sin φ cos φ a 21 a 22 sin φ cos φ ( ) λ1 0 0 λ 2 Nediagonálne členy sú nulové, ak sin 2φ cos 2φ = 2a 12 (a 22 a 11 ) (čo sa stane, keď a 11 = a 22??). λ 1 = a 11 cos 2 φ + a 22 sin 2 φ a 12 sin 2φ λ 2 = a 22 cos 2 φ + a 11 sin 2 φ + a 12 sin 2φ Diagonalizácia matice 2 2 je de facto rotáciou v rovine o uhol φ.
Jacobiho metóda - vlastné vektory Presvedčte sa, že platí a 21 a 22 sin φ ( a11 a 12 ) ( cos φ ( a11 a 12 a 21 a 22 ) ( sin φ cos φ ) ) = λ 1 ( cos φ sin φ = λ 2 ( sin φ cos φ Máme preto aj ortonormálne vlastné vektory ( ) ( ) cos φ sin φ v 1 =, v sin φ 2 = cos φ ) )
Jacobiho metóda - iná formulácia Majme maticu A a diagonalizujme ju štandardným spôsobom Q 1 AQ = Λ λ 1,2 = a 11 + a 22 2 (a11 a 22 ) ± 2 + a 12 a 21 4 Táto formulácia je vhodná aj pre hermitovské matice, keď a 21 = a 12 Vlastné vektory nájdeme z riešenia sústavy lineárnych rovníc ( ) ( ) Q11 Q11 A = λ Q 1 12 Q 12 ( Q21 A Q 22 ) = λ 2 ( Q21 Q 22 a podmienky normalizácie: Q a1 2 + Q a2 2 = 1, a = 1, 2. )
Jacobiho metóda - všeobecná matica Máme symetrickú maticu A. Budeme likvidovať nediagonálne prvky postupnými rotáciami matíc 2 2. 1. Nájdeme S = i<j A ij (Sčítame len nediagonálne prvky!) 2. Nájdeme najväčší (v absolútnej hodnote) nediagonálny prvok A ij 3. Zostrojíme maticu Q takú, aby transformácia A Q 1 AQ vynulovala prvok A ij. 4. Body 1-3 opakujeme, kým S nie je dostatočne malé (napr. zvolím na začiatku ε 10 7 a pokračujem, kým S < ε).
Jacobiho metóda - všeobecná matica Všeobecná ortogonálna transformácia: A Q 1 AQ zachováva všetky invarianty matice Zostrojíme 1 0 0... 0 1 0... 0... cos φ... sin φ... Q = 0... 0 1... 0... sin φ... cos φ......... 0 0 1 matica je celá jednotková, len v riadkoch a stĺpcoch i a j sme vložili 2 2 maticu takú, aby vynulovala prvok A ij. Podobnostná transformácia samozrejme zmení všetky prvky v riadkoch a stĺpcoch i a j. Dá sa ale ukázať, že postupnými krokmi suma S klesá do nuly.
Jacobiho metóda - všeobecná matica A Q 1 AQ A nová ij = αβ Q 1 iα A αβq βj Pri násobení využijeme jednoduchý tvar marice Q Predpokladajme, že najvačší nediagonálny prvok matice A je A kl. Potom Q αβ = δ αβ ak α k a β l Q kk = cos φ Q kl = sin φ ak l > k Q kl = sin φ ak l < k Q ll = cos φ Dôležité: násobenie matíc A Q 1 AQ sa týka len riadkov a stĺpcov k, l
Jacobiho metóda - všeobecná matica Ak i k a zároveň j l tak A nová ij = A ij Ak i = k a j l: A nová kj Ak i k a j = l: = Q 1 kk A kj + Q 1 kl A lj, A nová jk = A nová kj A nová il = A ik Q kl + A il Q ll, A nová li = A nová il Ak i = k a j = l tak A nová kl a, samozrejme, = A nová lk = 0 A nová kk = λ 1 A nová ll = λ 2
Jacobiho metóda - všeobecná matica Vlastné vektory: 1. Začneme s jednotkovou maticou V = 1 2. Po každej iterácii maticu V transformujeme V QV 3. Po skončení programu nájdeme v stĺpcoch matice V vlastné vektory
Jacobiho metóda - príklad 1 Matica A: A ij = 1 ak i j = 1 (trojdiagonálna matica) Vlastné hodnoty vieme nájsť analyticky: λ i = 2 cos πi N + 1, i = 1, 2,... N
Jacobiho metóda - príklad 2 Matica A: A ij = 1 ak i j = 1 { ω 2 A ii = 1 i = 2k ω2 2 i = 2k 1 (binárna retiazka zložená zo striedajúcich sa atómov)
Jacobiho metóda - príklad 3 Matica A: A ij = 1 ak i j = 1 A ii = ω 2 i Mriežka zložená z rôznych atómov - frekvencie ω i môžeme generovať náhodne napr. z intervalu (0,1) Na rozdiel od predchádzajúcich príkladov 1 a 2 túto úlohu analyticky nevyriešime.
Iteračná metóda výpočet najväčšej vlastnej hodnoty Maticu N N A má vlastné hodnoty λ i a vlastné vektory v i. Ľubovoľný vektor U dĺžky N vieme vyjadriť v tvare U = i α i v i Preto AU = i α i Λ i v i a A N U = i α i Λ N i v i Ak Λ 1 > Λ 2 >... tak na pravej strane dostaneme len takže α 1 Λ N 1 u 1 Λ N 1 = AN U U
Iteračná metóda - ďalšie vlastné hodnoty Ak potrebujem M najväčších vlastných hodnôt, musím počítať súčin AU kde U je matica obsahujúca M vektorov dĺžky N. Iterácie prebiehajú rovnako ako pre prvú vlastnú hodnotu, ale vždy po niekoľkých krokoch musíme urobiť Schmidtovu ortogonalizáciu vektorov.
Schmidtova ortonormalizácia Začneme s dvoma vektormi u 1 u 2 Násobením maticou A sa vyvíjajú. Po n násobeniach ich opätovne normalizujeme: u 1 u 1 u 1 u 2 u 1 u u 2 u 2 u 2 u 2
Schmidtova ortonormalizácia Algoritmus na ortonormalizáciu (len pre matice 2 2) 1. Urobím n iterácií oboch vektorov: u 1,2 = M l+n... M l+1 u 1,2 2. calculate u 1 and store d 1 = d 1 + ln u 1 3. normalization: u 1 u 1 = u 1 / u 1 4. orthogonalization: calculate u 2 = u 2 ( u 2. u 1 ) u 1 5. calculate u 2 and store d 2 = d 2 + ln u 2 6. normalization: u 2 u 2 = u 2 / u 2 7. l = l + n; go to 1 d 1 a d 2 obsahujú informáciu o λ N 1 a λn 2.
Zovšeobecnenie Algoritmus na ortonormalizáciu 1. Začnem s jednotkovou maticou U 2. Urobím n iterácií U = A n U dostanem N vektorov u i v stĺpcoch matice U 3. for i = 1, i N 4. calculate u i and store d i = d i + ln u i 5. normalization: u i u i = u i / u i 6. orthogonalization: For j > i calculate u i = u i ( u j. u i ) u i 7. i = i + 1 and goto 3 8. l = l + n; go to 2 d i obsahujú informáciu o λ l i : ln λ i = 1 l d i Úloha: naprogramujte algoritmus pre Schmidtovu ortogonalizáciu pre prípad matíc 2 2 a pre všeobecný prípad matíc N N.
Úloha Vyberte si jednu z dvoch úloh: Napíšte program pre Jacobiho metódu na diagonalizáciu symetrickej matice N N Overte ho pre prípad jednorozmernej retiazky zviazaných identických oscilátorov Napíšte program pre Schmidtovu ortonormalizáciu a nájdite vlastné hodnoty matice A
Záver Ortogonálne matice vieme diagonalizovať Jacobiho metódou Ľahké zovšeobecnenie na hermitovské matice (ale počítame v s komplexnými číslami) Je výhodné používa profesionálne subroutiny (LAPACK) Ak diagonalizujeme veľké a riedke matice, je užitočné nájsť špeciálne programy (Lanczos, JADAMILU) Iteračné metódy využívajúce Schmidtovu ortonormalizáciu