Mnożenie macierzy
Z Wikipedii
Niniejszy artykuł jest częścią cyklu macierze.
|
Niektóre typy macierzy Operacje na macierzach Inne zagadnienia |
edytuj ten szablon |
Mnożenie macierzy – w matematyce operacja mnożenia macierzy przez skalar lub inną macierz. Artykuł zawiera opis różnorodnych sposobów przeprowadzania ich mnożenia.
Spis treści |
[edytuj] Standardowe mnożenie macierzy
Jest to najczęstszy sposób mnożenia macierzy, nazywany też mnożeniem Cauchy'ego. Działanie to zdefiniowane jest wyłącznie dla macierzy, z których pierwsza ma tyle kolumn, co druga wierszy. Jeżeli A jest macierzą , a B to macierz typu , to ich iloczyn, oznaczany AB, czasem też , jest macierzą typu . Jeżeli C = AB, a ci,j oznacza element C na pozycji (i,j), to
dla każdej pary i,j dla której oraz .
[edytuj] Obliczanie z definicji
Poniżej zilustrowany został sposób obliczania elementów oraz macierzy wynikowej , będącej iloczynem macierzy i .
Przykładowo, element powstaje z sumy iloczynów odpowiadających sobie elementów z pierwszego wiersza macierzy A i drugiej kolumny macierzy B (elementy macierzy składowych bierzemy zgodnie z kierunkiem strzałek). Innymi słowy, aby wyznaczyć element , musimy wymnożyć pierwszy element z pierwszego wiersza macierzy A przez pierwszy element z drugiej kolumny macierzy B, i do tego dodać iloczyn drugiego elementu z pierwszego wiersza macierzy A i drugiego elementu z drugiej kolumny macierzy B. Opisane obliczenia poniżej:
Podobnie postępujemy z wyróżnionym na niebiesko elementem macierzy C z trzeciego wiersza i trzeciej kolumny:
Przykładowo:
[edytuj] Metoda współczynniki-wektory
To mnożenie macierzy może być rozważane z nieco innego punktu widzenia: sumuje ono wektory po przemnożeniu ich uprzednio przez różne współczynniki. Jeżeli
- oraz ,
to
Dla powyższych danych jest:
Wiersze macierzy po lewej są listą współczynników. Macierz po prawej jest listą wektorów. W przykładzie pierwszy wiersz to , czyli bierzemy 1 raz pierwszy wektor, 0 razy drugi wektor i 2 razy trzeci wektor. Równanie można jeszcze uprościć za pomocą iloczynu zewnętrznego:
Elementy tej sumy są macierzami tego samego kształtu, z których każda opisuje działanie jednej kolumny z A i jednego wiersza z B na wynik. Kolumny A mogą być postrzegane jako układ współrzędnych przekształcenia, np. dla danego wektora x jest , gdzie xi są współrzędnymi wzdłuż „osi” Ai. Wyrazy AiBi są analogiczne do Aixi z tym, że Bi zawiera i-tą współrzędną każdego wektora kolumnowego macierzy B, z której każda jest równocześnie przekształcana niezależnie od pozostałych.
Raz jeszcze stosując dane przykładowe mamy:
Wektory oraz zostały równocześnie przekształcone na oraz . Można je również przekształcić po kolei czyniąc te same kroki:
[edytuj] Metoda list wektorowych
O zwykłym iloczynie macierzy można myśleć jak o iloczynie skalarnym listy kolumnowej wektorów przez listę wierszową wektorów. Jeżeli
- oraz ,
gdzie
- A1 to wektor wierszowy wszystkich elementów postaci a1,x, A2 to wektor wierszowy wszystkich elementów postaci a1,x itd.,
- a B1 jest wektorem kolumnowym wszystkich elementów postaci bx,1, B2 wektorem kolumnowym wszystkich elementów postaci bx,2 itd.,
to wtedy
[edytuj] Własności
Mnożenie macierzy nie jest przemienne, tj. , poza szczególnymi przypadkami, co można zaobserwować następująco: nie można spodziewać się, iż zmiana proporcji wektorów da ten sam wynik. Innym sposobem jest też zwrócenie uwagi na kolejność czynników – liczba kolumn w macierzy proporcji musi być równa liczbie wierszy w macierzy wektorów: muszą one reprezentować tę samą liczbę wektorów.
Choć mnożenie macierzy nie jest przemienne, to wyznaczniki AB oraz BA są zawsze równe (jeżeli A i B są macierzami kwadratowymi tego samego stopnia), co wyjaśnione jest w w artykule o wyznaczniku. Jednakże mnożenie macierzy jest przemienne, jeśli obie macierze są diagonalne i tego samego stopnia.[1]
To mnożenie jest ważne przede wszystkim dlatego, że jeżeli A i B są reprezentacjami przekształceń liniowych (co się powszechnie czyni), to iloczyn AB odpowiada ich złożeniu, w którym odwzorowanie B przykładane jest w pierwszej kolejności.
Dodatkowo wszystkie sposoby mnożenia opisane w tym artykule dzielą zestaw wspólnych własności opisanych niżej.
[edytuj] Algorytmy
Naiwny algorytm standardowego mnożenia macierzy typu przez macierz typu wymaga xyz mnożeń. Dla macierzy kwadratowych daje to algorytm o złożoności Θ(n3).
Istnieją wydajniejsze algorytmy rozwiązywania tego zadania. Pierwszy z takich algorytmów podał w 1969 r. Volker Strassen - złożoność tego algorytmu to około O(n2,807). Nie jest on jednak zwykle używany w praktyce z powodu braku numerycznej stabilności. Najlepszy obecnie znany algorytm mnożenia macierzy, podany przez Dona Coppersmitha i Shmuela Winograda, ma złożoność rzędu ok. O(n2,376). Dolne oszacowanie złożoności mnożenia macierzy, wynikające z konieczności obliczenia n2 wartości, to Ω(n2).
Jeśli to możliwe, należy skorzystać z algorytmów wykorzystujących szczególne własności macierzy, np. istnieje prosty algorytm mnożenia macierzy diagonalnych klasy Θ(n).
[edytuj] Potęgowanie macierzy
Definiujemy potęgę macierzy kwadratowej A rekurencyjnie za pomocą wzorów:
- gdzie k jest wymiarem macierzy A,
- dla całkowitego nieujemnego n.
A zatem
- ,
- ,
- ,
itd.
Operacja potęgowania macierzy ma następujące własności:
- (An)m = Anm
Naiwny algorytm obliczenia potęgi An wymaga Θ(n) mnożeń.
Za pomocą algorytmu szybkiego potęgowania potęgę An możemy obliczyć w czasie Θ(logn).
Możliwe jest również potęgowanie za pomocą diagonalizacji – wymaga to podniesienia macierzy diagonalnej do n-tej potęgi (zob. złożoność obliczeniowa iloczynu macierzy); jeżeli macierz A ma współczynniki całkowite, to macierz diagonalna nie musi zachować tej właściwości, co może spowodować błędy zaokrągleń, dlatego jest to metoda mniej ogólna.
[edytuj] Mnożenie przez skalar
Mnożenie macierzy A = (aij) przez skalar r daje w wyniku iloczyn rA będący macierzą tego samego typu co A. Jej współczynniki dane są wzorem
- .
Na przykład, jeśli
- ,
to
- .
Jeżeli jesteśmy zainteresowani macierzami nad pierścieniem, to powyższe mnożenie nazywa się czasem mnożeniem lewostronnym, podczas gdy mnożenie prawostronne definiowane jest jako
- .
Jeżeli pierścień jest przemienny, np. ciało liczb rzeczywistych lub zespolonych, to powyższe mnożenia są tożsame. Jednakże, jeśli pierścień nie jest przemienny, jak np. kwaterniony, mogą się one różnić. Przykładowo
[edytuj] Iloczyn Hadamarda
Dla dwóch macierzy tego samego typu definiuje się iloczyn Hadamarda, znany także jako iloczyn Schura lub iloczyn po współrzędnych. Może być on uogólniony także na operatory. Iloczyn Hadamarda dwóch macierzy A,B typu oznaczany przez jest również macierzą typu daną wzorem
- .
Dla przykładu:
- .
Zauważmy, że iloczyn Hadamarda jest podmacierzą iloczynu Kroneckera (zob. niżej). Iloczyn Hadamarda badany jest w teorii macierzy i pojawia się w algorytmach kompresji stratnej takiej jak JPEG, jednak właściwie nie pojawia się w algebrze liniowej. Dyskusja na ten temat zawarta jest w Horn & Johnson, 1994, rozdz. 5.
[edytuj] Iloczyn Kroneckera
Dla dowolnych dwóch macierzy A oraz B definiuje się iloczyn prosty lub iloczyn Kroneckera jako
- .
Zauważmy, że jeśli A jest macierzą typu , zaś B macierzą typu , to jest macierzą typu . To mnożenie również nie jest przemienne.
Na przykład
- .
Jeżeli A i B reprezentują przekształcenia liniowe, odpowiednio oraz , to reprezentuje iloczyn tensorowy dwóch odwzorowań, .
[edytuj] Wspólne własności
Wszyskie rodzaje mnożenia macierzy są łączne:
- A(BC) = (AB)C,
rozdzielne względem dodawania:
- A(B + C) = AB + AC
oraz
- (A + B)C = AC + BC
i zgodne z mnożeniem przez skalar:
- c(AB) = (cA)B
- (Ac)B = A(cB)
- (AB)c = A(Bc)
Należy wspomnieć, że w powyższe trzy wyrażenia będą sobie tożsame, jeśli mnożenie i dodawanie w ciele skalarów będzie przemienne, np. będzie ono pierścieniem przemiennym. Zobacz sekcję mnożenie przez skalar wyżej, aby zobaczyć kontrprzykład dla ciała skalarów kwaternionów.
[edytuj] Iloczyn wewnętrzny Frobeniusa
Iloczyn Frobeniusa, oznaczany czasem A:B, jest iloczynem wewnętrznym po współrzędnych (ang. component-wise) dwóch macierzy traktowanych jako wektory. Innymi słowy jest to suma elementów iloczynu Hadamarda, czyli
- .
Ten iloczyn skalarny indukuje normę Frobeniusa.
[edytuj] Zobacz też
- przegląd zagadnień z zakresu matematyki,
- krakowian (kolejny iloczyn macierzy)
- algorytm Strassena (1969)
- algorytm Winograda (1980)
- algorytm Coppersmitha–Winograda (1990)
- macierz logiczna
- eksponenta macierzy
- problem nawiasowania ciągu macierzy,
- macierz odwrotna
- złożenie relacji
- Basic Linear Algebra Subprograms
- dodawanie macierzy
- iloczyn skalarny