Kezdőoldal » Számítástechnika » Programozás » Determináns számítási ideje?...

Determináns számítási ideje? Részletek lent .

Figyelt kérdés
Eléggé kezdő vagyok még a témában, de nagyon érdekel a számítás optimalizálás témaköre. Elsősorban az érdekelne, hogy hol találok mérési eredményeket számítási időkre vonatkozóan? Pl., hogy mi számít optimálisnak vagy elfogadhatónak. Tegnap pl. determináns számító függvényeket írtam, és most egy 1000*1000-es mátrix determinánsát másfél másodperc alatt tudom kiszámíttatni a géppel, de fogalmam sincs, hogy ez mennyire számít lassúnak a népszerűbb algoritmusokhoz képest. Szóval van erről valamilyen gyűjtemény, hogy minek a számítása mennyi időt igényelhet? Csináltam egyenletrendszer számítót is, meg később akarok mátrixműveletekkel is foglalkozni.

2013. márc. 14. 09:45
 1/5 anonim ***** válasza:

Megpróbálok segíteni:

Először is jó lenne ismerni a programnyelvet.

Mert egyes nyelvek gyorsabbak a másiknál.

A leggyorsabb sztem a c, vagy a c++

Egyszer az volt a feladat, hogy hasonlítsuk összes a c++ és a java mondjuk. És 17 mérés után sem akartuk elhinni hogy gyorsabb a c-nél. Végül csak arra tudtuk fogni a gyorsaságot, hogy java úgy optimalizálta a kódot, hogy használta mindkét processzormagot vagy valami hasonló. Nekünk mondjuk a Runtge-kotta módszernél kellett ezt kipróbálni, nem determináns számításakor.



De nézzük a te feladatodat:

Egy 1000*1000-es mátrixnak határoztad meg a determinánsát:

Gauss elminációval határoztad meg( legalább is remélem, mert Sarrus szabály és kifejtési tételnél túl nagy lenne a pontatlanság). Ebben az esetben nézzük hány műveletet kell elvégezni

Durva becsléssel olyan 5000 millió műveletet. (igazából megtehetnéd, hogy minden műveletnél egy float tipusú változóhoz adjon hozzá egyet. mert jó alap lehet optimalizálásnál.

Hogyan tudod optimalizálni gondolom sebességre akarsz.

-használja ki a processzor mindegyik magját. Azaz a program legyen többszálú

-a memóriában pointerekkel dolgoz

-a programkódban ha olyan programnyelvről van szó, akkor szabadítsd fel a változókat stb.

2013. márc. 14. 11:19
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
Öröm a hülyeségnek ebben a tengerében komoly kérdéseket és komoly válaszokat olvasni. :-)
2013. márc. 15. 06:42
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

Ha tényleg 1,5 másodperc alatt ki tudod számítani egy 1000x1000-es mátrix determinánsát, akkor az nagyon jó idő. Én most Maple-lel próbáltam egy 500x500-asat, és 17 másodperc volt. Igaz nincs egy erőművem (2.5GHZ Core i5), de a Maple valószínűleg elég hatékony algoritmust használ.

Persze függ a futásidő a mátrixtól is. Én egy random matrix-szal próbáltam, melyek -100-tol 100-ig tartalmaztak egész értékeket. Szerintem valami hiba lehet az algoritmusodban. Az én random mártixom dererminánsa 1500 jegyű. Miben tárolod az értéket?


1000x1000-es 0 és 1 értékeket tartalmazó mátrix determinánsát 1 perc 34 mp alatt számolta ki a Maple. Az eredmény 1000 jegyű.

2013. márc. 15. 17:22
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

Na bocs, hogy csak most reagálok, de kicsit sűrűek voltak a az elmúlt heteim. Amúgy köszi a válaszokat!


Ha tényleg túlzóan kevésnek tűnik az a másfél másodperc, akkor ma előszedem a kódomat és leellenőrzöm mit ronthattam el. Amúgy c++ -ban próbálgattam. Egyetlen tömböt deklarálok és abban ábrázolom a mátrixomat, aldeterminánsokra bontom és az eredményeket mindig vissza írom az eredeti tömbbe.

2013. ápr. 11. 08:39
 5/5 anonim ***** válasza:

Ha ilyen módszerrel számolod a determinánst, akkor még sokkal gyanúsabb, hogy rossz a kódod, mivel az 1000-es mátrixhoz 1000db 999-es mátrix determinánsát kell kiszámolni. Ahhoz 999db 998-ast, stb...ez a végén 1000! determináns számítás (ill 1000!/2, de ilyen szinten ez lényegtelen)

1000! egy nagyon nagy szám. Ha csak egy órajel lenne minden művelet az is nagyon sokáig tartana.

[link]


Tehát valami nagyon rossz a kódodban. Ha gyorsan szeretnél determinánst számolni akkor pedig gauss eliminációval csináld.

2013. ápr. 13. 16:47
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!