Matice, soustavy lineárních rovnic Tento učební text byl podpořen z Operačního programu Praha- Adaptabilita Irena Sýkorová
Některé vlastnosti matic Uvažujmečtvercovoumatici A=(a ij ) n n Matice Asenazývásymetrická,jestližeplatí A=A, tj a ij = a ji pro i,j=1,,n Matice A se nazývá pozitivně definitní, jestliže všechny její hlavní minory jsou kladné, tj a 11 a 1 a 1i a D 1 >0,,D n >0, kde D i = 1 a a i a i1 a i Matice A se nazývá diagonálně dominantní, jestliže absolutní hodnota prvku na diagonále je větší nebo rovna součtu absolutních hodnot ostatních prvků buď pro všechny řádky nebo pro všechny sloupce, tj a ii a ij pro i=1,,n i j a ii Matice je ostře diagonálně dominantní, jsou-li nerovnosti ostré Příklad 1: Rozhodneme, zda matice A je symetrická, pozitivně definitní, diagonálně dominantní A= 4 1 0 3 0 3 Řešení:Matice Anenísymetrická,protože a 1 a 1 Kověřenídefinitnostivypočítámepříslušné minory D 1 =4(>0), D = 4 1 3 =14(>0), D 4 1 0 3= 3 0 3 =6(>0) Všechny minory jsou kladné, matice A je pozitivně definitní Podmínku pro diagonální dominanci provedeme nejprve pro řádky: 4 > 1 + 0 3 < + 3 > + 0 ve druhém řádku podmínka neplatí, zkusíme tedy sloupce: 4 > + 0 3 1 + 3 > + 0 Podmínka je splněná pro všechny sloupce, matice A je diagonálně dominantní, není však ostře diagonálně dominantí(ve druhém sloupci je neostrá nerovnost) MATLAB ověření,zdamatice Ajesymetrická,tedy A=A,neboli A A = O(nulovámatice): >> A-A nebo porovnáním výsledek: 1(A je symetrická), 0(A není symetrická) >> isequal(a,a ) ověření, zda matice A je pozitivně definitní všechny minory jsou kladné(pro malé matice)
>> A(1,1) >> det(a(1:,1:)) >> det(a(1:3,1:3)) >> >> det(a) Vlastní čísla matice Uvažujmečtvercovoumatici A=(a ij ) n n Jestližepročíslo λ(obecněkomplexní)anenulový vektor xplatí A x=λ x, (1) číslo λ se nazývá vlastní(charakteristické) číslo matice A a vektor x se nazývá vlastní(charakteristický) vektor matice A příslušný vlastnímu číslu λ Rovnici(1) můžeme upravit, J je jednotková matice řádu n A x=λ x, A x λ x=ō, (A λj) x=ō () Toto je maticový zápis homogenní soustavy n lineárních rovnic o n neznámých s maticí soustavy A λjhledámenenulovývektor x,tjnenulovéřešenísoustavy,atoexistuje,právěkdyžjematice soustavy singulární, tj det(a λj)=0 (3) Matice A λjsenazývácharakteristickámatice,polynom p(λ)=det(a λj)senazývácharakteristický polynom(stupně n) a rovnice(3) je charakteristická rovnice Hledáme kořeny polynomu n-tého stupně a tedy existuje n(reálných nebo komplexních, případně i násobných) vlastních čísel matice A Spektrální poloměr matice A je největší z absolutních hodnot vlastních čísel ρ(a)=max{ λ i,kde λ i jevlastníčíslomatice A} Poznámka:Známe-livlastníčíslo λ,pakpříslušnývlastnívektorjekaždénenulovérešenísoustavy() Příklad : Vypočítáme vlastní čísla a spektrální poloměr matice A= Řešení: Nejprve určíme chrakteristickou matici A λj= ( ) 1 3 ( ) 1 3 ( ) ( ) λ 0 1 λ =, 0 λ 3 λ pak charakteristický polynom, neboli det(a λj)= 1 λ 3 λ =(1 λ)( λ) 6=λ 3λ 4 Vlastní čísla matice jsou kořeny charakteristického polynomu, tj hledáme řešení charakteristické rovnice(kvadratické) λ 3λ 4=0,tedycharakteristickáčíslamatice Ajsou λ 1 =4, λ = 1 3
Spekrální poloměr je největší z absolutních hodnot vlastních čísel, tj Spekrálnípoloměrje ρ(a)=4 Platí: max{ λ 1, λ }=max{ 4, 1 }=max{4,1}=4 a) Je-li matice symetrická, všechna její vlastní čísla jsou reálná b) Matice je symetrická a pozitivně definitní, právě když všechna její vlastní čísla jsou kladná MATLAB vlastní čísla matice A: >> eig(a) spektrální poloměr matice A(největší z absolutních hodnot vlastních čísel): >> max(abs(eig(a))) Norma matice Podobným způsobem jako u vektorů můžeme definovat i normu matice Normamaticejetakovézobrazení R n n do R,kterésplňujetytopodmínky: (i) A >0prokaždounenulovoučtvercovoumaticia A =0pouzepro A=O, (ii) c A = c A prokaždéreálnéčíslo c, (iii) A+B A + B prokaždédvěčtvercovématicestejnéhořádu (iv) A B A B prokaždédvěčtvercovématicestejnéhořádu Je důležitá souvislost mezi normou vektoru a normou matice Řekneme, že norma vektoru a norma matice je konzistentní s normou vektoru, jestliže pro každou matici A a vektor x platí A x A x Normu matice můžeme také definovat pomocí normy vektoru Je-li dána norma vektoru, pak platí A x A =sup x ō x = sup A x (4) x =1 aříkáme,žetatonormamaticejegenerovanánormouvektoru Norma matice generovaná normou vektoru je s touto normou konzistentní Nejčastěji užívané normy matice jsou: n a) A = max 1 i n j=1 a ij,tzvřádkovánorma, n b) A 1 = max i=1 a ij,tzvsloupcovánorma, c) A F = 1 j n ( n i=1 n j=1 a ij )1, tzv Frobeniova norma, někdy též Schurova, d) A = ρ(a A),tzvspektrálnínorma,někdytéžeuklidovská 4
Příklad 3: Vypočítáme všechny normy matice A = ( ) 1 5 6 Řešení: a) Při počítání řádkové normy sečteme absolutní hodnoty prvků v každém řádku a z těchto součtů vybereme maximální A =max{ 1 + 5, + 6 }=max{6,8}=8 b) Pro určení sloupcové normy sečteme absolutní hodnoty prvků v každém sloupci a z těchto součtů vybereme maximální A 1 =max{ 1 +, 5 + 6 }=max{3,11}=11 c) Frobeniova norma je druhá odmocnina součtu druhých mocnin všech prvků matice A F = (1) +() +( 5) +(6) = 1+4+5+36= 66=8,14 d) K určení spektrální normy potřebujeme nalézt největší z absolutních hodnot vlastních čísel matice A A ( ) ( ) ( ) A 1 1 5 5 7 A= =, 5 6 6 7 61 pak kořeny chakteristického polynomu jsou (5 λ)(61 λ) 49=0 λ 66λ+56=0 λ 1 =61,8617, λ =4,1383 Spektrálnínormajeodmocninazespektrálníhopoloměrumatice A A ρ(a A)=61,8617 A = 61,8617=7,865 Výpočet spektrální normy pro větší matice je poměrně pracný MATLAB normymatice A: řádková: >> norm(a,inf) >> max(sum(abs(a ))) sloupcová: >> norm(a,1) >> max(sum(abs(a))) Frobeniova: >> norm(a, fro ) >> sqrt(sum(diag(a * A))) spektrální: >> norm(a,) >> norm(a) Poznámka:Frobeniovanormamaticenenígenerovanáeuklidovskounormouvektoru,protožepro jednotkovoumatici Jřádu nplatí J F = n,alepodle(4)je J F =1Euklidovskounormou vektoru je generovaná spektrální norma matice Pro každou normu matice, která je konzistentní s nějakou normou vektoru, platí ρ(a) A 5
Podmíněnost matic Dříve než se budeme věnovat studiu metod řešení soustav lineárních rovnic, je potřeba zmínit tzv podmíněnostmaticevpodstatějdeoto,jak citlivá jematicesoustavyvzhledemkchybámve vstupních datech i k zaokrouhlovacím chybám v průběhu výpočtu Příklad 4: Uvažujme soustavu lineárních rovnic x+6y=8 x+6,0001y=8,0001, jejímžřešenímje x=1, y=1pokudprovedemevkoeficientechmalouzměnu(řádově10 4 ),dostaneme soustavu x+6y=8 x+5,9999y=8,000 sřešenímje x=10, y= Tedymalézměnykoeficientůmaticeasložekvektorupravýchstran způsobí velké změny(řádově jednotky) v řešení Matice se nazývá dobře podmíněná, jestliže relativně malé změny v koeficientech způsobí relativně malé změny v řešení Matice se nazývá špatně podmíněná, jestliže relativně malé změny v koeficientech způsobí relativně velké změny v řešení Uvažujeme nyní soustavu lineárních rovnic A x= b (5) sregulárnímaticísoustavy AOznačíme-li x přesné(teoretické)řešenísoustavy A x= ba x c je přesnéřešeníporušenésoustavy(a+δa) x= b+δ b,pakodhadrelativníchybyřešení xc x x závisí přímo na součinu K(A)= A A 1, kde norma matice je generovaná normou vektoru Číslo K(A) se nazývá číslo podmíněnosti matice AČímjevětší,tímjematicehůřpodmíněnáatímjevětšíodhadrelativníchybyřešení ( ) 6 Poznámka: Matice A = z předchozího příkladu má číslo podmíněnosti velké 6,0001 K(A)=4 10 5 MATLAB číslo podmíněnosti matice A: >> cond(a) Přímé metody řešení soustav lineárních rovnic Nyní se budeme věnovat numerickému řešení soustavy lineárních rovnic A x= b, kdematicesoustavy A=(a ij )jereálnáregulárnímaticeřádu n, b=(b 1,b,,b n ) jesloupcový vektor pravých stran 6
Metody řešení soustav lineárních rovnic můžeme rozdělit do dvou skupin: metody přímé a metody iterační Pomocí přímých metod dostaneme po konečném počtu kroků přesné řešení soustavy, metodami iteračními získáme posloupnost vektorů, která konverguje k přesnému řešení Ve skutečnosti ale vždy dostaneme pouze určitou aproximaci řešení; u přímých metod je to způsobeno zaokrouhlovacími chybami, u metod iteračních tím, že můžeme provést vždy jen konečný počet kroků Volba metody závisí na konkrétní soustavě, musíme vzít v úvahu, zda je matice soustavy malá nebo velká, zda obsahuje hodně nulových prvků, tzn je řídká nebo zda má nějaké speciální vlastnosti např je třídiagonální Mezi přímé metody patří Gaussova eliminační metoda, Jordanova eliminační metoda, metoda využívajícíinverznímaticiznáme-liinverznímatici A 1,můžemepočítatřešenízevztahu x=a 1 b, alevlastnívýpočetmatice A 1 nenípřílišvýhodný Gaussova eliminační metoda spočívá v tom, že nejprve rozšířenou matici soustavy(a b) převedeme pomocí ekvivalentních úprav do tvaru(u y), kde U je horní trojúhelníková matice tzv přímý chod Místo původní soustavy pak řešíme soustavu U x=ȳ, ze které se zdola snadno dopočítají složky neznámého vektoru x tzv zpětný chod V přímém chodu provádíme v(n 1) krocích nulování prvků pod diagonálou v 1 až(n 1) sloupci Používáme pouze takovou úpravu, že v k-tém kroku násobíme k-tý řádek vhodnou konstantou a tento násobekpřičtemekostatnímřádkůmoznačíme-li A (0) = A, b (0) = b,počítánímpodlevzorce(pro k=1,,n-1,i=k+1,,n,j=k,,n) a (k) ij = a (k 1) ij a (k 1) a (k 1) kj ik a (k 1) kk spodmínkou a (k 1) kk 0 Je-li příslušný diagonální prvek nulový, musíme tento řádek vyměnit s některým ze zbývejících, tak aby na diagonále bylo nenulové číslo Případně, kvůli omezení šíření zaokrouhlovacích chyb, je možné provést pivotaci výběr prvku v absolutní hodnotě největšího v daném sloupci, který výměnou řádků přemístíme na diagonální pozici Ve zpětném chodu se neznámé počítají odzadu podle vzorců x n = y n u nn x i = 1 u ii y i n j=i+1 u ij x j pro i=n 1,,1 Příklad 5: Gausovou eliminační metodou vyřešíme soustavu x 1 +x +x 3 = x 1 +x +3x 3 = 5 x 1 x = 1 (6) Řešení: Koeficienty a pravé strany zapíšeme do rozšířené matice soustavy, kterou převedeme do horního trojúhelníkového tvaru Provádíme takové úpravy, že v k-tém kroku násobíme vždy k-tý řádek vhodnou konstantou a tento násobek přičteme k ostatním řádkům tak, abychom vynulovali prvky pod diagonálou(konstanty jsou zapsané vpravo vedle příslušného řádku) 1 3 5 1 1 0 1 ( ) (1) 1 0 1 1 0 1 1 ( 1 ) 1 0 1 1 0 0 3 3 7
Odtudsnadnodopočítáme x 3 =1, x = 1, x 1 = Podobná je Jordanova eliminační metoda, kde se matice soustavy A převádí ma matici jednotkovou, řešení pak je ve sloupci pravých stran Z Gaussovy eliminace můžeme odvodit i tzv LU rozklad matice Dříve než popíšeme princip LU rozkladu, ukážeme, že některé elementární úpravy matice lze provádět násobením dané matice zleva speciálními regulárními maticemi Poznámka:Jestliževdanématici M chceme mnásobek i-téhořádkupřičístkj-témuřádku, můžeme tuto úpravu vyjádřit jako součin matic; matici M nádobíme zleva maticí V, která vznikne zjednotkovématicepřidánímkonstanty mnapozici v ji Pokudje j > i,jematice V dolnítrojúhelníková Příklad6:Matici Mupravímetak,žečtyřnásobekprvníhořádkupřičtemeketřetímu(i=1, j=3, m=4) M= 1 0 3 V = 1 0 0 0 1 0 4 5 4 0 1 V M= 1 0 0 0 1 0 1 0 3 = 1 0 3 4 0 1 4 5 0 3 Poznámka:Jestliževdanématici M chcemevyměnit i-týaj-týřádek,můžemetutoúpravu vyjádřit jako součin matic; matici M nádobíme zleva maticí P, která vznikne z jednotkové matice záměnou i-tého a j-tého řádku Matice P se nazývá permutační matice Příklad6:Vmatici Mvyměnímeprvníadruhýřádek(i=1, j=) M= 1 0 3 P= 0 1 0 1 0 0 4 5 0 0 1 P M= 0 1 0 1 0 0 1 0 3 = 3 1 0 0 0 1 4 5 4 5 Budeme-li používat LU rozklad matice, znamená to, že matici soustavy A chceme vyjádřit jako součin A=LU, kde L je dolní trojúhelníková matice s jedničkami na diagonále a U je horní trojúhelníková matice Soustavu(5) pak řešíme jako dvě soustavy s trojúhelníkovými maticemi Lȳ= b U x=ȳ Trojúhelníkové matice L a U můžeme získat postupnými úpravami matice A, což můžeme symbolicky vyjádřit jako (A J) (U L ), kde L jedolnítrojúhelníkováaplatí L A=UPřitomtozpůsobuvýpočtuvšaksmímepoužítjen takovou elementární úpravu, kdy přičítáme násobek určitého řádku k řádku, který je pod ním Ze vztahu L A=Usnadnoodvodíme A=(L ) 1 U= LU Provedenýmúpravámodpovídápostupnénásobenímatice Amaticemi V k L A=V k V 1 A=U A=(L ) 1 U=(V k V 1 ) 1 U=(V1 1 V 1 k )U= LU Každá matice L má na diagonále jedničky a pod diagonálou příslušné koeficienty z úprav při Gaussově eliminaci, ale s opačnými znaménky 8
Příklad 7: Vyřešíme soustavu(6) pomocí LU rozkladu Řešení: Matici soustavy(6) rozložíme A=LU= 1 0 0 1 0 1 0 1 = 1 3 1 1 3 1 0 0 1 1 0 Pakhledámeřešenísoustavy Lȳ= b 1 0 0 1 0 y 1 y = 5, 1 1 1 y 3 1 kterousnadnovyřešíme:zprvnírovniceje y 1 =,dosazenímdodruhédostaneme y =1,zetřetí y 3 = 3,tedy ȳ= 1 3 Nynízbývávyřešitsoustavu U x=ȳ,cožjezpětnýchodgaussovyeliminace 1 0 1 x 1 x = 1 3 3 0 0 x 3 x 1 x = 1 x 3 1 Ikdyžmatice Ajeregulární,můžesestát,žeseběhemúpravobjevínulovýdiagonálníprvekPak je potřeba vyměnit řádky, což v tomto případě není povolená úprava Je tedy třeba prohodit řádky původnímatice Atak,abysenovámatice PAdalaserozložitnasoučin LU,tj Řešení původní soustavy pak probíhá takto: PA=LU Lȳ= P b U x=ȳ Výhoda LU rozkladu se projeví, pokud řešíme více soustav se stejnou maticí Pak se nejpracnější částvýpočtu,tjvýpočetmatic LaU,provádípouzejednou MATLAB přímé metody řešení soustav lineárních rovnic (A matice soustavy, b sloupcový vektor pravých stran): příkazem Matlabu: >> x = A \ b pomocí inverzní matice: >> A1 = inv(a) >> x = A1 * b pomocílurozkladu(řešíme Ly= Pb, Ux=y,kde Pjepermutačnímatice): >> [L, U, P] = lu(a) >> x = U \ ( L \ (P*b)) 9
Dodatky Je-li matice A symetrická a pozitivně definitní, pak existuje horní trojúhelníková metice U tak, že platí A=U U (7) TomutovyjádřeníseříkáCholeskéhorozkladVztah(7)býváněkdyzapsántakévetvaru A=LL, kde L je dolní trojúhelníková matice MATLAB Choleského rozklad matice A(funkce vrací horní trojúhelníkovou matici): >> chol(a) řešení soustav lineárních rovnic: >> x = U \ ( U \ b) V některých případech potřebujeme vyřešit soustavu s maticí ve speciálním tvaru, maticí třídiagonální, tj maticí ve tvaru a 11 a 1 0 0 0 0 a 1 a a 3 0 0 0 0 a 3 a 33 a 34 0 0 0 0 a n,n 3 a n,n a n,n 1 0 0 0 0 a n 1,n a n 1,n 1 a n 1,n 0 0 0 0 a n,n 1 a n,n Taková matice je řídká, má málo nenulových prvků a hodně nulových(pro velká n) Při numerickém řešení se používá speciální postup, který umožňuje uložit do paměti pouze nenulové prvky 10