Matematické Fórum

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

#1 04. 01. 2017 17:05

slav3k
Příspěvky: 54
Reputace:   
 

Konzultac algoritmizace výpočtu lineárních soustav řádu 5 a vyšších

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

 

#2 04. 01. 2017 22:15

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: Konzultac algoritmizace výpočtu lineárních soustav řádu 5 a vyšších

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ší.


Budoucnost patří aluminiu.

Offline

 

#3 05. 01. 2017 09:16

slav3k
Příspěvky: 54
Reputace:   
 

Re: Konzultac algoritmizace výpočtu lineárních soustav řádu 5 a vyšších

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

 

#4 05. 01. 2017 11:02

slav3k
Příspěvky: 54
Reputace:   
 

Re: Konzultac algoritmizace výpočtu lineárních soustav řádu 5 a vyšších

↑ 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

 

#5 05. 01. 2017 13:02

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: Konzultac algoritmizace výpočtu lineárních soustav řádu 5 a vyšších

↑ 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...


Budoucnost patří aluminiu.

Offline

 

#6 05. 01. 2017 13:37 — Editoval slav3k (05. 01. 2017 13:51)

slav3k
Příspěvky: 54
Reputace:   
 

Re: Konzultac algoritmizace výpočtu lineárních soustav řádu 5 a vyšších

↑ 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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson