Eksponenta macierzy – funkcja macierzowa zdefiniowana dla macierzy kwadratowych analogicznie jak klasyczna funkcja wykładnicza. Eksponentą macierzy rzeczywistej lub zespolonej wymiaru jest macierz wymiaru oznaczana jako albo zadana przez szereg potęgowy:
przy czym przyjmuje się:
- w szczególności
gdzie:
- – macierz jednostkowa
- – macierz zerowa
- (8) Jeżeli jest macierzą symetryczną, to jest macierzą symetryczną.
- (9) Jeżeli jest macierzą antysymetryczną, to jest macierzą ortogonalną.
- (10) Jeżeli jest macierzą hermitowską, to jest macierzą hermitowską.
- (11) Jeżeli jest macierzą antyhermitowską, to jest macierzą unitarną.
Macierz diagonalna
Jeżeli macierz jest diagonalna
to
Gdy oraz są dostatecznie małe i niekoniecznie komutują, to
gdzie jest nieskończonym szeregiem komutatorów, utworzonych z macierzy oraz zgodnie z tw. Bakera-Campbella-Hausdorffa(inne języki)
gdzie itp. Pozostałe składniki szeregu stanowią bardziej złożone komutatory, zawierające oraz
Jeżeli oraz komutują, tj. to wszystkie inne komutatory zerują się i otrzymuje się prosty wzór
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 ale łatwo go zmodyfikować do liczenia eksponenty macierzy Np. X = np. array([[1, 1, 1], [2, 1, 0], [3, 0,1]]) – macierz 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]]
Macierze niekomutujące
Niech będą dane macierze
Macierze te nie komutują ze sobą, gdyż:
Nie są więc spełnione założenia Tw. (5). Obliczając eksponenty oraz (np. korzystając z kodu w python, podanego wyżej), a następnie mnożąc otrzymane macierze przez siebie otrzyma się:
zaś
Widać, że tym wypadku
Macierze komutujące
Niech będą dane macierze (tzw. macierze obrotu)
Macierze te komutują ze sobą dla dowolnych kątów tj. zawsze mamy:
Z tw. (5) wynika, że w tym wypadku jest prawdą, że
Przykładowo, dla mamy
Obliczając eksponenty oraz (np. korzystając z kodu w python, podanego wyżej), a następnie mnożąc otrzymane macierze przez siebie, otrzymuje się:
Obliczając macierz a następnie jej eksponentę, otrzymuje się
Widać, iż teraz
- 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.