
Uprav ji na diagonální :-).
Offline

Jestli nedělám někde chybu já, tak má nenulový determinant, takže podle mě to jít musí. Mám na mysli úpravu na horní trojúhelníkový tvar a pak zpětnou na dolní trojúhelníkový, tj. jako při Gaussově eliminaci. Zbydou nenulové diagonální prvky, takže ta upravená bude diagonálně dominantní dokonce ostře.
Offline

Ale možná to není optimální způsob jak to ukázat, protože se tím prakticky řeší soustava, ale vzhledem k termínu (ostré) diagonální dominantnosti hádám, že je cílem použít jinou metodu než Gaussovu eliminaci.
Offline

Využil bych nějak toho, že můžu prohazovat řádky. A také toho, že můžu prohazovat sloupce, to pak bude znamenat akorát zpřeházené pořadí proměnných, což ale nevadí. Prohazoval bych to tak, abych dostával na diagonálu prvek v absolutní hodnotě největší, ovšem teď největší z kterých prvků? Z dolního trojúhelníka, to se používá pro Gaussovu eliminaci, tak bych se to snažil nějak předělat pro Gausse-Seidela.
Offline
↑ Sergejevicz:
Výměnu sloupcu jsem nezkoušel, nevěděl jsem jestli to můžu. Zkoušel jsem záměny řádků a krácení a připočítávání řádků k jiným řádkům ale i tak jsem nedostal to co jsem chtěl. Právě to mi dělá problém, upravit matici tak aby byla diagonálně dominantní. Ostatní kroky už vím.
Offline
ahoj ↑ brehy:,
sloupce samozřejmě přehazovat můžeš, ale je-li cílem použití G-S metody, je asi jednodušší násobit soustavu maticí transponovanou k matici soustavy.
Offline

↑ brehy:
Jak jsem říkal, prohodit sloupce můžeš, ale tím se ti také zpřeházejí neznámé, což ale nevadí, je to, jako kdyby se přejmenovaly. Když je vypočítáš zpřeházíš si je zpátky :-). Vím, že se takhle numericky stabilizuje Gaussova eliminace. Jeden způsob je zpřehazování řádků tak, aby na diagonále byl největší prvek ze zbytku sloupce pod diagonálou. Vylepšení je hledat největší prvek v celém dolním trojúhelníku omezeném diagonálou, spodním okrajem matice a daným sloupcem. Je-li největší prvek v jiném než daném sloupci, tyto sloupce se prohodí, prohodí se i neznámé, pak teprve se prvek dává na diagonálu prohazováním řádků.
↑ Eratosthenes:
Tou transponovanou je pak potřeba násobit i pravou stranu. To je zajímavý nápad. Výsledná matice levé strany je totiž symetrická.
Offline
↑ Sergejevicz:
Pod "násobením soustavy" samozřejmě myslím násobení její levé i pravé strany. A matice soustavy pak není jen symetrická, ale je hlavně pozitivně definitní. Právě proto pak metoda konverguje.
Offline
↑ Eratosthenes:
V těchto věcech jsem začátečník proto vás docela nechápu. Mám vynásobit matici soustavy maticí transponovanou, to jsem pochopil. Ale co mám udělat s tou pravou stranou?
Offline

↑ brehy:
Udělat s ní to samé - taky ji vynásobit transponovanou maticí soustavy. Je to vlastně tak, že máš maticovou rovnici a uplatníš na obě strany stejnou operaci - násobení transponovanou maticí soustavy, na každé straně násobíš tou maticí zleva, to je taky podstatné. Je to, jako když se dělá přičtení nebo odečtení stejného výrazu na obou stranách rovnice, násobení nebo dělení stejným výrazem na obou stranách apod. Tak tady to uděláme s násobením transponovanou maticí zleva na obou stranách.
Tento trik znám z metody nejmenších čtverců, té vynásobené soustavě se říká soustava normálních rovnic. Neuvědomil jsem si ale, že to jde použít i jinde. :-)
Offline

↑ brehy:
↑ Eratosthenes:
Omlouvám se o mé poznámce o nutnosti násobit i pravou stranu. Já jsem si to původně špatně přečetl - soustavu versus stranu. :-)
Offline

↑ brehy:
Matice nové soustavy by měla být symetrická, nemáš tam tedy někde chybu?
Offline
↑ brehy:
vynásobeno je to (možná) dobře (nekontroloval jsem), ale určitě ve špatném pořadí. Abys nezměnil řešení soustavy, musíš levou a pravou stranu násobit s t e j n ě. Levou stranu jsi násobil regulární maticí zprava (OK). Můžeš ale totéž udělat s pravou stranou :-( ?
Offline
↑ brehy:
A co jsi konkrétně počítal?
Řešíš soustavu A*x=b. A*A^T jsi spočítal sice správně, ale k řešení to nevede, protože na pravé straně b*A^T nespočítáš. Na pravé straně musíš násobit zleva, tj. A^T*b, takže i levou stranu musíš násobit zleva, tj. A^T*A.
Offline
↑ brehy:
Jo, to už je OK. Takže Gauss-Seidl bude konvergovat. Možná pomalu, ale jistě :-)
Offline