Zielony Smok - logo witryny

Partycjonowanie macierzy (Java)

Partycjonowanie macierzy oznacza podział macierzy na podmacierze. Powstaje wtedy macierz blokowa. Na ogół partycjonowanie stosuje się przy mnożeniu macierzy, które są zbyt duże aby się pomieścić w pamięci.

Partycjonowanie macierzy

Partycjonowanie macierzy

Każdą z macierzy możemy podzielić na partycje.

Partycjonowanie macierzy

Będzie to wyglądało tak:

Partycjonowanie macierzy

Macierz B również możemy podzielić na partycje:

Partycjonowanie macierzy

Będzie to wyglądało tak:

Partycjonowanie macierzy

Teraz możemy wykonać mnożenie:

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Przykład w klasie Matrix029:

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0,
  10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0]
[16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0,
   8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0]
80.0 70.0 60.0 50.0
240.0 214.0 188.0 162.0
400.0 358.0 316.0 274.0
560.0 502.0 444.0 386.0

Podmacierze nie muszą być kwadratowe. Podział musi być tak dokonany, aby macierze dały się pomnożyć zgodnie z regułami mnożenia macierzy. A oto przykład takiego podziału:

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Partycjonowanie macierzy

Przykład w klasie Matrix030:

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0,
  10.0, 11.0, 12.0, 13.0, 14.0, 15.0]
[15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0,
  7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0]
50.0 44.0 38.0 32.0 26.0
140.0 125.0 110.0 95.0 80.0
230.0 206.0 182.0 158.0 134.0
320.0 287.0 254.0 221.0 188.0
410.0 368.0 326.0 284.0 242.0

Jak widzimy macierze stojące w i-tym wierszu macierzy blokowej muszą mieć taką samą liczbę wierszy, a macierze stojące w j-tej kolumnie – taką samą liczbę kolumn.

Macierze diagonalne blokowe

Macierz blokowa diagonalna to macierz, która w wyniku partycjonowania przybiera formę

Partycjonowanie macierzy

Partycjonowanie macierzy jest macierzą diagonalną blokową, gdyż

Partycjonowanie macierzy

Oczywiście bloki macierzy nie muszą być jednakowej wielkości.

Pliki do ściągnięcia

matrices024.zip

Moduł matrices – aktualny stan projektu = 024;