Mátrix (matematika)

mennyiségek téglalap alakú elrendezése a matematikában
(Komplex mátrix szócikkből átirányítva)

A mátrix a matematikában mennyiségek téglalap alakú elrendezése (táblázata) (számoké, függvényeké, kifejezéseké, vagy egyéb elemeké, esetleg más mátrixoké; általánosan valamilyen gyűrű vagy vektortér elemeié).

A mátrixokra hasonló kalkulus („algebra”) építhető fel, mint az elemeikre, amelynek rendkívül sokféle alkalmazása lehetséges. Ennek tanulmányozása a lineáris algebra feladata. Mátrixokat szoktak használni lineáris egyenletek és lineáris, valamint bilineáris függvények leírására. A mátrixok – a lineáris algebra (egyik) leghasznosabb fogalmaként – a matematikának a gyakorlatban legtöbbször alkalmazott eszközei között vannak, a matematika számos más ága mellett pedig a fizikától és komputergrafikától kezdve a biológián át egészen a nyelvészetig, számtalan tudományágban használhatóak akár az elméleti leírás tömör megfogalmazására, akár a számítások megkönnyítésére vagy automatizálására.

A mátrix egyik kedvenc szava a sci-fi-íróknak is,[mj 1] azonban ezen használati módok legtöbbször még lazán sem kapcsolódnak a matematikai fogalomhoz.

Definíciók és jelölések

szerkesztés

A mátrix vízszintes vonalban elhelyezkedő elemei sorokat, függőleges vonalban elhelyezkedő elemei oszlopokat alkotnak. Egy m sorból és n oszlopból álló mátrixot m-szer n mátrixnak neveznek (írva:  ), az m és n pozitív egész számok a mátrix dimenziói. A mátrix dimenzióit mindig először a sorok számával, majd azt követően az oszlopok számával adják meg. Az A mátrix jelölése:

 

A mátrixnak az  -edik sorában és  -edik oszlopában lévő elemét a mátrix  -edik elemének nevezik, jelölése   vagy  . Mindig először a sorszám, majd az oszlopszám szerepel.

Az m × n méretű mátrixot gyakran így jelölik:  , a mátrix minden   elemét  -vel jelölik, ahol   és  . Konvenció, hogy a mátrixokat nagybetűvel, a mátrix elemeit pedig kisbetűvel jelölik. Szokás szerint a mátrix sorainak és oszlopainak számozása 1-gyel kezdődik – noha vannak számítógépes programok, melyek nullával kezdenek. A legtöbb programozási nyelv szintén nullától indexel. Azokat a mátrixokat, melyek egyik dimenziója 1, vektornak szokták nevezni. A sorvektornak csak egy sora van:

 ,

az oszlopvektornak pedig egyetlen oszlopa:

 

Az 1×1-es mátrixot skalárnak hívjuk.

Tisztán matematikai igényű definíció

szerkesztés

Ha   gyűrű (általában kommutatív gyűrű vagy test), akkor az  -es mátrixok   halmazán a

 

típusú, véges (  elemszámú) értelmezési tartományú,  -be képező függvények halmazát értjük. Itt   a halmazok Descartes-szorzata,   rendezett pár.

 

Az A mátrix egy 4×3-as mátrix. Az   vagy   elem a 7.

 

Az R mátrix egy 1×9-es mátrix vagy 9 elemű sorvektor.

Műveletek mátrixokkal

szerkesztés

Transzponálás

szerkesztés
 
A transzponálást kétszer egymás után végrehajtva visszakapjuk az eredeti mátrixot

A transzponálás egy argumentumú művelet. Egy mátrix transzponálása sorainak és oszlopainak a felcserélését jelenti. Egy m×n-es mátrix transzponáltja n×m-es. Kétszer végrehajtva visszakapjuk az eredeti mátrixot. A transzponálás jele   vagy  .

Egy mátrix szimmetrikus, ha transzponáltja önmaga, azaz  . Szimmetrikus mátrix csak négyzetes mátrix lehet.

 

Összeadás

szerkesztés

Csak azonos dimenziójú mátrixok adhatók össze. Legyen   és   két azonos dimenziójú,  -es méretű mátrix. Az   összeget úgy képezzük, hogy az azonos helyen lévő elemeket összegezzük (vagyis  ).

 

Tulajdonságai

szerkesztés
  • Kommutatív:  
  • Asszociatív:  

Skalárral való szorzás

szerkesztés

Az   mátrix egy   skalárral való   szorzatát úgy számítjuk, hogy   minden elemét megszorozzuk a   számmal (vagyis  ).

Ha a skalárt  -es mátrixnak tekintjük, akkor a skalárral való szorzás speciális Kronecker-szorzat.

 

Tulajdonságai

szerkesztés
  •   (bármelyik oldalról szorozhatunk a skalárral)
  •  
  •  

Az összeadás viszonyában teljesül még a

  • (mindkét oldali) disztributivitás:  

Mátrixszorzás

szerkesztés

Két mátrix szorzata akkor definiált, ha a bal oldali mátrix oszlopai száma megegyezik a jobb oldali mátrix sorainak számával. Ha   egy  -es,   pedig egy  -s mátrix, mátrixszorzatuk egy   méretű (  sorból,   oszlopból álló)   mátrix lesz, melynek elemei így számíthatók:

 

minden  -re és  -re.

 

illetve a megfelelő sort a megfelelő oszloppal történő szorzást kidomborítandó:

 

ahol például az eredménymátrix 5-ös elemét úgy kaptuk, hogy a sorában lévő (1,0,2) elemeket páronként összeszoroztuk az oszlopában lévő (3,2,1) elemekkel, majd összeadtuk őket.

Tulajdonságai

szerkesztés
  • asszociativitás:   minden  -es  ,  -es   és  -s   mátrixra. Ezt a tulajdonságot kihasználva optimalizálni lehet a mátrixszorzást. A leghatékonyabb zárójelezés megtalálása nevezetes optimalizációs probléma.
  • jobb oldali disztributivitás:   minden  -es   és  , valamint  -s   mátrixra.
  • bal oldali disztributivitás:   minden  -es , valamint  -s   mátrixra.

Fontos tudni, hogy a kommutativitás általában nem teljesül; vagyis adott   és   összeszorozható mátrixra általában igaz, hogy  .

A négyzetes mátrixok összeszorozhatók önmagukkal, ezért magasabb hatványaik is képezhetők. Skalár együtthatós polinomba is behelyettesíthetők; ekkor a konstans tagot a permanenciaelv alapján nulladik hatványnak definiált megfelelő méretű egységmátrixszal szorozzák össze. A polinomok segítségével más függvényeik is approximálhatók hatványsorok segítségével. Ezekhez a számításokhoz a mátrix Jordan-normálalakját használják, mert azzal egyszerűbb számolni.

Az ugyanolyan hosszú sor- és oszlopvektorok kétféleképpen is összeszorozhatók mátrixszerűen. Az egyik szorzat egy skalár, ami éppen a vektorok skaláris szorzata, a másik egy négyzetes mátrix, a vektorok diadikus vagy tenzorszorzata.

C nyelvű kódpélda

szerkesztés

Két mátrix összeszorzásának kódja C-ben önálló programként kiíratással:

#include <stdio.h>
#include <stdlib.h>

void mtxfree(double **mtx, int rows)
{
	int i;
	for (i = 0; i < rows; ++i)
	{
		free(mtx[i]);
	}
	free(mtx);
}

int main() {
	int m, n, k; /* m oszlop, n sor (k oszlop) */
	int i, j, p;
	int sum;
	double **A, **B, **AB; /* Dinamikus helyfoglalás */

	printf("A matrix merete: ");
	fflush(stdout);
	scanf("%d%d", &n, &m);
	printf("B matrix oszlopai: ");
	fflush(stdout);
	scanf("%d", &k);
	printf("B matrix sorainak szama igy: %d\n", m);

	A = (double**)calloc(n, sizeof(double*));
	if (A == NULL) {
		return 1;
	}
	for (i = 0; i < n; ++i)
	{
		A[i] = (double*)calloc(m, sizeof(double));
		if (A[i] == NULL) {
			mtxfree(A, i); /* már sikeresen lefoglalt memória felszabadítása */
			return 1;
		}
	}
	B = (double**)calloc(m, sizeof(double*));
	if (B == NULL) {
		mtxfree(A, n);
		return 1;
	}
	for (i = 0; i < m; ++i)
	{
		B[i] = (double*)calloc(k, sizeof(double));
		if (B[i] == NULL) {
			mtxfree(A, n);
			mtxfree(B, i);
			return 1;
		}
	}
	AB = (double**)calloc(n, sizeof(double*));
	if (AB == NULL) {
		mtxfree(A, n);
		mtxfree(B, m);
		return 1;
	}
	for (i = 0; i < n; ++i)
	{
		AB[i] = (double*)calloc(k, sizeof(double));
		if (AB[i] == NULL) {
			mtxfree(A, n);
			mtxfree(B, m);
			mtxfree(AB, i);
			return 1;
		}
	}

	printf("Adja meg az A matrixot:\n");
	for (i = 0; i < n; ++i) /* A mátrix feltöltése */
	{
		for (j = 0; j < m; ++j)
		{
			scanf("%lf", &A[i][j]);
		}
	}

	printf("Adja meg a B matrixot:\n");
	for (i = 0; i < m; ++i) /* B mátrix feltöltése */
	{
		for (j = 0; j < k; ++j)
		{
			scanf("%lf", &B[i][j]);
		}
	}

	printf("A matrix:\n");
	for (i = 0; i < n; ++i) /* A mátrix kiíratása */
	{
		for (j = 0; j < m; ++j)
		{
			printf("%0.5lf ", A[i][j]);
		}
		printf("\n");
	}

	printf("B matrix:\n");
	for (i = 0; i < m; ++i) /* B mátrix kiíratása */
	{
		for (j = 0; j < k; ++j)
		{
			printf("%0.5lf ", B[i][j]);
		}
		printf("\n");
	}

	for (i = 0; i < n; ++i)
	{
		for (j = 0; j < k; ++j)
		{
			sum = 0;
			for (p = 0; p < m; ++p)
			{
				sum += A[i][p]*B[p][j];
			}
			AB[i][j] = sum;
		}
	}

	printf("\nEredmenymatrix:\nAB=\n");
	for (i = 0; i < n; ++i) /* AB mátrix kiíratása */
	{
		for (j = 0; j < k; ++j) {
			printf("%0.5lf  ", AB[i][j]);
		}
		printf("\n");
	}

	mtxfree(A, n);
	mtxfree(B, m);
	mtxfree(AB, n);

	return 0;
}

Diadikus szorzás

szerkesztés

Az n-dimenziós valós vektortér   és   vektorainak diadikus szorzatán értjük és  -vel jelöljük azt a tenzort, mely a vektortérbe tartozó minden egyes   vektorhoz az   vektort rendeli.

Hadamard-szorzat

szerkesztés

Két mátrix elemenkénti szorzatát Hadamard- vagy Schur-szorzatnak hívják, elemei:

 

Egy explicit példán:

 

A Hadamard-szorzat kommutatív, asszociatív és az összeadásra nézve disztributív.

Kronecker-szorzás

szerkesztés

Ha    -es és    -es mátrix, akkor a   Kronecker-szorzat nem más, mint

 

azaz az   mátrix minden elemét megszorozzuk a   mátrixszal, és ebből képezünk egy új mátrixot, aminek mérete  .

Hogyha   és   rendre a   és a  , lineáris leképezéseket reprezentálják, akkor   a   tenzorszorzatot reprezentálja.

Használják a regressziós analízisben és a kvantummechanikában.

Invertálás

szerkesztés

Az invertálás csak a nem nulla determinánsú mátrixokra értelmezett. Vagyis, ha egy  -es   mátrixra  , akkor létezik egy   mátrix, amire  , ahol   az  -es identitásmátrix. Ezeket a mátrixokat invertálhatóknak nevezzük, míg a többit szingulárisnak.

A szinguláris mátrixokhoz nem tartozik ilyen mátrix. Ehelyett az inverzhez hasonló módon pszeudoinverzet definiálnak, ahol a szorzatról csak azt kötik ki, hogy szimmetrikus legyen:

 

Tipikusan ez egy diagonális mátrix, a főátlóján 1 és 0 értékekkel.

Speciálisan vektorok esetén további műveletek is léteznek.

Mátrix rangja

szerkesztés

Az    -s mátrix rangja a mátrix lineárisan független oszlopainak maximális száma. Igazolható, hogy ez egy jól definiált természetes szám és megegyezik a mátrix lineárisan független sorainak maximális számával (a sorrang tehát egyenlő az oszlopranggal). Másként úgy is fogalmazhatunk, hogy a rang a mátrix oszlopvektorai által kifeszített altér dimenziója a   vektortérben (  az a test, ahonnan a mátrix elemeit vesszük). Tehát a rang:

 

ahol   az  A mátrix oszlopai vektorokként.

Négyzetes mátrix

szerkesztés

A négyzetes mátrix olyan mátrix, melyben a sorok és oszlopok száma megegyezik. Egy adott test feletti összes n×n-es négyzetes mátrix a skalárral való szorzással, mátrixösszeadással és mátrixszorzással algebrát alkot. Az n>1 esetben az algebra általában nem kommutatív.

Egy A mátrix főátlója az   alakú elemeket tartalmazza, tehát azokat, amelyek ugyanannyiadik sorban vannak, mint oszlopban. (Főátlónak tehát a bal fölső és a jobb alsó sarkot összekötő átlót hívjuk.)

Diagonális mátrix

szerkesztés

A diagonális mátrix avagy diagonálmátrix olyan négyzetes mátrix, amelynek minden főátlón kívüli eleme 0. (A nullmátrix is ide tartozik.)

Példa: egy harmadrangú (n=3) diagonális mátrix:

 

Egységmátrix

szerkesztés

Az   egységmátrix olyan négyzetes mátrix, melynek elemei a főátlóban egységnyiek, összes többi eleme 0, azaz olyan diagonálmátrix, melynek főátlóbeli elemei egységnyiek. Az egységmátrix kielégíti az alábbi egyenlőségeket:   és   minden  -es   mátrixra és  -s   mátrixra.

Példa: ha  :

 

Az egységmátrix a négyzetes mátrixok gyűrűjének egységeleme.

Invertálhatóság

szerkesztés

A gyűrű invertálható elemeit invertálható mátrixnak vagy nem-szinguláris mátrixnak hívják. Egy  -es   mátrix akkor és csakis akkor invertálható, ha létezik egy olyan   mátrix, melyre igaz:  . Ebben az esetben a B mátrix az A mátrix inverz mátrixa és  -nel jelölik.

Determinánsképzés

szerkesztés

Az A négyzetes mátrix determinánsa

 

képlettel adható meg, ahol a   permutációkra kell összegezni és   a   permutáció inverzióinak számát jelöli: azon   párokét, amikre  , de  .

Invertálható mátrixok determinánsa nullától különbözik.

További jellemzők

szerkesztés

Ha   egy szám és   egy nemzéró vektor, melyre igaz az, hogy  , akkor  -t az   mátrix sajátvektorának,  -t pedig a hozzá tartozó sajátértékének nevezik.

Az A négyzetes mátrix karakterisztikus polinomja a   polinom. Ez n×n-es A esetén n-edfokú polinom, melynek főegyütthatója  , konstans tagja pedig A determinánsa. A Cayley–Hamilton-tétel szerint az A mátrix gyöke a   polinomnak. A   szám akkor és csakis akkor sajátértéke A mátrixnak, ha   nem invertálható, azaz ha  . Így   gyökei pontosan A sajátértékei.

A Gauss-elimináció algoritmusának alapvető fontossága van: ezt lehet használni mátrixok determinánsának, rangjának és inverzének számítására, valamint lineáris egyenletrendszerek megoldására.

Egy négyzetes mátrix nyoma (angol kifejezéssel trace-e, vagy német szóval spurja) a főátlójában lévő elemek összege, ez mindig egyenlő az n sajátértékeinek összegével.

Az A négyzetes mátrix hasonló a B négyzetes mátrixhoz, ha létezik olyan C négyzetes mátrix, melyre

 

Jelölésben:

  vagy  

A hasonló mátrixok sajátértékei egyenlők, továbbá a mátrixok hasonlósága nagyon jó példája az ekvivalenciarelációnak.

Komplex mátrix

szerkesztés

Komplex mátrixnak nevezzük a mátrixot, ha elemei között komplex számok is előfordulhatnak.

Példa: Komplex mátrix például az   ahol i az imaginárius egység.

Vektorterek

szerkesztés

Ha   kommutatív, egységelemes gyűrű, akkor a fölötte definiált n×m-es mátrixok a mátrixösszeadásra és a skalárral való szorzásra modulust alkotnak R fölött. Az   mátrixszorzat nyoma

 

skalárszorzat a mátrixok tere fölött.

Speciálisan, ha az alapgyűrű test, akkor a mátrixok euklideszi teret alkotnak. Ha n=m, akkor a térben a szimmetrikus és a ferdén szimmetrikus mátrixok alterei ortogonálisak, tehát  .

A komplex mátrixok szorzatának nyoma  

 

a Hilbert-Schmidt-skalárszorzat, amivel a tér unitér tér lesz. Az általa indukált norma a Frobenius-norma, amivel a mátrixok tere Banach-tér.

A négyzetes mátrixok alkotta mátrixgyűrűkben az egységelem az identitásmátrix. Általánosságban, a főátlóján az alapgyűrű egységeleme, azon kívül nulleleme áll; számtestek esetén a főátlón egyeseket, azon kívül nullákat tartalmaz. A csupa nullelemet, illetve nullákat tartalmazó mátrix a nullmátrix, ami a mátrixgyűrű nullelemeként szolgál.

Alkalmazások

szerkesztés

Mátrixegyenletek átalakítása

szerkesztés

A statisztikában a magasabb dimenziós tételeket, eljárásokat, objektumokat gyakran mátrixokkal adják meg, és a számításokat, bizonyításokat ebben az alakban végzik. Mátrixegyenletek keletkeznek differenciálegyenletek diszkretizálásakor is.

Az egyenletek átalakításakor figyelembe kell venni, hogy a mátrixszorzás nem kommutatív, és hogy léteznek nullosztók. Osztás helyett például az inverzzel kell szorozni a megfelelő oldalról.

Egy egyszerű egyenlet:

 

Ha az   mátrix invertálható, akkor szorozhatunk az inverzzel:

 

így kapjuk az

 

megoldást.

Lineáris leképezések koordinátás ábrázolása

szerkesztés

Egy adott   gyűrű fölött definiált mátrixok kapcsolódnak a gyűrű fölötti modulusokhoz. Ha  , akkor a   értelmezési tartomány és a   képtér (értékkészlet) egy rögzített bázisában az   mátrix egy lineáris leképezést ábrázol, ahol is az   bázisát a képtér bázisának a sorok szerinti lineáris kombinációjába viszi. Azaz, ha az ábrázolt lineáris leképezés  , akkor a  -edik oszlopban a   vektor képének koordinátái állnak. A leképezés az értelmezési tartomány egy tetszőleges   vektorát az   vektorba viszi.[1]

Megfordítva, minden   lineáris leképezés ábrázolható   mátrixszal a fenti bekezdés megfordításaként. Tehát, ha nincs eleve adott bázis a mag- és a képtérben, akkor először választunk egy bázist, majd megnézzük az értelmezési tartomány bázisának képvektorait a képtér bázisában. Ezt az összefüggést kanonikus izomorfizmusnak nevezzük a lineáris leképezések és a mátrixok között:

 

adott  ,   és   esetén. A mátrixszorzás szintén megfelel a lineáris leképezések kompozíciójának, vagyis „szorzatának”. Ez asszociatív, ami egy újabb bizonyítást ad a mátrixszorzás asszociativitására.

Ha   kommutatív egységelemes gyűrű, akkor modulus helyett szabad  -modulusokat tekinthetünk. Ha   test, akkor tetszőleges véges dimenziós   fölötti   és   vektorterek izomorfak egy bázis választásával  -nel és  -mel valamely  -re és  -re, ahol   és   a   és   terek dimenziói. Ha   bázisa  -nek és   bázis  -ben, akkor tetszőleges   vektor egyértelműen előáll   alakban, és hasonlók tudhatók W vektorairól is. Az itt megjelenő testelemek a vektor koordinátái, és

 

az   koordinátavektora.

Hogyha   lineáris leképezés, akkor   bázisvektorainak képei előállnak a   bázisvektorainak lineáris kombinációjaként:

 

a

 

koordinátavektorral. Ekkor a leképezés egyértelműen ábrázolható az

 

mátrixszal. A mátrix függ a terek bázisaitól. Beszorzáskor a   bázisvektorokat a   bázisvektorok váltják fel.

Két lineáris leképezés,   és   szorzatát a

 

mátrixs ábrázolja, feltéve, hogy a  bázis közös. Eszerint a  -ből  -be menő lineáris leképezések halmaza izomorf  -nel. Az   izomorfia azonban a bázisoktól függ, ezért nem kanonikus.

Legyenek   a  , és   a   tér egy másik bázisa. Az adott leképezés ebben a bázisban is ábrázolható. Ez az ábrázolás a korábbi bázisból mátrixszorzással számítható, mégpedig az értelmezési tartomány bázisának megváltozásakor balról kell szorozni egy  -es mátrixszal, míg a képtér bázisváltásához egy  -es mátrixszal jobbról. Ez a szorzási szabály kétszeri alkalmazásával látható be:

 

ahol is az   és   identitásmátrixok mindent önmagára képeznek le.

Ha a bázistranszformáció egyes tulajdonságokat érintetlenül hagy, akkor azokat érdemes bázisfüggetlenül a lineáris leképezésnek tulajdonítani. Egy ilyen tulajdonság test fölött a rang, ami a képtér dimenzióját adja meg. Teljes rang esetén a leképezést ábrázoló mátrixok invertálhatók.

A determinánst csak négyzetes mátrixokra definiálják. Ekkor a két tér dimenziója megegyezik, tehát, mivel az azonos dimenziójú vektorterek izomorfak,   feltehető. Hogyha az értelmezési és a képtartományban ugyanazt a bázistranszformációt végezzük, akkor

 

és a determináns is megmarad. A determináns akkor és csak akkor nem nulla, ha a leképezés teljes rangú.

Végtelen dimenziós terek

szerkesztés

Végtelen dimenziós terekben is teljesül, hogy tetszőleges   lineáris leképezést meghatározzák U egy tetszőleges   bázisának   képvektorai. Ebben az esetben azonban megszokottabb a lineáris operátor elnevezés. Amennyiben korlátos, kiterjeszthető az egész U-ra. Ha most   bázis  -ben, akkor   egyértelműen előáll   elemeinek lineáris kombinációjaként, ahol az együtthatók közül véges sok nullától különböző testelem van, így

 

Test helyett vehető ferdetest is. Így minden korlátos lineáris operátor felfogható végtelenszer végtelen mátrixként, ami extrém ritka, ugyanis a végtelen sok eleme között csak véges sok különbözik nullától. A lineáris transzformációk szorzása ismét megfelel a mátrixszorzásnak.

A nem korlátos lineáris operátorok nem folytonosak, és legfeljebb egy sűrű altérre terjeszthetők ki. Ilyenek például függvénytereken a differenciáloperátorok. Jellemzésükben fontos szerephez jut az értelmezési tartomány. Sok tulajdonságot csak sűrűn definiált operátorokra tudunk bizonyítani.[2]

A funkcionálanalízisben topologikus vektortereket vizsgálnak, így lehet beszélni határértékről, és képezhetők végtelen sorozatok összegei is. Így vizsgálhatók olyan végtelen mátrixok is, amelyek végtelen sok nullától különböző értéket tartalmaznak, és akár egész sorok és oszlopok is teltek lehetnek. Itt bázison is valami mást értenek.

Ennek egy speciális alesetét alkotják a Hilbert-terek. Legyenek   Hilbert-terek, és   rendre   és   ortonormált bázisa. Ekkor a   lineáris operátor, ahol a mátrix elemei a

 

testelemek, és ahol   a Hilbert-tér skalárszorzata. Sűrűn definiált lineáris operátorok is hasonlóan ábrázolhatók, amennyiben az értelmezési tartománynak van ortonormált bázisa.

A Hilbert‑Schmidt-skalárszorzat csak a lineáris leképezések egy részére definiálható. Ezek a Hilbert‑Schmidt-operátorok, amelyekre a definiáló sor folytonosan konvergens.

Speciális mátrixok

szerkesztés

Alkalmazások

szerkesztés

Megjegyzések

szerkesztés
  1. Az azonos című filmtől kezdve a Marvel képregényein és filmjein keresztül – Superman, Transformers – egészen a Star Trek: Voyagerig megszámlálhatatlan sok alkotás használta ezt a szót.
  1. Archivált másolat. [2012. november 19-i dátummal az eredetiből archiválva]. (Hozzáférés: 2016. július 21.)
  2. Archivált másolat. [2012. szeptember 16-i dátummal az eredetiből archiválva]. (Hozzáférés: 2016. július 21.)

Online mátrix számológépek

szerkesztés