Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Zdravím,
při implementaci mého projektu jsem se dostal do bodu, kde data uskupená do lineární soustavy zatím potřebuju řádu 5.
Implementace bude v nejzákladnějším jazyce C bez nějakých matematických knihoven. čísla jsou floaty, ale to nevadí, moje mcu má floating point coprocessor.
Myslím, že pro mě nejjednodužší na algoritmizace bude řešit tu soustavu maticově, tedy:
X = inv(A) * C
Teď tedy potřebuji vyřešit tu inverzi A co nejelegantněji. Nemůžu se rozhodnout jaká metoda je nejvhodnější pro algoritmizaci. Jestli výpočet pomocí determinantu, nebo taková ta eliminační metoda s upravou jednotkové matice.
Co by jste mi poradili?
Díky
Slavek
Offline
ahoj ↑ slav3k:
a proč ne Gaussova eliminační metoda? Je na pár řádků pro soustavu prakticky libovolně velkou. Výpočet inverzní matice je určitě složitější.
Offline
však gaussova eliminační to je jak se napíše A|E a aplikují se upravy na obě dokud v levo nevznikne jednotková že?
No tu si právě nejsem jistý. Počítal jsem to, že to je pro matici 5x5 něco mezi 125 - 250 operacemi možná i více. Každé násobení a dělení floating čísla je pro mě několik strojových cyklů. 1.2589 / 2.5896. Nepočítám s celými čísly no :).
Offline
↑ Eratosthenes:
Naimplementoval jsem prostě tu eliminačku a převést na schodovitý tvar mě zatím stálo 110 operací (10 delení, 50 nasobeni, 50 scitani) pro 5x5 matici. To nebude zase tak zlé. Moc díky že jsi mě navedl na dobrý směr :)
Offline
↑ slav3k:
Ale při řešení soustavy pomocí GEM inverzní matici vůbec nepotřebuješ. Převeď A|b na schodovitý tvar a nasaď zpětný chod. Než spočítáš inverzní matici, tak soustavu máš dávno vyřešenou...
Offline
↑ Eratosthenes:
Však dyť jo ... nepočítám tu inverzi. Dělám schodovitý tvar a pak rovnou dopočítávám koeficienty.
Akorát ted jsem anrazil na problém. Když v matalbu vypočítám nejprve maticově a = inv(T) * R a poté gaussova eliminace (uprava matice T na schody společně s upravováním vektoru R a následné zjištění a pomocí zpětného dosazovaní, tak mi čísla vyjdou stejná těch a ale znaménka jsou přesně opačná a nemůžu přijít na to proč tomu tak je ...
EDIT: Už vím ... ten vektor R má být ve skutečnosti -R přehlédnul jsem to :)
Btw implementuju tady tohle:
https://www.youtube.com/watch?v=PFyp4t1 … p;index=10
Offline
Stránky: 1