Kapitola 14
MATRIX – Bloky pro maticové a vektorové operace
Knihovna MATRIX je navržena pro pokročilé maticové výpočty a manipulace. Zahrnuje širokou škálu bloků, jako je MB_DGEMM, MB_DTRMM a MB_DGER pro operace typu matice-matice a matice-vektor. Knihovna obsahuje funkce pro rozklad matic (ML_DGEBRD, ML_DGEQRF), problémy s vlastními hodnotami (ML_DGEEV, ML_DGEES ) a rozklad singulární hodnoty (ML_DGESDD). Kromě toho nabízí pomocné bloky jako MX_MAT, MX_VEC a MX_FILL pro vytváření matic a manipulaci, stejně jako specializované bloky, jako je např. MX_DTRNSP pro maticovou transpozici a MX_RAND pro generování náhodných matic. Tato knihovna je nezbytná pro složité matematické operace zahrnující matice v různých aplikacích.
Poznámky k implementaci
První prvek matice má index(0,0), první prvek vektoru index (0).
Vektor není samostatný objekt, ale matice s jedním sloupcem. Může být i matice s jedním řádkem, které se říká řádkový vektor. Pokud se někdy v systému REXYGEN vyžaduje vektor, myslí se tím sloupcový (tj. matice s jedním sloupcem).
Matice jsou mezi bloky předávány odkazem. V rámci nějakého bloku (nejčastěji MX_MAT nebo MX_VEC) se alokuje paměť pro celou matici a pak se jen předává jedno číslo, které znamená adresu této paměti. To znamená, že všechny bloky, které si matici předávají pořád pracují s jednou kopií a vzájemně si matici přepisují. Pokud je potřeba vytvořit kopii matice, je potřeba použít další blok MX_MAT a data zkopírovat (např. blokem MB_DCOPY).
Některé bloky pracující s vektorem (např. MB_DCPY, RTOV, VTOR) nekontrolují přesné rozměry (takže např. matici 10x10 chápou jako 100 prvkový vektor). Pro tento případ je důležité vědět, že se hodnoty ukládají po sloupcích (tj. prvek (1,0) má index 1, prvek (2,0) má index 2, prvek (0,1) má index 10, prvek (0,2) má index 11, atd.). Tyto bloky nelze použít s podmaticí vrácenou blokem MX_DSAREF. Chování v tomto případě je nedefinované.
Většina bloků má odkaz/referenci na matici jak na vstupu tak na výstupu. Obojí je odkaz na stejnou matici, takže je jedno, kam další blok připojíme. Protože ale pořadí spouštění bloků se řídí tokem signálu, připojením na výstup jiného bloku definujeme pořadí spouštění bloků a tím i pořadí vykonávání maticových operací.
MB_DASUM – Součet absolutních hodnot
MB_DAXPY – Provádí y := a*x + y pro vektory x,y
MB_DCOPY – Kopíruje vektor x do vektoru y
MB_DDOT – Skalární součin dvou vektorů
MB_DGEMM – Provádí C := alpha*op(A)*op(B) + beta*C, where op(X) = X or op(X) = X^T
MB_DGEMV – Provádí y := alpha*A*x + beta*y or y := alpha*A^T*x + beta*y
MB_DGER – Provádí A := alpha*x*y^T + A
MB_DNRM2 – Eukleidovská norma vektoru
MB_DROT – Rovinná rotace vektoru
MB_DSCAL – Násobení vektoru konstantou
MB_DSWAP – Záměna dvou vektorů
MB_DTRMM – Provádí B := alpha*op(A)*B or B := alpha*B*op(A), where op(X) = X or op(X) = X^T pro trojúhelníkovou matici A
MB_DTRMV – Provádí x := A*x or x := A^T*x pro trojúhelníkovou matici A
MB_DTRSV – Řeší jednu ze soustav rovnic A*x = B nebo A^T*x = B pro trojúhelníkovou matici A
ML_DGEBAK – Zpětná transformace k ML_DGEBAL levých nebo pravých vlastních vektorů
ML_DGEBAL – Vyvážení obecné reálné matice
ML_DGEBRD – Redukce obecné reálné matice do bidiagonální formy pomocí ortogonální transformace
ML_DGECON – Odhad převrácené hodnoty čísla podmíněnosti obecné reálné matice
ML_DGEES – Výpočet vlastních čísel, Schurovy formy a volitelně matice Schurových vektorů
ML_DGEEV – Výpočet vlastních čísel a volitelně levých a/nebo pravých vlastních vektorů
ML_DGEHRD – Redukce reálné obecné matice A na horní Hessenbergovu formu
ML_DGELQF – Výpočet LQ faktorizace reálné matice A s rozměry M x N
ML_DGELSD – Výpočet řešení s minimální normou reálné lineární úlohy nejmenších čtverců
ML_DGEQRF – Výpočet QR faktorizace reálné matice A s rozměry M x N
ML_DGESDD – Výpočet singulární dekompozice (SVD) reálné matice A s rozměry M x N
ML_DLACPY – Kopíruje celou nebo část matice do jiné matice
ML_DLANGE – Výpočet některé z maticových norem obecné matice
ML_DLASET – Inicializuje mimodiagonální a diagonální prvky matice na zadané hodnoty
ML_DTRSYL – Řešení reálné Sylvesterovy rovnice pro kvazitrojúhelníkové matice A a B
MX_AT – Hodnota prvku matice/vektoru
MX_ATSET – Nastavení hodnoty prvku matice/vektoru
MX_CNADD – Přičte skalár ke každému prvku matice/vektoru
MX_CNMUL – Vynásobí matici/vektor skalárem
MX_CTODPA – Diskretizace spojitého modelu (A,B) do (Ad,Bd) s využitím Padéových aproximací
MX_DIM – Dimenze matice/vektoru
MX_DIMSET – Nastavení dimenze matice/vektoru
MX_DSAGET – Uložení submatice A do matice B
MX_DSAREF – Nastavení odkazu na submatici A do matice B
MX_DSASET – Uložení matice A do submatice v B
MX_DTRNSP – Transpozice obecné matice: B := alpha*A^T
MX_DTRNSQ – Transpozice čtvercové matice na místě: A := alpha*A^T
MX_FILL – Vyplnění reálné matice/vektoru
MX_MAT – Blok pro uložení dat matice
MX_RAND – Náhodně vygenerovaná matice nebo vektor
MX_REFCOPY – Kopírování vstupních odkazů na matice A a B do jejich výstupních odkazů
MX_SLFS – Ukládání a čtení matice/vektoru do souboru nebo textového řetězce
MX_VEC – Blok pro uložení dat vektoru
MX_WRITE – Výpis matice/vektoru do konzole/systémového logu
RTOV – Vektorový multiplexer
SWVMR – Přepínač vektorového/maticového/odkazovacího signálu
VTOR – Vektorový demultiplexer
[Předchozí] [Na začátek] [Výše] [Další]
2024 © REX Controls s.r.o., www.rexygen.com