echo on % ======================== % TEORIE MATIC - CVIČENÍ 4 % ======================== % 6. ELEMENTÁRNÍ ŘÁDKOVÉ A SLOUPCOVÉ ÚPRAVY % 7. PŘEVOD NA SCHODOVITÝ TVAR JAKO METODA ZJIŠTĚNÍ HODNOSTI MATICE % format compact format rational p=2; m=3; n=4; T = round(10*rand(m,n))-5 I = eye(m) % Jednotková matice a = 3 b = 2 pause; %------------------------------------------------------------- % 6. ELEMENTÁRNÍ ŘÁDKOVÉ A SLOUPCOVÉ ÚPRAVY % ====================================== % Elementární řádkové (sloupcové) úpravy vychází z věty 3.14(6)(7) % Jejich prováděním se tedy nemění (řádková) hodnost matice % % 6.1 Záměna řádku za jeho násobek nenulovým skalárem % ----------------------------------------------- % Například vynásobení 2.řádku matice T skalárem a: T1=T a T1(2,:) = a*T1(2,:) pause; % Dle tmcv3/5.4 můžeme pro tento účel sestavit diagonální % transformační matici: R = I; R(2,2) = a % Pak R*T % dá stejný výsledek pause; %------------------------------------------------------------- % 6.2 K řádku přičteme lineární kombinaci jiných řádků % ------------------------------------------------ % Například přičtěme k 3.řádku matice T a-násobek 1.řádku % a b-násobek 2.řádku: T2=T a b T2(3,:) = T2(3,:)+ a*T2(1,:)+ b*T2(2,:) % I pro tento účel lze sestavit transformační matici R = I; R(3,1) = a; R(3,2)=b % Pak opět R*T % dá stejný výsledek pause; %------------------------------------------------------------- % 6.3 Záměna dvou řádků v matici % -------------------------- % Dá se realizovat posloupností úprav typu 6.1 a 6.2 % (viz KaSk: V9.2, s.80). % Můžeme ji provést opět přímo, např záměna 1. a 3. řádku v T: T T3=T([3,2,1],:) pause; % Opět sestavíme transformační matici tak, že stejným způsobem % přehodíme řádky v jednotkové matici: R = I([3,2,1],:) % Pak opět R*T % dá stejný výsledek pause; %------------------------------------------------------------- % 7. PŘEVOD NA SCHODOVITÝ TVAR JAKO METODA ZJIŠTĚNÍ HODNOSTI MATICE % ============================================================== % tzv. algoritmus GAUSSOVY ELIMINACE. % Definice matice ve schodovitém tvaru: viz KaSk, Def.9.1, s.79 % Vytvořme matici užitou v KaSk, Př.9.2, s.81 a převeďme ji na % schodovitý tvar pomocí elementárních úprav z předchozí části: A = [0 1 3 -1 2 1;0 -2 -6 2 0 2;0 0 0 1 -1 7;0 2 6 -2 2 0] [m,n] = size(A) I = eye(m) s=0 % počáateční nastavení počítadla schodů pause; %------------------------------------------------------------- % 7.1 ELIMINACE 1.SLOUPCE % Není třeba nic provádět, neboť 1.sloupec je již nulový: A(s+1:end,1) pause; %------------------------------------------------------------- % 7.2 ELIMINACE 2.SLOUPCE % 2. sloupec je pod schodem nenulový: A(s+1:end,2) pause; % zvětšíme proto počítadlo schodů o 1: s = s + 1 A(s,2) % je nenulový, takže rovnou provedeme eliminaci % části 2.sloupce pod schodem: A(s+1:end,2) A1 = A; A1(2,:) = A1(2,:) + 2*A1(s,:) % 2x s-tý.ř. přičteme ke 2.ř. A1(4,:) = A1(4,:) - 2*A1(s,:) % Od 4.ř. odečteme 2x s-tý ř. pause; % Stejný efekt dosáhneme pomocí transformační matice R1, % která je složením dvou elementárních řádkových úprav typu 6.2: R11 = I; R11(2,s)= 2 R12 = I; R12(4,s)=-2 R1 = R12*R11 pause; % Transformační matici R1 můžeme samozřejmě sestavit přímo: R1 = I; R1(2,s)=2; R1(4,s)=-2 % Provedeni eliminace 2. sloupce pomocí transformační matice: R1*A % je totéž jako A1: A1 pause; %------------------------------------------------------------- % 7.3 ELIMINACE 3. SLOUPCE % Není třeba nic provádět, neboť 3.sloupec je pod schodem již % nulový: A1(s+1:end,3) pause; %------------------------------------------------------------- % 7.4 ELIMINACE 4.SLOUPCE % 4. sloupec je pod schodem nenulový: A1(s+1:end,4) pause; % zvětšíme proto počítadlo schodů o 1: s = s + 1 A1(s,4) % je nulový, proto % přehodíme s-tý řádek se třetím (elem. úprava typu 6.3), neboť % na pozici A1(s,4) musí být nenulové číslo A2 = A1; A2([s,3],:) = A1([3,s],:) pause; % Část 4.sloupce pod schodem je po přehození nulová, takže % vlastní eliminace se opět neprovádí. pause; % Sestavme opět výslednou transformační matici R2 pro tento sloupec. % Realizuje jen přehození řádků, tj.: R2 = I; R2([s,3],:) = I([3,s],:) % Opět R2*A1 % dá opět totéž: A2 pause; %------------------------------------------------------------- % 7.5 ELIMINACE 5.SLOUPCE % 5. sloupec je pod schodem nenulový: A2(s+1:end,5) pause; % zvětšíme proto počítadlo schodů o 1: s = s + 1 A2(s,5) % je nenulový, takže rovnou provedeme eliminaci % části 5.sloupce pod schodem: A2(s+1:end,5) A3 = A2; A3(4,:) = A3(4,:) + A3(s,:)./2 % ke 4.ř. příčteme (1/2)x s-tý ř. pause; % Stejný efekt dosáhneme pomocí transformační matice R3, % která realizuje jednu elementární řádkovou úpravu typu 6.2: R3 = I; R3(4,3)=1/2 R3*A2 pause; %------------------------------------------------------------- % Složením transformačních matic můžeme celou úpravu na schodovitý % tvar provést najednou: R3*R2*R1*A pause; % Vzhledem k asociativitě násobení matic totéž % provede jediná transformační matice: R = R3*R2*R1 % která opět dá výsledný schodovitý tvar: S=R*A pause; %------------------------------------------------------------- % 7.6 URČENÍ HODNOSTI MATICE A: % Podle 3.14 má S stejnou hodnost jako A % (dimenze prostorů generovaných řádky S a A jsou stejné). % Podle 3.14(3) můžeme v S ještě vynechat m-s nulových koncových % řádků, takže zbude jen s řádků odpovídajích schodům,tj. % platí r(A)=r(S)<=s. % Po vyškrtání n-s sloupců, kde se nic neprovádělo % se vybere regulární horní trojúhelníková submatice řádu s: % v našem případě se vynechají sloupce 1,3,6, tj. vybereme U = S(1:s,[2,4,5]) % Pak dle tmcv3/5.5 (na konci) platí také: % r(A)=r(S)>=s. % Závěr: clekem r(A) = s, tj. počet schodů udává hodnost matice A: s % Kontrola: rank(A) rank(S) pause; %------------------------------------------------------------- % 7.7 LU-ROZKLAD MATICE A: % Jestliže všechny potřebné záměny řádků, provedeme s maticí A % předem, tj. provedeme s maticí A řádkovou permutaci P vzniklou % složením všech záměn, pak zůstanou jen řádkové úpravy typu 6.2: % V našem případě P = R2 Ap = P*A % provede permutaci předem pause; % Pak transformační matice Rp1 bude: Rp1 = I; Rp1(3,1)=2; Rp1(4,1)=-2 % Provedeni eliminace 2. sloupce pomocí transformační matice Rp1: Ap1=Rp1*Ap pause; % Transformace R3 zůstavá beze změny, neboť proběhla až po permutaci: Rp3 = R3 Ap3 = Rp3*Ap1 % Což je stejný výsledek jako A3. A3 pause; % Neboli naráz: Rp = Rp3*Rp1 S = Rp*Ap pause; % Všimněme si, že tentokrát výsledná transformační matice % Rp je dolní trojúhelníková s jedničkami na diagonále. % Dle tmcv3/5.5 je tedy regulární a existuje k ní inverzní % matice, která je rovněž regulární a dolní trojúhelníková: Rpi = inv(Rp) % pak S = Rp*Ap => Rpi*S = Rpi*Rp*Ap = Ap = P*A % ----- --- Rpi*S P*A pause; % Nalezli jsme tak rozklad vhodně řádkově permutované matice A % na součin dolní (lower) trojúhelníkové matice a schodovité matice S, % která jako submatici obsahuje regulární horní (upper) trojúhelníkovou % submatici. % Tomuto rozkladu se říká LU-rozklad matice na tvar: P*A = L*U pause; % V MATLABu obdobný rozklad přímo nalezne příkaz 'lu'. % Jeho užití je omezeno jen na čtvercovou matici. help lu pause; % V našem případě tato podmínka není splněna. Stačí ale doplnit % matici vhodným počtem nulových řádků nebo sloupců: AA = [A;zeros(2,n)] [L,U,P] = lu(AA) pause; %-------------------------------------------------------------