Maticová reprezentace - Matrix representation

Ilustrace řádkové a sloupcové hlavní objednávky

Maticová reprezentace je metoda používaná a počítačový jazyk uložit matice více než jedné dimenze v Paměť.Fortran a C používat pro svá nativní pole různá schémata. Fortran používá "Hlavní sloupec", ve kterém jsou všechny prvky pro daný sloupec uloženy souvisle do paměti. C používá "Row Major", který ukládá všechny prvky pro daný řádek souvisle do paměti.LAPACK definuje různé maticové reprezentace v paměti. K dispozici je také Řídká maticová reprezentace a Mortonova řádová reprezentace matice Podle dokumentace v LAPACK the unitární matice reprezentace je optimalizována.[1][2] Některé jazyky jako např Jáva ukládat matice pomocí Iliffe vektory. Ty jsou zvláště užitečné pro skladování nepravidelné matice. Matice mají primární význam v lineární algebra.

Základní matematické operace

Pořadí m × n (čteno jako m x n) matice je sada čísel uspořádaných do m řádků an sloupců. Matice stejného pořadí lze přidat přidáním odpovídajících prvků. Lze vynásobit dvě matice, podmínkou je, že počet sloupců první matice se rovná počtu řádků druhé matice. Pokud se tedy matice m × n násobí maticí n × r, bude výsledná matice řádu m × r.[3]

Na matici lze provádět operace jako řádkové operace nebo sloupcové operace, pomocí kterých můžeme získat inverzní funkci matice. Inverzi lze získat také určením adjunktu.[3] řádky a sloupce jsou různé třídy matic

Základy 2D pole

Matematická definice matice najde uplatnění ve výpočetní technice a správě databází, základním výchozím bodem je koncept pole. Dvourozměrné pole může fungovat přesně jako matice. Dvojrozměrná pole lze vizualizovat jako tabulku skládající se z řádků a sloupců.

  • int a [3] [4], deklaruje celočíselné pole 3 řádků a 4 sloupců. Index řádku bude začínat od 0 a bude až 2.
  • Podobně index sloupce začíná od 0 a bude stoupat až k 3.[4]
Sloupec 0Sloupec 1Sloupec 2Sloupec 3
řádek 0a [0] [0]a [0] [1]a [0] [2]a [0] [3]
řádek 1a [1] [0]a [1] [1]a [1] [2]a [1] [3]
řádek 2a [2] [0]a [2] [1]a [2] [2]a [2] [3]

Tato tabulka ukazuje uspořádání prvků s jejich indexy.

Inicializace dvourozměrných polí: Dvourozměrná pole lze inicializovat poskytnutím seznamu počátečních hodnot.

int A[2][3] = {1,2,3,4,5,6};

nebo

int A[2][3] = {{2,3,4},{4,4,5}};

Výpočet adresy

Matice m x n (a [1 ... m] [1 ... n]) kde index řádků se pohybuje od 1 do ma index sloupců od 1 do n, aij označuje číslo v ith řádek a jth sloupec. V paměti počítače jsou všechny prvky uloženy lineárně pomocí souvislých adres. Proto, aby bylo možné uložit dvourozměrnou matici a, musí být na jednorozměrný adresní prostor namapován dvourozměrný adresní prostor. V paměti počítače jsou matice uloženy v obou Řádová hlavní objednávka nebo Sloupová hlavní objednávka formulář.

Ve 3D grafice

Volba reprezentace pro matice 4 × 4 běžně používané v 3D grafika ovlivňuje implementaci maticových / vektorových operací v systémech s balíčky Pokyny SIMD:

Row major

Díky pořadí matic hlavní řady je snadné transformovat vektory pomocí Tečkovaný produkt operace, protože koeficienty každé komponenty jsou v paměti sekvenční. V důsledku toho může být toto rozložení žádoucí, pokud procesor nativně podporuje operace produktu s bodem. Je také možné efektivně použít afinní transformační matici '3 × 4' bez polstrování nebo nepříjemných permutací.

Sloupový major

Se sloupcovou hlavní objednávkou lze pomocí vektorizace implementovat násobení „matice × vektor“ znásobit-přidat operace, pokud jsou komponenty vektoru vysílány do každé z nich Pruh SIMD. Je také snadný přístup k základní vektory zastoupená a transformační matice jako jednotlivé sloupcové vektory, protože jsou v paměti souvislé.

Viz také

Reference

  1. ^ „Reprezentace ortogonálních nebo unitárních matic“. University of Texas v Austinu. Citováno 14. září 2011.
  2. ^ Lehoucq, R. (1996). "Výpočet elementárních jednotných matic". Transakce ACM na matematickém softwaru. 22 (4): 393–400. doi:10.1145/235815.235817. hdl:1911/101830.
  3. ^ A b Ramana, B.V (2008). Vyšší inženýrská matematika. Nové Dillí: Tata Mcgraw-Hill. ISBN  978-0-07-063419-0.
  4. ^ Balagurusamy, E (2006). Programování v ANSI C.. Nové Dillí: Tata McGraw-Hill.

externí odkazy