Eksponenta macierzy

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Eksponenta macierzy – funkcja macierzowa zdefiniowana dla macierzy kwadratowych analogicznie jak klasyczna funkcja wykładnicza. Eksponentą macierzy rzeczywistej lub zespolonej X wymiaru n×n jest macierz wymiaru n×n, oznaczana jako eX albo exp(X), zadana przez szereg potęgowy:

eX=k=01k!Xk,

przy czym przyjmuje się:

  • X0=I,
  • w szczególności 00=I,

gdzie:

  • I – macierz jednostkowa n×n,
  • 0 – macierz zerowa n×n.

Twierdzenia I

Oznaczenia:

  • X, Y – dowolne macierze zespolone n×n
  • a, b – dowolne liczby zespolone

Twierdzenia:

(1) e0=I
(2) eXT=(eX)T
gdzie XTmacierz transponowana macierzy X
(3) eX=(eX)
gdzie X – macierz hermitowsko sprzężona do macierzy X
(4) Jeżeli macierz Y jest odwracalna, to eYXY1=YeXY1
(5) Jeżeli macierze X i Y komutują (tzn. ich mnożenie jest przemienne, XY=YX), to
eXeY=eX+Y

Z tw. (5) wynika, że

(6) eXeX=e0=I
(7) eaXebX=e(a+b)X

Twierdzenia II

(8) Jeżeli X jest macierzą symetryczną, to eX jest macierzą symetryczną.
(9) Jeżeli X jest macierzą antysymetryczną, to eX jest macierzą ortogonalną.
(10) Jeżeli X jest macierzą hermitowską, to eX jest macierzą hermitowską.
(11) Jeżeli X jest macierzą antyhermitowską, to eX jest macierzą unitarną.

Obliczanie eksponenty macierzy

Macierz diagonalna

Jeżeli macierz jest diagonalna

D=[d1000d2000dn],

to

eD=[ed1000ed2000edn].

Macierz diagonalizowalna

Jeżeli macierz X można przedstawić w postaci

X=YDY1,

gdzie Dmacierz diagonalna, to z tw. (4) wynika, że

eX=YeDY1.

Tw. Liego o eksponencie sumy macierzy

Jeżeli X oraz Y nie komutują, to można obliczyć eksponentę sumy tych macierzy, posługując się twierdzeniem Liego

eX+Y=limk(e1kXe1kY)k.

Jeżeli użyje się dostatecznie dużej wartości k (np. k=106), to otrzyma się dokładne przybliżenie, często używane w numerycznego obliczania ewolucji w czasie jednowymiarowych układów kwantowych o wielu cząstkach, gdyż wtedy

eX+Y(e1kXe1kY)k.

Tw. Bakera-Campbelli-Hausdorffa

Gdy X oraz Y są dostatecznie małe i niekoniecznie komutują, to

eXeY=eZ,

gdzie Z jest nieskończonym szeregiem komutatorów, utworzonych z macierzy X oraz Y, zgodnie z tw. Szablon:Link-interwiki

Z=X+Y+12[X,Y]+112[X,[X,Y]]112[Y,[X,Y]]+,

gdzie [X,Y]=XYYX, itp. Pozostałe składniki szeregu stanowią bardziej złożone komutatory, zawierające X oraz Y.

Jeżeli X oraz Y komutują, tj. [X,Y]=0, to wszystkie inne komutatory zerują się i otrzymuje się prosty wzór

eXeY=eX+Y

Numeryczne liczenie eksponenty macierzy

Obliczanie eksponenty macierzy w ogólnym przypadku nie jest proste. Poniżej podano kod w języku python, służący do numerycznego obliczenia eksponenty macierzy, korzystający z biblioteki NumPy, dedykowanej do obliczeń na macierzach. NumPy zawiera funkcję expm, która oblicza eksponentę macierzy. Program można uruchomić, korzystając np. z darmowego notatnika colab google online, przy czym macierz do obliczeń zadaje się w linii 4 programu, podając kolejne jej wiersze. Poniższy kod liczy eksponentę macierzy

2×2,

ale łatwo go zmodyfikować do liczenia eksponenty macierzy

n×n.

Np. X = np. array([[1, 1, 1], [2, 1, 0], [3, 0,1]]) – macierz

n×n

z zapisanymi kolejnymi wierszami, zaczynając od wiersza 1-go.

import numpy as np
from scipy.linalg import expm

X = np.         array([[1, 0], [0, 1]])
expX = expm(X)

print(expX)

# Wynik
# [[2.71828183 0.        ]
# [0.         2.71828183]]

Przykłady

Macierze niekomutujące

Niech będą dane macierze

X=[1002],Y=[0100]

Macierze te nie komutują ze sobą, gdyż:

XYYX=[0100]

Nie są więc spełnione założenia Tw. (5). Obliczając eksponenty A=eX oraz B=eY (np. korzystając z kodu w python, podanego wyżej), a następnie mnożąc otrzymane macierze A,B przez siebie otrzyma się:

eXeY=[2,718281832,7182818307,3890561]

zaś

eX+Y=[2,718281834,6707742707,3890561]

Widać, że tym wypadku eXeYeX+Y.

Macierze komutujące

Niech będą dane macierze (tzw. macierze obrotu)

X=[cosxsinxsinxcosx],Y=[cosysinysinycosy]

Macierze te komutują ze sobą dla dowolnych kątów x,y, tj. zawsze mamy:

XYYX=[1001]

Z tw. (5) wynika, że w tym wypadku jest prawdą, że eXeY=eX+Y.

Przykładowo, dla x=π/2,y=π/4 mamy

X=[0110],Y=12[1111]

Obliczając eksponenty A=eX oraz B=eY (np. korzystając z kodu w python, podanego wyżej), a następnie mnożąc otrzymane macierze A,B przez siebie, otrzymuje się:

eXeY=[0,275597962,00930242,00930240,27559796]

Obliczając macierz C=X+Y, a następnie jej eksponentę, otrzymuje się

eX+Y=[0,275597962,00930242,00930240,27559796]

Widać, iż teraz eXeY=eX+Y.

Zobacz też

Bibliografia

  • Bellman R.E., Introduction to Matrix Analysis, 2nd ed., New York: McGraw-Hill, 1970.
  • Moler C., van Loan C., „Nineteen Dubious Ways to Compute the Exponential of a Matrix, Twenty-Five Years Later”, SIAM Rev. 45, 3-49, 2003.
  • Cohen-Tannoudji Claude, Diu Bernard, Laloe Frank, Quantum Mechanics 1, Wiley J., 2006, ISBN 978-0471569527.

Linki zewnętrzne