| Metoda | Deklaracja metody | Przykład wywołania | Opis działania |
|---|---|---|---|
| Utworzenie pustej macierzy rzadkiej | sparse() | sparse s | Tworzona jest pusta macierz rzadka |
| Utworzenie macierzy rzadkiej o zadanych rozmiarach | sparse(int m,int n) | sparse s(10,20) | Tworzona jest macierz rzadka o wymiarach m x n (m wierszy, n kolumn) |
| Utworzenie macierzy rzadkiej na podstawie macierzy gęstej | sparse(const matrix &mat) | matrix m=zeros(5,5) sparse s=sparse(m) | Tworzona jest macierz rzadka na podstawie macierzy gęstej. W przykładzie tworzona jest macierz gęsta 'm', a następnie macierz rzadka 's'. Zarówno 'm' jak i 's' to macierze o wymiarach 5 x 5, wypełnione zerami. |
| Konwersja macierzy rzadkiej na macierz gęstą | operator matrix() | sparse s=spzeros(5,5) matrix m=matrix(s) | Tworzona jest macierz gęsta na podstawie macierzy rzadkiej. W przykładzie tworzona jest macierz rzadka 's', a następnie macierz gęsta 'm'. Zarówno 's' jak i 'm' to macierze o wymiarach 5 x 5, wypełnione zerami. |
| Konwersja macierzy rzadkiej na liczbę | operator double() | double(s) | Macierz rzadka o wymiarach 1x1 zamieniana jest na liczbę rzeczywistą. Jeśli ma inne wymiary, pojawia się komunikat błędu |
| Liczba wierszy | int size1(const sparse &a) int nrow(const sparse &a) | size1(s) nrow(s) | Zwraca liczbę wierszy macierzy |
| Liczba kolumn | int size2(const sparse &a) int ncol(const sparse &a) | size2(s) ncol(s) | Zwraca liczbę kolumn macierzy |
| Liczba elementów niezerowych (istotnych) | int nonzero(const sparse &a) | nonzero(s) | Zwraca liczbę niezerowych elementów macierzy |
| Czy zaindeksowana | int indexed(const sparse &a) | indexed(s) | Zwraca 1 (true), jeśli macierz ma indeks elementów; lub 0 (false), jeśli nie ma. |
| Najmniejszy wiersz istotny | int minrow(const sparse &a) | minrow(s) | Zwraca najmniejszy numer wiersza, w którym są elementy niezerowe |
| Największy wiersz istotny | int maxrow(const sparse &a) | maxrow(s) | Zwraca największy numer wiersza, w którym są elementy niezerowe |
| Najmniejsza kolumna istotna | int mincol(const sparse &a) | mincol(s) | Zwraca najmniejszy numer kolumny, w którym są elementy niezerowe |
| Największa kolumna istotna | int maxcol(const sparse &a) | maxcol(s) | Zwraca największy numer kolumny, w którym są elementy niezerowe |
| Czy element istnieje | int iselem(int i,int j) | iselem(2,7) | Zwraca 1 (true), jeśli element (i,j) występuje w macierzy; 0 (false), jeśli nie występuje. Elementom macierzy rzadkiej, które nie występują, odpowiada wartość 0. |
| Czy element jest niezerowy | int iszero(int,int) | iszero(2,7) | Zwraca 1 (true), jeśli element (i,j) macierzy ma wartość 0; 0 (false), w przeciwnym przypadku. True jest zwracane zarówno, gdy element nie występuje, jak i gdy występuje i przyjmuje wartość 0. |
| Indeksowanie | void mkindex() | s.mkindex() | Macierz jest indeksowana. Indeks ułatwia wyszukiwanie elementów istotnych, dzięki czemu operacje na macierzy są wykonywane szybciej. |
| Kasowanie indeksu | void delindex() | s.delindex() | Indeks macierzy jest usuwany |
| Kopiowanie indeksu (niskopoziomowe) | void cpyindex(const sparse &src) | s.cpyindex(s2) | Macierz otrzymuje indeks skopiowany z macierzy src. Wymagane jest, aby obie macierze (źródłowa i docelowa) miały te same wymiary; oprócz tego trzeba mieć pewność, że pozycje niezerowe w obu macierzach są na tych samych pozycjach. |
| Zmiana rozmiaru | void resize(int m_new,int n_new) | s.resize(5,10) | Zmiana wymiarów macierzy. Po zmianie macierz ma m_new wierszy i n_new kolumn. Zawartość macierzy ulega skasowaniu. |
| Zmiana rozmiaru z zachowaniem zawartości | void resizec(int m_new,int n_new) | s.resizec(5,10) | Zmiana wymiarów macierzy. Po zmianie macierz ma m_new wierszy i n_new kolumn. Zawartość macierzy jest zachowywana. Jeśli nowe wymiary są większe od pierwotnych, to elementy nie występujące w obiekcie pierwotnym pozostają niewypełnione. |
| Pakowanie | void pack() | s.pack() | Macierz jest pakowana. Po operacji pozostają tylko elementy istotne (niezerowe). |
| Odpakowanie | void unpack() | s.unpack() | Macierz jest rozpakowywana. Po operacji wszystkie elementy nieistotne są reprezentowane w obiekcie zerami. |
| Synchronizacja | void synch(const sparse &src) | s.synch(s2) | Macierz jest synchronizowana z macierzą src. Uzgadniana jest kolejność elementów istotnych na liście, dzięki czemu operacje, których argumentami jest macierz źródłowa i uzgodniona, są wykonywane szybciej (patrz → arytmetyka macierzy zsynchronizowanych). |
| Dostęp do elementu | double & operator ()(int i,int j) | s(2,3) | Zwraca element z wiersza 'i' i kolumny 'j'. |
| Szybki dostęp do elementu | double get(int i,int j) | s.get(2,3) | Zwraca element z wiersza 'i' i kolumny 'j'. Funkcja działa szybciej niż operator (). |
| Szybkie wstawienie wartości | void set(int i,int j,double d) | s.set(2,3,11.5) | Wstawia wartość 'd' do elementu z wiersza 'i' i kolumny 'j'. Funkcja działa szybciej niż operator (). |
| Dostęp do listy elementów (niskopoziomowo) | double & operator [](int l) | s[15] | Zwraca element o numerze 'l' z listy elementów istotnych macierzy. |
| Macierz pusta | sparse spempty(int m,int n) | spempty(5,3) | Tworzenie pustej macierzy rzadkiej o wymiarach m x n. |
| Macierz zerowa | sparse spzeros(int m,int n) | spzeros(5,3) | Tworzenie macierzy rzadkiej o wymiarach m x n wypełnionej zerami. |
| Macierz jedynkowa | sparse spones(int m,int n) | spones(5,3) | Tworzenie macierzy rzadkiej o wymiarach m x n wypełnionej jedynkami. |
| Macierz identycznościowa | sparse speye(int m,int n) | speye(5,3) | Tworzenie macierzy rzadkiej o wymiarach m x n wypełnionej zerami, a na głównej przekątnej jedynkami. |
| Macierz testowa | sparse sptest(int m,int n) | sptest(5,3) | Tworzenie macierzy rzadkiej o wymiarach m x n wypełnionej wartościami testowymi (kolejne liczby naturalne) |
| Macierz losowa | sparse sprand(int m,int n) | sprand(5,3) | Tworzenie macierzy rzadkiej o wymiarach m x n wypełnionej liczbami z rozkładu jednostajnego z przedziału [0,1]. |
| Wypełnianie zerami | void zeros() | s.zeros() | Istotne elementy są zerowane |
| Wypełnianie jedynkami | void ones() | s.ones() | Istotne elementy przyjmują wartość 1 |
| Wypełnianie | void fill(double c=1.0) | s.fill(2.0) | Istotne elementy są wypełnianie stałą c |
| Wypełnianie zer | void fill0(double c=1.0) | s.fill0(2.0) | Istotne elementy wynoszące 0 są wypełnianie stałą c |
| Losowe wypełnianie | void rfill(double c=1.0) | s.rfill(3.12) | Istotne elementy są wypełnianie liczbą losową z rozkładu jednostajnego [0,c] |
| Losowe wypełnianie zer | void rfill0(double c=1.0) | srfill0(1.5) | Istotne elementy wynoszące 0 są wypełnianie liczbą losową z rozkładu jednostajnego [0,c] |
| Aplikowanie funkcji do elementów | sparse forall(const sparse &s,double f(double)) void forall(double f(double)) | forall(s,f1) s.forall(f1) | Na elementy macierzy nakładana jest funkcja 'f' |
| Aplikowanie funkcji dwuargumentowej do elementów | sparse forall(const sparse &s,double f(double,double),double d) void forall(double f(double,double),double d) sparse forall(const sparse &s,double f(double,int),int i) void forall(double f(double,int),int i) | forall(s,f1,3.52) s.forall(f1,3.52) forall(s,f1,82) s.forall(f1,82) | Na elementy macierzy nakładana jest funkcja dwuargumentowa 'f'. Drugi argument funkcji 'f' (parametr) jest przekazywany do funkcji forall. |
| Wartość bezwzględna | sparse abs(const sparse &a) void spabs() | abs(s) s.spabs() | Tworzona jest macierz rzadka wypełniona wartościami bezwzględnymi elementów 'a'. |
| Podniesienie elementów do kwadratu | sparse sqr(const sparse &a) void spsqr() | sqr(s) s.spsqr() | Tworzona jest macierz rzadka wypełniona kwadratami elementów 'a'. |
| Suma | double sum(const sparse &a) | sum(s) | Wyliczana jest suma wszystkich elementów macierzy 'a'. |
| Suma kwadratów | double sumsqr(const sparse &a) | sumsqr(s) | Wyliczana jest suma kwadratów wszystkich elementów macierzy 'a'. |
| +, - | sparse operator +(const sparse &a,const sparse &b) void operator +=(const sparse &a) void operator +=(const double d) | s1+s2 s1+=s2 s1+=10.0 | Umożliwiają wykonywanie operacji arytmetycznych na dwóch macierzach rzadkich lub macierzy rzadkiej i liczbie rzeczywistej. Operacje +, - są wykonywane po pozycjach. |
| *, / | sparse operator *(const sparse &a,const double d) sparse operator *(const double d,const sparse &a) void operator *=(const double d) sparse operator *(const sparse &a,const sparse &b) | s1*10.0 10.0*s1 s1*=10.0 s1*s2 | Umożliwiają wykonywanie operacji arytmetycznych na dwóch macierzach rzadkich lub macierzy rzadkiej i liczbie rzeczywistej. Operacje *, / są wykonywane po pozycjach. |
| Mnożenie macierzowe | sparse mul(const sparse &a,const sparse &b) | mul(s1,s2) | Mnożenie macierzowe |
| Dodawanie | sparse spplus(const sparse &a,const sparse &b) | spplus(s1,s2) | Dodawanie macierzy: a+b |
| Zwiększanie | void addassign(const sparse &a) | s.addassign(s2) | Zwiększanie macierzy: baza=baza+a |
| Zwiększanie i mnożenie (wersja 1) | void addassign(double d,const sparse &a) | s.addassign(10.0,s2) | Zwiększanie i mnożenie macierzy: baza=baza*d+a |
| Zwiększanie i mnożenie (wersja 2) | void addassign(const sparse &a,double d) | s.addassign(s2,10.0) | Zwiększanie i mnożenie macierzy: baza=baza+a*d |
| Odejmowanie | sparse spminus(const sparse &a,const sparse &b) | spminus(s1,s2) | Odejmowanie macierzy: a-b |
| Odejmowanie i mnożenie | sparse spminus(const sparse &a,const sparse &b,double d) | spminus(s1,s2,10.0) | Odejmowanie macierzy: a-b*d |
| Zmniejszanie | void subassign(const sparse &a) | s.subassign(s2) | Zmniejszanie macierzy: baza=baza-a |
| Zmniejszanie i mnożenie (wersja 1) | void subassign(double d,const sparse &a) | s.subassign(10.0,s2) | Zmniejszanie macierzy: baza=baza*d-a |
| Zmniejszanie i mnożenie (wersja 2) | void subassign(const sparse &a,double d) | s.subassign(s2,10.0) | Zmniejszanie macierzy: baza=baza-a*d |
| Mnożenie | sparse spmul(const sparse &a,const sparse &b) | spmul(s1,s2) | Możenie macierzy po pozycjach: a*b |
| Dzielenie | sparse spdiv(const sparse &a,const sparse &b) | spdiv(s1,s2) | Dzielenie macierzy po pozycjach: a/b |
| Przesuwanie wierszy | void shiftrows(int shift) | s.shiftrows(2) | Wiersze macierzy są przesuwane o 'shift'. W przykładzie wiersze są przesuwane o 2 w dół. |
| Przesuwanie kolumn | void shiftcols(int shift) | s.shifcols(-3) | Kolumny macierzy są przesuwane o 'shift'. W przykładzie kolumny są przesuwane o 3 w lewo. |
| Wczytanie | int readtxt(char *name,int show_open_err=1) | s.readtxt("plik.txt") | Wczytanie macierzy rzadkiej z pliku o nazwie 'name'. Parametr 'show_open_err' określa, czy błędy odczytu będą pokazywane. Funkcja „readtxt” zwraca 0, jeśli nie było błędów; i 1, jeśli był błąd odczytu. |
| Zapisanie | int writetxt(char *name,int show_open_err=1) | s.writetxt("plik.txt") | Zapisanie macierzy rzadkiej do pliku o nazwie 'name'. Parametr 'show_open_err' określa, czy błędy zapisu będą pokazywane. Funkcja „writetxt” zwraca 0, jeśli nie było błędów; i 1, jeśli był błąd zapisu. |
| Wyświetlanie | void display(const char *name) | s.display("X") | Macierz rzadka jest wyświetlana w konsoli. Należy podać ‘name’ - nazwę, która ma być wyświetlona. |
| Listowanie elementów | void list(const char *name) | s.list("X") | Lista elementów macierzy rzadkiej jest wyświetlana w konsoli. Należy podać ‘name’ - nazwę, która ma być wyświetlona. |
| Pokazanie indeksu | void index(const char *name) | s.index("X") | Indeks macierzy rzadkiej jest wyświetlany w konsoli. Należy podać ‘name’ - nazwę, która ma być wyświetlona. |
| Wybór wiersza | sparse row(const sparse &a,int i) | row(s,2) | Z macierzy 'a' wybierany jest wiersz o numerze 'i'. |
| Transpozycja | sparse operator ~(const sparse &a) void T() | ~s s.T() | Transpozycja macierzy |
| Porównanie | int compare(const sparse &a,const sparse &b) | compare(s1,s2) | Zwraca wynik porównania macierzy 'a' i 'b'. Jeśli jednakowe, zwraca 1 (true). Jeśli różne, zwraca 0 (false). |
| Kasowanie | void free() | s.free() | Macierz jest kasowana. Zwalniana jest pamięć, z której korzystała. |
