Keresés
Hírlevél
 
Kiemelt témák
»Hogy viszonyul ehhez a család?
»Legjobb metodika emberi relációk tárolására
»A programozó hibája, hogy törik a programját?
»Jogosultság kezelés mezőszinten
Állás/munka
»Wordpress szakértőt keresünk
»Kamu álláshirdetők listája
»Front-end fejlesztő / Sitebuilder
»DataStore Developer
»PHP programozó, webfejlesztő munkát keres
» több téma
Tudástár
?HTML-ben a Flash átméretezés torzul
Eredeti mezőnevek lekérdezése
?Input mezőből visszakapott adat probléma
Oldalon keresés 8x írja ki az eredményt
?XML-ből sok szövegmező
TinyMCE és az ékezetek
?Rengeteg hasonló kép betöltése gyorsan (PHP)
Ékezetes kar. nem minden táblában jól
?Shelltreeview gond
Grafikon rajzolás probléma
?Onclick= php függvény
?Egyenes megrajzolása
?Access-ből adott xml fájl kinyerése
Listázás időpont szerint
Exportálás változó könyvtárba
» több téma
Társalgó
»A programozásból jól meg lehet élni?
»MFC tanulás
»Könyvet adok-veszek
»Hogy viszonyul ehhez a család?
»Nintendo wii
»Letölthető az új Rad Studio XE és Delphi XE
»Weblap véleményezés
»Játékmotor elmélet
»Informatikai bulvárlap
»Delphi-ről C++-ra váltás
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Társalgó

»

Programozás-elmélet

»

Determináns gyorsan, pontosan

»

Determináns gyorsan, pontosan

nyitotta: c - -, idő: 2010.07.29., moderátor: netangel
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió
Sorrend:
Időzóna:
Blokkméret:
A mátrix determinánsát a mátrixot pl. felső 3 szögmátrix-xá alakítva a főátlóbeli elemek szorzataként viszonylag gyorsan ki lehet számolni. Ezt a módszert építettem bele készülő programomba, de nem vagyok megelégedve a pontosságával.
A determináns kifejtése pontos, de lassú. A programban ez is benne van, de 10x10 mátrixnál javallott hanyagolni a használatát.

Tegnap olvastam a Gauss eliminációval megoldott lineáris egyenletrendszer gyökeinek iteratív pontosításáról. A módszer tul..
Határozottan pontosabb lesz, a műveletigény nem nő minőségileg O(a*n^3)-ről O(b*n^3)-re, vagyis csak konstans-szorosan. előzmény
Néhány javalsat:

1. A Numerical Recipes-ben érdemes elolvasni az idevágó fejezeteket. (A kicsit régebbi változata a könyvnek elérhető ingyenesen online, kiindulásnak teljesen jó).

2. a wiki LU dekompoziciót javasol det számításra, sztem megér egy próbát.

3. Nem vagyok teljesen biztos benne, hogy egy iteratív algoritmus itt működni fog. Az érvelésem a következő:

Tekintsünk az egyszerűség kedvéért valami ilyesmit:

Ax = b (ezt oldja meg a Gauss)

ahol x-et keressük, b-és A adott. "A" a "gép", ami x-el csinál valamit, hogy b-t kapjuk (pl. egy mátrix és lin. trafót csinál). Az ilyen iterativ javitó algoritmusok valahogy úgy működnek, hogy van valami kiindulási megoldás x-re, nevezzük x0-nek, amire hattatjuk A-t, és kapunk valami b0-t. Ekkor van egy jóldefiniált hibánk: err = |b-b0|, amit használhatunk arra, hogy egy jobb becslést kaphassunk a valódi x megoldásra. Ezek után ezt ismételjük addig, amíg err egy bizonyos küszöb alá csökken. A determináns számításnál nem látok ellenőrzési lehetőséget. Adott az "A" mátrix, és azt redukáljuk 1 számmá, nem tudok abszolut hibát definiálni... Szóval szerintem nem a Gauss-os dolog kell neked. Ha tévedek, valaki okosabb majd kijavít.

Még egy megjegyzés: minden számítás nagyon függ attól, hogy mekkora számok vannak a mátrixban, mekkora számok lépnek fel a köztes műveletek elvégzésekor. Ilyenkor jönnek olyan dolgok h Cahan összegzés, az összeadandók (szorzandók) nagyság szerinti rendezése és a műveletek ebben a sorrendben való elvégzése stb. De ezektől iszonyat lassú és bonyolult lesz az alg, cserébe talán picit pontosabb.

Az ultimate tüneti kezelés pedig az, ha vesz az ember egy "tetszőlegesen hosszú" számokat kezelő rutin csomagot és azt használja:) Na ez nyilván vicc, illetve csak nagyon indokolt esetben ajánlott... előzmény
mennyivel lesz így pontosabb? a műveletigény, hogyan változik?
(tudom, próbáljam ki...(ki is fogom))

jelenleg: csak sorcsere van.
(de már kész az oszlopcserét végző metódus is
főátlóban haladva, minden iterációban lépcsős mátrix-xá alakítás történik (ez hanyagolható lesz)

tehát kiválasztani a legnagyobb abszolútértékű elemet, és pozícióba hozni.

köszönöm.

ártalmatlan gyakorlásnak indult, de már látom, komoly, sőt kezd computeralgebrás lenni... előzmény
nem ismerem amiket felsoroltál.
lehetne picit bővebben?

egyébként programot szeretnék írni (c++ ban) ehhez gyűjtöm az információt előzmény
A pontosságot a főelemkiválasztás nevű módszerrel lehet javítani. Ha mondjuk ott tartunk, hogy az első oszlop elemeit akarjuk nullázni a sor legalsó elemének felhasználásával, ezzel a képlettel:
sor[i][j] = sor[i][j] - sor[n][j]*sor[i][1]/sor[n][1]
akkor még ezelőtt megkeressük az 1. oszlop maximális abszolútértékű elemét, és egy sorcserével elérjük, hogy az legyen az a[n][1]. Haladó esetben a maximumkeresést az egész mátrixra (mármint a pillanatnyilag átalakítatlan része) kiteresztjük, ekkor persze sor és oszlopcsere is kellene fog.

A főelemkiválasztásos Gauss-módszer előzmény
szia

math library-k teljesítményével nem vagy megelégedve?
pl intel math lib, esetleg GPU alapú számítás (pl OpenCL, CUDA) nem jöhet szóba?
A mátrix determinánsát a mátrixot pl. felső 3 szögmátrix-xá alakítva a főátlóbeli elemek szorzataként viszonylag gyorsan ki lehet számolni. Ezt a módszert építettem bele készülő programomba, de nem vagyok megelégedve a pontosságával.
A determináns kifejtése pontos, de lassú. A programban ez is benne van, de 10x10 mátrixnál javallott hanyagolni a használatát.

Tegnap olvastam a Gauss eliminációval megoldott lineáris egyenletrendszer gyökeinek iteratív pontosításáról. A módszer tul.képpen a mátrix szorzás/összeadás disztributív tulajdonnságára épít.

Azon gondolkodom van-e hasonló megoldás az eliminációval számolt determináns értékének pontosításához is. (Ami gyorsabb legyen a kifejtésénél

Bármilyen tanácsot szívesen veszek.
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
-Állás/munka
Top pontgyűjtők
»Micu1.030
»Interlock280
»mezofi150
»Pitta_100
»Frostech0100
»szbzs.2100
»Hack100
»Riha60
»Akhiles50
»mrchandra50
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Balucinho
»Kelemzol
» ugrás a wikire
A nap kifejezései
»Algoritmus
»Hogyan kezdjem el
»Perl
» ugrás a wikire
Hírek
»Megérkezett a PostgreSQL 9.0 kiadásra jelölt változata
»Letölthető az új Rad Studio XE és Delphi XE
»Function-X digitális művészeti találkozó és demoscene party
»Webfejlesztőknek szóló közösségi oldalt indított a Microsoft
»Letölthető a hardvergyorsított Chrome 7 első fejlesztői kiadása
» több hír
PC Fórum hírek
»Itt az első kép az AMD nyolcmagos processzoráról
»"Szuperdizájnos" érintő-egeret mutatott be a Microsoft
»Szabadalmaztatta a számítógép kikapcsolását a Microsoft
»Vírusriadót váltott ki a webezőknél a Google
»Ingyen iWiW-ezhetnek mobiljaikról a T-Mobile-osok
»Automatikusan kiválogatja legfontosabb leveleink a Google
»OOo4Kids - ingyenes Office csomag gyerekeknek
»Új, gyorsabb Core i3 és Pentium processzorokat jelentett be az Intel
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen