tmcv2 % ======================== % TEORIE MATIC - CVIČENÍ 2 % ======================== % 1. OPERACE PROVÁDĚNÉ PO SLOŽKÁCH % 2. UNÁRNÍ MATICOVÉ OPERACE % 3. MATICOVÉ NÁSOBENÍ % % Na příkladech budeme nyní ilustrovat všechny základní % maticové operace: % Nejprve náhodně vytvoříme matice rozměru m x n, které budou % dále užívány v ukázkách % (prvky jsou náhodně vybraná celá čísla v intervalu -5 až 5): pause; format compact m=3; n=4; A = round(10*rand(m,n))-5 A = 5 0 0 -1 -3 4 -5 1 1 3 3 3 B = round(10*rand(m,n))-5 B = 4 -1 -1 -1 2 4 4 3 -3 4 -4 -5 C = round(10*rand(m))-5 % čtvercová matice řádu m C = -4 1 -5 -3 -2 2 -3 -3 -1 % skaláry a = 2 % skaláry a = 2 b = 3 b = 3 pause; %------------------------------------------------------------- % 1. OPERACE PROVÁDĚNÉ PO SLOŽKÁCH % ============================= % 1.1 Sečítání (odečítání) % -------------------- % Pro matice téhož rozměru: X = A + B % kde X(r,s) = A(r,s) + B(r,s) X = 9 -1 -1 -2 -1 8 -1 4 -2 7 -1 -2 Y = A - B % kde Y(r,s) = A(r,s) - B(r,s) Y = 1 1 1 0 -5 0 -9 -2 4 -1 7 8 pause; % Pro matici a skalár: Y = a + B % kde X(r,s) = a + B(r,s) Y = 6 1 1 1 4 6 6 5 -1 6 -2 -3 Y = a - B % kde X(r,s) = a - B(r,s) Y = -2 3 3 3 0 -2 -2 -1 5 -2 6 7 Z = A + b % kde Z(r,s) = A(r,s) + b Z = 8 3 3 2 0 7 -2 4 4 6 6 6 Z = A - b % kde Z(r,s) = A(r,s) - b Z = 2 -3 -3 -4 -6 1 -8 -2 -2 0 0 0 pause; %------------------------------------------------------------- % 1.2 Násobení % -------- % Pro matice téhož rozměru: X = A .* B % kde X(r,s) = A(r,s) * B(r,s): tzv. Hadamardův součin X = 20 0 0 1 -6 16 -20 3 -3 12 -12 -15 pause; % Pro matici a skalár: Y = a .* B Y = 8 -2 -2 -2 4 8 8 6 -6 8 -8 -10 % nebo Y = a * B % kde Y(r,s) = a * B(r,s) Y = 8 -2 -2 -2 4 8 8 6 -6 8 -8 -10 Z = A .* b Z = 15 0 0 -3 -9 12 -15 3 3 9 9 9 % nebo Z = A * b % kde Z(r,s) = A(r,s) * b Z = 15 0 0 -3 -9 12 -15 3 3 9 9 9 pause; %------------------------------------------------------------- % 1.3 Dělení % ------ % POZOR: a/b=b\a je pro skaláry zápis téhož zlomku (a=čitatel, b=jmenovatel) % Pro matice téhož rozměru: X = A ./ B X = 1.2500 0 0 1.0000 -1.5000 1.0000 -1.2500 0.3333 -0.3333 0.7500 -0.7500 -0.6000 % nebo X = B .\ A % kde X(r,s) = A(r,s)/B(r,s) X = 1.2500 0 0 1.0000 -1.5000 1.0000 -1.2500 0.3333 -0.3333 0.7500 -0.7500 -0.6000 pause; % Pro matici a skalár: Y = a ./ B Y = 0.5000 -2.0000 -2.0000 -2.0000 1.0000 0.5000 0.5000 0.6667 -0.6667 0.5000 -0.5000 -0.4000 % nebo Y = B .\ a % kde Y(r,s) = a/B(r,s) Y = 0.5000 -2.0000 -2.0000 -2.0000 1.0000 0.5000 0.5000 0.6667 -0.6667 0.5000 -0.5000 -0.4000 pause; Z = A ./ b Z = 1.6667 0 0 -0.3333 -1.0000 1.3333 -1.6667 0.3333 0.3333 1.0000 1.0000 1.0000 % nebo Z = b .\ A % kde Z(r,s) = A(r,s)/b Z = 1.6667 0 0 -0.3333 -1.0000 1.3333 -1.6667 0.3333 0.3333 1.0000 1.0000 1.0000 pause; %------------------------------------------------------------- % 1.4 Umocňování % ---------- % Pro matice téhož rozměru: X = A .^ B % kde X(r,s) = A(r,s)^B(r,s) X = 625.0000 Inf Inf -1.0000 9.0000 256.0000 625.0000 1.0000 1.0000 81.0000 0.0123 0.0041 pause; % Pro matici a skalár: Y = a .^ B % kde Y(r,s) = a^B(r,s) Y = 16.0000 0.5000 0.5000 0.5000 4.0000 16.0000 16.0000 8.0000 0.1250 16.0000 0.0625 0.0313 Z = A .^ b % kde Z(r,s) = A(r,s)^b Z = 125 0 0 -1 -27 64 -125 1 1 27 27 27 pause; %------------------------------------------------------------- % 2. UNÁRNÍ MATICOVÉ OPERACE % ======================= % 2.1 Transpozice matice % ------------------ X = A.' X = 5 -3 1 0 4 3 0 -5 3 -1 1 3 size(X) % X vznikne z A záměnou řádků a sloupců, tj. má rozměr n x m ans = 4 3 % Pro každé r,s platí A(r,s)=X(s,r), % například pro: r=2,s=3 r = 2 s = 3 % máme stejné prvky: A(r,s), X(s,r) ans = -5 ans = -5 pause; X.' % je opět původní matice A ans = 5 0 0 -1 -3 4 -5 1 1 3 3 3 (A.').' % totéž jinak ans = 5 0 0 -1 -3 4 -5 1 1 3 3 3 pause; %------------------------------------------------------------- % a) Symetrická matice S je čtvercová matice se stejnými % řádky i sloupci: S(r,s)=S(s,r) neboli S=S.' % b) Antisymetrická matice T je čtvercová matice, kde řádky a sloupce mají % opačné znaménko: T(r,s)=-T(s,r) neboli T=-T.' % Všimněte si (anti)symetrie vzhledem k hlavní diagonále) S = C+C.' S = -8 -2 -8 -2 -4 -1 -8 -1 -2 S.' % zřejmě S=S.' ans = -8 -2 -8 -2 -4 -1 -8 -1 -2 pause; T = C-C.' T = 0 4 -2 -4 0 5 2 -5 0 T.' % zřejmě T=-T.' ans = 0 -4 2 4 0 -5 -2 5 0 % Každou čtvercovou matici lze rozložit na její symetrickou a % antisymetrickou část: Cs = (C + C.')./2 Cs = -4.0000 -1.0000 -4.0000 -1.0000 -2.0000 -0.5000 -4.0000 -0.5000 -1.0000 Ca = (C - C.')./2 Ca = 0 2.0000 -1.0000 -2.0000 0 2.5000 1.0000 -2.5000 0 Ca + Cs % platí C=Cs+Ca ans = -4 1 -5 -3 -2 2 -3 -3 -1 pause; %------------------------------------------------------------- % 2.2 Hermitovská transpozice % ----------------------- % X vznikne z K transpozicí a komplexním sdružením všech prvků % X se také nazývá hermitovsky sdružená k A K = A + i*B % komplexní matice m x n: Re(K)=A, Im(K)=B po prvcích K = Columns 1 through 3 5.0000 + 4.0000i 0 - 1.0000i 0 - 1.0000i -3.0000 + 2.0000i 4.0000 + 4.0000i -5.0000 + 4.0000i 1.0000 - 3.0000i 3.0000 + 4.0000i 3.0000 - 4.0000i Column 4 -1.0000 - 1.0000i 1.0000 + 3.0000i 3.0000 - 5.0000i X = K' X = 5.0000 - 4.0000i -3.0000 - 2.0000i 1.0000 + 3.0000i 0 + 1.0000i 4.0000 - 4.0000i 3.0000 - 4.0000i 0 + 1.0000i -5.0000 - 4.0000i 3.0000 + 4.0000i -1.0000 + 1.0000i 1.0000 - 3.0000i 3.0000 + 5.0000i size(X) ans = 4 3 % Pro reálné matice transpzice = hermitovská transpozice A' ans = 5 -3 1 0 4 3 0 -5 3 -1 1 3 A.' ans = 5 -3 1 0 4 3 0 -5 3 -1 1 3 % Pro každé r,s platí A(r,s)=conj(X(s,r)) % například pro: r=2,s=3 r = 2 s = 3 % máme komplexně sdružené prvky: K(r,s), X(s,r) ans = -5.0000 + 4.0000i ans = -5.0000 - 4.0000i X' % je opět původní matice A ans = Columns 1 through 3 5.0000 + 4.0000i 0 - 1.0000i 0 - 1.0000i -3.0000 + 2.0000i 4.0000 + 4.0000i -5.0000 + 4.0000i 1.0000 - 3.0000i 3.0000 + 4.0000i 3.0000 - 4.0000i Column 4 -1.0000 - 1.0000i 1.0000 + 3.0000i 3.0000 - 5.0000i (K')' % totéž jinak ans = Columns 1 through 3 5.0000 + 4.0000i 0 - 1.0000i 0 - 1.0000i -3.0000 + 2.0000i 4.0000 + 4.0000i -5.0000 + 4.0000i 1.0000 - 3.0000i 3.0000 + 4.0000i 3.0000 - 4.0000i Column 4 -1.0000 - 1.0000i 1.0000 + 3.0000i 3.0000 - 5.0000i pause; %------------------------------------------------------------- % a) Hermitovsky symetrická matice S je čtvercová matice, kde % řádky a sloupce jsou komplexně sdružené: % S(r,s)=conj(S(s,r)) neboli S=S' % b) Hermitovsky antisymetrická matice T je čtvercová matice, kde % řádky a sloupce jsou komplexně sdružené a mají opačné znaménko: % T(r,s)=-conj(T(s,r)) neboli T=-T' % Všimněte si (anti)symetrie vzhledem k hlavní diagonále Kc = K(:,1:m) % Vybereme z K ctvercovou submatici m x m (= 3 x 3) Kc = 5.0000 + 4.0000i 0 - 1.0000i 0 - 1.0000i -3.0000 + 2.0000i 4.0000 + 4.0000i -5.0000 + 4.0000i 1.0000 - 3.0000i 3.0000 + 4.0000i 3.0000 - 4.0000i S = Kc+Kc' S = 10.0000 -3.0000 - 3.0000i 1.0000 + 2.0000i -3.0000 + 3.0000i 8.0000 -2.0000 1.0000 - 2.0000i -2.0000 6.0000 S' % zřejmě S=S' ans = 10.0000 -3.0000 - 3.0000i 1.0000 + 2.0000i -3.0000 + 3.0000i 8.0000 -2.0000 1.0000 - 2.0000i -2.0000 6.0000 pause; T = Kc-Kc' T = 0 + 8.0000i 3.0000 + 1.0000i -1.0000 - 4.0000i -3.0000 + 1.0000i 0 + 8.0000i -8.0000 + 8.0000i 1.0000 - 4.0000i 8.0000 + 8.0000i 0 - 8.0000i T' % zřejmě T=-T' ans = 0 - 8.0000i -3.0000 - 1.0000i 1.0000 + 4.0000i 3.0000 - 1.0000i 0 - 8.0000i 8.0000 - 8.0000i -1.0000 + 4.0000i -8.0000 - 8.0000i 0 + 8.0000i % Každou (komplexní) čtvercovou matici lze rozložit na její (hermitovsky) % symetrickou a antisymetrickou část: Ks = (Kc + Kc')./2 Ks = 5.0000 -1.5000 - 1.5000i 0.5000 + 1.0000i -1.5000 + 1.5000i 4.0000 -1.0000 0.5000 - 1.0000i -1.0000 3.0000 Ka = (Kc - Kc')./2 Ka = 0 + 4.0000i 1.5000 + 0.5000i -0.5000 - 2.0000i -1.5000 + 0.5000i 0 + 4.0000i -4.0000 + 4.0000i 0.5000 - 2.0000i 4.0000 + 4.0000i 0 - 4.0000i Ka + Ks % platí Kc=Ks+Ka ans = 5.0000 + 4.0000i 0 - 1.0000i 0 - 1.0000i -3.0000 + 2.0000i 4.0000 + 4.0000i -5.0000 + 4.0000i 1.0000 - 3.0000i 3.0000 + 4.0000i 3.0000 - 4.0000i pause; %------------------------------------------------------------- % 2.3 Operátor vec A % -------------- % Tento operátor transformuje matici A na sloupcový vektor % obsahující pod sebou sloupce matice brane zleva doprava % a naskládané odshora dolů. A(:) ans = 5 -3 1 0 4 3 0 -5 3 -1 1 3 pause; %------------------------------------------------------------- % 3. MATICOVÉ NÁSOBENÍ % ================= % Vytvořme matice užívané v KaSk, Př.7.3, s.65 A=[2,1,-1;0,-2,3] A = 2 1 -1 0 -2 3 [m,n]=size(A) m = 2 n = 3 B=[3,1,0,1;0,1,2,-1;2,1,0,-2] B = 3 1 0 1 0 1 2 -1 2 1 0 -2 [n,p]=size(B) n = 3 p = 4 pause; % 3.1 Definice a interpretace % ----------------------- C=A*B % kde C(r,s)=součet_k A(r,k)*B(k,s) C = 4 2 2 3 6 1 -4 -4 % Pro pevný sloupec s a každý řadkový index r dostáváme: % C(:,s)=součet_k A(:,k)*B(k,s) % Maticový součin tedy můžeme interpretovat takto: % s-tý sloupec matice C je lineární kombinací sloupců matice A % pomocí koeficientů z s-tého sloupce matice B. % například pro s=2 s = 2 A(:,1)*B(1,s)+A(:,2)*B(2,s)+A(:,3)*B(3,s) ans = 2 1 % je 2. sloupce C: C(:,s) ans = 2 1 pause; % Naopak pro pevný řádek r a každý sloupcový index s dostáváme: % C(r,:)=součet_k A(r,k)*B(k,:) % Maticový součin tedy můžeme duálně interpretovat také takto: % r-tý řádek matice C je lineární kombinací řádků matice B % pomocí koeficientů z r-tého řádku matice A. % například pro r=1 r = 1 A(r,1)*B(1,:)+A(r,2)*B(2,:)+A(r,3)*B(3,:) ans = 4 2 2 3 % je 1. řádek C: C(r,:) ans = 4 2 2 3 pause; %------------------------------------------------------------- % Provedeme-li transpozici, pak role řádků a sloupců se zamění. % Platí tedy rovnost C.' = B.'*A.' neboli % transpozice součinu matic=součin transponovaných matic v % opačném pořadí: C.' ans = 4 6 2 1 2 -4 3 -4 B.'*A.' ans = 4 6 2 1 2 -4 3 -4 % Stejnou vlastnost má hermitovská transpozice, jestliže % navíc uvážíme, že komplexně sdružené číslo % k součtu součinů nějakých komplexních čísel % je součet součinů čísel k nim komplexně sdružených. % například pro: Ck = (A+i)*(B-i) Ck = Columns 1 through 3 7.0000 + 3.0000i 5.0000 + 1.0000i 5.0000 9.0000 + 4.0000i 4.0000 + 2.0000i -1.0000 + 1.0000i Column 4 6.0000 - 4.0000i -1.0000 - 3.0000i % jsou identické matice Ck' % a ans = 7.0000 - 3.0000i 9.0000 - 4.0000i 5.0000 - 1.0000i 4.0000 - 2.0000i 5.0000 -1.0000 - 1.0000i 6.0000 + 4.0000i -1.0000 + 3.0000i (B-i)'*(A+i)' ans = 7.0000 - 3.0000i 9.0000 - 4.0000i 5.0000 - 1.0000i 4.0000 - 2.0000i 5.0000 -1.0000 - 1.0000i 6.0000 + 4.0000i -1.0000 + 3.0000i pause; % Součin je asociativní a distributivní zleva i zprava % (viz KaSk: V7.3, s.66) % Není ale obecně komutativní ani když operace dává smysl % což nastane např. pro čtvercové matice: % Uvažme čtvercové matice 2x2 vybrané z A,B: X=A(:,1:2) X = 2 1 0 -2 B(1:2,1:2) ans = 3 1 0 1 A(:,1:2)*B(1:2,1:2) ans = 6 3 0 -2 B(1:2,1:2)*A(:,1:2) ans = 6 1 0 -2 %------------------------------------------------------------- % 3.2 Speciální případy násobení matic % -------------------------------- % a) Násobení matice sloupcovým vektorem zprava % x=(1:3).' x = 1 2 3 y=A*x y = 1 5 % Odpovídá lineární kombinaci sloupců A: A(:,1)*x(1)+A(:,2)*x(2)+A(:,3)*x(3) ans = 1 5 % A tak definuje lineární operátor R^n -> R^m pause; %------------------------------------------------------------- % b) Násobení matice řádkovým vektorem zleva % x=(1:2) x = 1 2 y=x*A y = 2 -3 5 % Odpovídá lineární kombinaci řádků A: x(1)*A(1,:)+x(2)*A(2,:) ans = 2 -3 5 % A tak definuje také lineární operátor R^m -> R^n, % který vzhledem k vlastnosti transpozice můžeme % zapsat pomocí transponované matice: y=A.'*x.' y = 2 -3 5 % Operátor určený maticí A.' se nazývá adjungovaný k A % nad polem reálných čísel R. % Podobně operátor C^m -> C^n určený maticí A' se nazývá % adjungovaný k A nad polem komplexních čísel C. % % c) Součin sloupcového a řádkového vektoru % x=(1:3).' x = 1 2 3 y=(1:4) y = 1 2 3 4 M=x*y % je matice 3 x 4 s prvky M(r,s)=x(r)*x(s) M = 1 2 3 4 2 4 6 8 3 6 9 12 pause; %------------------------------------------------------------- % d) Součin řádkového a sloupcového vektoru téže délky % x=(1:3).' x = 1 2 3 y=(4:6).' y = 4 5 6 m= y.'*x % je skalár m = 32 x(1)*y(1)+x(2)*y(2)+x(3)*y(3) ans = 32 % nazývaný skalární součin vektorů x a y nad polem R, píšeme m= pause; % Skalární součin x a y nad polem C spočteme obdobně: x= (1:3).' x = 1 2 3 y= i.*(4:6).' y = 0 + 4.0000i 0 + 5.0000i 0 + 6.0000i m= y'*x % je skalár m = 0 -32.0000i x(1)*conj(y(1))+x(2)*conj(y(2))+x(3)*conj(y(3)) ans = 0 -32.0000i % V obou případech lze skalární součin spočíst přímo příkazem 'dot': dot(y,x) ans = 0 -32.0000i pause; %------------------------------------------------------------- % e) Vyjádření prvků součinu matic pomocí skalárního součinu: % % Dle části e) platí pro C=A'*B: % C(r,s)=A(:,r)'*B(:,s)= % (r,s)-tý prvek součinu matic = % = skalární součin s-ho sloupce matice B a r-ho sloupce matice A. % Například pro A = (A+i)' A = 2.0000 - 1.0000i 0 - 1.0000i 1.0000 - 1.0000i -2.0000 - 1.0000i -1.0000 - 1.0000i 3.0000 - 1.0000i B = B+2*i B = Columns 1 through 3 3.0000 + 2.0000i 1.0000 + 2.0000i 0 + 2.0000i 0 + 2.0000i 1.0000 + 2.0000i 2.0000 + 2.0000i 2.0000 + 2.0000i 1.0000 + 2.0000i 0 + 2.0000i Column 4 1.0000 + 2.0000i -1.0000 + 2.0000i -2.0000 + 2.0000i C = A'*B C = Columns 1 through 3 -2.0000 + 9.0000i -4.0000 + 7.0000i -4.0000 + 6.0000i 0 + 7.0000i -5.0000 + 5.0000i -10.0000 + 4.0000i Column 4 -3.0000 + 2.0000i -10.0000 r = 2, s= 3 r = 2 s = 3 % je C(r,s) ans = -10.0000 + 4.0000i % totéž jako A(:,r)'*B(:,s) ans = -10.0000 + 4.0000i % nebo jako dot(A(:,r),B(:,s)) % = ans = -10.0000 + 4.0000i pause; %------------------------------------------------------------- disp('KONEC') KONEC diary off