34 3 MACIERZE, ŁAŃCUCHY I OPERATORY
Tab. 3.4 Wybrane funkcje macierzowe algebry liniowej
Elementarne funkcje macierzowe | |
nazwa |
opis funkcji |
expm |
macierzowa funkcja wykładnicza |
logm |
macierzowa funkcja logarytmiczna |
sqrtm |
macierzowa funkcja pierwiastkowa |
Funkcje analizy macierzowej | |
det |
wyznacznik macierzy |
inv |
macierz odwrotna |
lu |
rozkład na macierze trójkątne LU |
norm |
normy wektora i macierzy |
poły |
współczynniki wielolomianu charakterystycznego |
Poniżej zamieszczono fragment sesji MATLAB-a, w którym wyznacza się macierz odwrotną do macierzy A (zdefiniowanej w rozdziale 3.3).
>>X = inv(A) */,wyznaczenie macierzy odwrotnej do A X =
5
-2
0
2
-1
-2
-2
1
1
»I I =
inv(A)*A ‘/.sprawdzenie uzyskanego poprzednio wyniku
1 0 0
0 1 0
0 0 1
Sprawdzenie innych funkcji oraz operatorów arytmetycznych pozostawia się czytelnikowi, odpowiednio do jego zainteresowań.
Przez gęstość macierzy rozumie się stosunek ilości elementów niezerowych macierzy do wszystkich jej elementów. Macierze o dużej ilości zer warto definiować jako rzadkie. Zapisuje się wtedy tylko elementy niezerowe macierzy, wraz z informacją o ich adresie (numer wiersza i kolumny).
Typowymi przykładami macierzy rzadkich są: macierze trójkątne: dolno i górna (rozkład LU), macierze pasmowe (w tym diagonalna), oraz macierze blokowe.
Operacje na macierzach rzadkich są wykonywane znacznie szybciej niż przy użyciu macierzy pełnych. Unika się wtedy działań na dużej ilości elementów zerowych.
W MATLAB-ie macierze rzadkie nie powstają automatycznie. Są one tworzone w następujących przypadkach:
• macierz rzadka jest generowana poleceniem sparse
• macierz pełna jest przekształcana w macierz rzadką poleceniem spars(
• macierz rzadka jest wynikiem operacji na macierzach rzadkich.
S=sparse(i,j, s,m,n,nzmax);
gdzie:
i,j,s - trój kolumnowa macierz, określająca położenie i,j oraz wartości elementów s macierzy rzadkiej, m,n - wymiar macierzy rzadkiej
nmax - maksymalna ilość elementów niezerowych macierzy S. Różnica (nmax - ilość-elementów-niezerowych-macierzy) jest rezerwą na dodatkowe elementy niezerowe.
Niekiedy przekształcenie macierzy (na przykład jej odwrócenie) powoduje zwiększenia ilości elementów niezerowych. Należy więc. przewidzieć nieco wolnego miejsca w macierzy rzadkiej. Decyduje o tym parametr na-max w poleceniu sparse. Dodatkowe informacje można uzyskać poprzez polecenie >> help sparse.
Poniżej podano przykład generacji macierzy rzadkiej z użyciem generatorów liczb losowych
» xy=rand(2,50); '/.pary liczb przypadkowych (0,1)
» xy=xy.*50; '/.poszerzenie wartości do (0,50)
» xy=ceil(xy); '/.zaokrąglenie w gore, zakres (1,50)
» ss=randn(l ,50); '/.liczby przypadkowe, rożki, normalny » s=sparse(xy (1,:), xy(2,:), ss); '/.macierz rzadka