Matice

Matice je v matematice obdélníková tabulka čísel nebo nějakých matematických objektů - prvků matice (též elementů matice). Obsahuje obecně m řádků a n sloupců. Hovoříme pak o matici typu m x n.

Prvky matice jsou označeny indexy udávajícími řádek a sloupec, v nichž se prvek nachází. Prvek v i-tém řádku a j-tém sloupci matice A se obvykle značí aij. Potom i-tý řádek matice obsahuje vodorovnou n-tici prvků (ai1,ai2,...,ain), kde i = 1,2,...,m a j-tý sloupec matice obsahuje svislou n-tici čísel (a1j,a2j,...,amj), kde     j = 1,2,...,n.

Při úpravě matic můžeme pouřít povolené elementární úpravy:

  1. Přehození dvou řádků
  2. Vynásobení libovolného řádku nenulovým reálným číslem
  3. Přičtení libovolného násobku někajého řádku k jinému řádku

  

Maticový zápis soustavy lineárních rovnic

Nechť je dána soustava m lineárních rovnic o n neznámých.

Např.:

  1. a11x1 + a12x2 + ... + a1nxn = b1
  2. a21x1 + a22x2 + ... + a2nxn = b2
  3. am1x1 + am2x2 + ... + amnxn = bm

 Takovouto matici pak nazýváme maticí soustavy (typu m x n):

 \mathbf{A} = \begin{pmatrix} 9 & 8 & 6 \\ 1 & 2 & 7 \\ 4 & 9 & 2 \\ 6 & 0 & 5 \end{pmatrix}

A toto je rozšířená matice soustavy (typu m x n+1)

 \left( \begin{array}{cccc|c} a_{11} & a_{12} & \dots & a_{1n} & b_1\\ a_{21} & \dots & \dots & \dots & b_2\\ \ldots & \ldots & \ldots & \ldots & \ldots\\ a_{m1} & \dots & a_{m(n-1)} & a_{mn} & b_m \end{array} \right).

Součet matic

Mějme 2 matice A,B typu mxn. Jako součet těchto matic označíme matici S typu mxn.

S=A+B

Prvky matice S jsou určeny vztahem: sij=aij+bij

Součet matic má smysl poze pro matice stejného typu.

 

Součin matic

Pokud A je matice m x n a B je matice n x p (tedy pokud první matice má stejný počet řádků jako druhá matice sloupců), jejich součin A x B je matice typu m x p zadaná pro všechny dvojice i a j.

V podstatě jde o skalární součin vektoru řádku první matice s vektorem sloupce druhé matice. Tento výsledek se pak zapíše na pozici ve výsledné matici, jejíž index odpovídá číslu řádku první matice a číslu sloupce druhé matice.

Gausova eliminace

  1. krok - první řádek matice vynásobíme takovým -k1, aby po součtu s druhým řádkem bylo a21 = 0 (a11 je pivot), tedy k1=a21/a11
  2. krok - první řádek matice vynásobíme takovým -k2, aby po součtu s třetím řádkem bylo a31 = 0
  3. krok - druhý řádek matice vynásobíme takovým -k3, aby po součtu s třetím řádkem bylo a32=0

Uvedené řešení se nazývá úprava na horní trojúhelníkovou matici. Byla řešena soustava 3 rovnic o 3 neznámých. Při vyšším počtu neznámých je řešení obdobné.

Prvek jedné rovnic který užíváme k úpravě druhé rovnice nazýváme pivot (nebo hlavní prvek)

 

Otázka řešitelnosti soustavy

Nejprve si určíme hodnost matice A - h(A) a hodnost rozšířené matice - h(A|b).

  1. Soustava nemá řešení pokud h(A|b) > h(A)
  2. Soustava má řešení pokud h(A|b) = h(A)

Hodnost matice je číslo, které určuje počet lineárně nezávislých řádků matice.

Platí, že maximální počet lineárně nazávislých sloupců je roven maximálnímu počtu lineárně nazávislých řádků matice. Definice hodnosti je tedy platná také pro maximální počet lineárně nezávislých sloupců.

Pro matici tymu m x n platí: 

h(A) =< min{m,n}

Jordanova eliminace

Můžeme říct, že se jedná o rozvedenou gaussovu metodu, přičemž výsledkem zde není matice trojúhelníková, ale jendotková. Jednotková matice má na diagonále samé jedničky a nad i pod diagonálou nuly. Výsledek lineární rovnice je tedy v tomto tvaru zřejmější než u Gaussovy eliminace.

Zde je ukázka výsedné jednotkove matice:

.

 

Ukázka práce s maticemi v Pascalu(program řeší násobení 2 matic):

program nasobmatic;

var a,b,c:array[1..10,1..10] of integer;

    m,n,i,j,p,k:byte;

begin

randomize;

n:=random(9)+1;

m:=random(9)+1;

p:=random(9)+1;

{A}

for i:=1 to m do

    for j:=1 to n do a[i,j]:=random(9);

writeln('Vypis hodnot A:');

for i:=1 to m do

    begin

         for j:=1 to n do write(a[i,j],' ');

         writeln;

    end;

{B}

for i:=1 to n do

    for j:=1 to p do b[i,j]:=random(9);

writeln('Vypis hodnot B:');

for i:=1 to n do

    begin

         for j:=1 to p do write(b[i,j],' ');

         writeln;

    end;

{nasobeni A X B}

for i:=1 to m do

     for j:=1 to p do

             for k:=1 to n do c[i,j]+=a[i,k]*b[k,j];

writeln('Vypis hodnot C(vysledek nasobeni):');

for i:=1 to m do

    begin

         for j:=1 to p do write(c[i,j],' ');

         writeln;

    end;

readln();

end.

 

 

 

 

 

Naposledy změněno: čtvrtek, 29. října 2015, 10.56