Fórumok
Sziazstok!
Egy nagyon egyszerű másodfokú differneciálegyenletet kell megoldanom, mégpedig az dx/dt^2=F/m, azaz newton2-t ami nagyon egyszerű lenne, ha létezne képletem az F-re (ezt már sokat csináltam). De nincs. Egy rakat mért adatom van, diszkrét értékekre, amik azért "kellemesen" sűrű. Na ha felírom erre a Runge-kutta4-et, akkor egyszerűen elszáll az egész mint az euler formula, révén a diszkrét értékekben konstans a függvény, hiába a 4-rendű RK, a diszkrét lépések miatt lényegében elueler formulát oldok meg, az meg instabil. Ha pedig akkora lépésközt válaszok, amivel nem maradok egy mért adat területén belül, akkor pedig azért száll el. MIt tudok ilyenkor kezdeni? Hátha van valakinek ötlete.
Előre is köszönöüm.
Hozzászólások
Tehát egy csomó x-re meg van adva F(x)?
Csinálj rá valami interpolációt, esetleg valami simítással egybekötve, ha lényeges a mért adatok hibája.
Nem egy nagy ördöngősség F(x)-re lineáris interpolációt alkalmazni, az még józan ésszel is megy. Mondjuk egy simító spline még jobb, de annak utána kell olvasni. A szakaszonként konstans F nem tűnik jó ötletnek.
De még ezután is furcsa, amit írsz, hogy "Ha pedig akkora lépésközt válaszok, amivel nem maradok egy mért adat területén belül, akkor pedig azért száll el." OK, nem szereti az ugrásokat, de azért nem kellene mindig elszállnia. Jó implementáltad a RK-t?
Először azonban mindenképp egy józan eszes lineáris interpolációval próbálkoznék.
Anélkül, hogy tudnám, mit beszélek, az az érzésem, a lineáris interpoláció után az első deriváltnak szakadása lesz, a második deriválttól meg az Isten óvjon! Az olyan Dirac-delta szagú.
És igen, tudom, a hülye okoskodik. Tényleg nem vagyok képben. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Runge-kuttahoz nem kell derivalni, a linearis interpolacio meg remelhetoleg jol kozeliti a nem letezo fuggvenyertekeket.
Éreztem, hogy marhaságot írok. Azért most gyorsan utánaolvastam. Nekem már jó rég volt, dehogy emlékeztem...
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Elszallason gondolom azt erti, hogy nem letezo fuggvenyertekeket kene hasznalnia, es nincsenek. Interpolacioval kozel trivialisan szintetizalni tud ilyet, es akkor menni fog.
Az, hogy milyen interpolaciot (konstans, linearis, polinomialis, spline esetleg logaritmikus) erdemes hasznalni, az fugg a fuggvenyertekek "surusegetol", meg a fuggveny milyensegetol. Lehet, hogy a linearis is boven megfelel.
Próbáltam a líneáris illesztést, de az eredmény ugyanez. AZ igazság az, hogy ezt meg szerettem volna úszni, hogy magasabb fokú illesztést csináljak, mert így is nagyon számításigényes a dolog. DE természetesen ezt teszem, mert nincs más ötletem.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
Én spline-t illesztenék és azzal oldanám meg. Nekem működni szokott. Sok ilyent csináltam.
----
"Mert nincs különbség: mindenki vétkezett, és híjával van az Isten dicsőségének. Ezért Isten ingyen igazítja meg őket kegyelméből, miután megváltotta őket a Krisztus Jézus által." (Róma 3.22-24)
http://deblogian.blogspot.com
Ez így nem ismerős. Tudsz valami doksit linkelni róla?
UI: Találtam. Nem aktuális. Polinomillesztés :)
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
Ilyen típusú feladatokra a gsl könyvtárat használom. Elég jól dokumentált, sok mindent lefed.
Egyébként miért nem játszik a polinomillesztés?
----
"Mert nincs különbség: mindenki vétkezett, és híjával van az Isten dicsőségének. Ezért Isten ingyen igazítja meg őket kegyelméből, miután megváltotta őket a Krisztus Jézus által." (Róma 3.22-24)
http://deblogian.blogspot.com
Akkor muszáj megpróbálnod a magasabb fokszámot. Nem olyan nehéz egy köbös spline. Nem is kell kézzel programoznod, pl. GNU Scientific Library-ban (GSL) van.
De egy kérdés: nem lehet, hogy nagy a zajod és néhány mérési adatod kilóg az adatsorból? Ilyen kiugró érték is okozhat bajt. Ekkor simítani kellene az adatsort először.
A másik kérdés: miért nem használsz adaptív lépésköz-választást? Az sokszor hasznos ilyen esetekben. (Ez is van GSL-ben.)
A GSL-ben van mindenféle, necsak adaptív.
Egyébként +1 az adaptív módszereknek.
----
"Mert nincs különbség: mindenki vétkezett, és híjával van az Isten dicsőségének. Ezért Isten ingyen igazítja meg őket kegyelméből, miután megváltotta őket a Krisztus Jézus által." (Róma 3.22-24)
http://deblogian.blogspot.com
Simítás megvan. Több mérésem is van, átlagolva is van, de az F-et leíró elméletből kb ki tudom pecázni azt hogy milyen a törvény azt próbálom ráhúzni illesztéssel, de az a baj, hogy ez felület. Na mindegy felületet még sosem illesztettem, azt is el kell kezdeni egyszer :).
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
Az sem baj, ha a szignifikánsan eltérő mérési eredményeket kidobod átlagolás előtt.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Ezekre már én is gondoltam. Ezek megvoltak, a látványos hülyeségek kiszedve, átlagoltam..... Ezek a diszkrét értékek, amiket valahogy illesztenem kell erre a következtetésre jutottam. Majdnem tuti, hogy ez a hiba.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
Hát már nagyon sokszor átnéztem a kódot, de lehet benéztem valamit. Átfutom még egyszer. Az igazság az, hogy az "elszállás", kb 3-5 millió lépés után következik be, ill akkor kezd szignifikánsan eltérni a valós megoldástól. De egy RK4-tudtommal a "végtelenségig" stabil, ha jól van összerakva. Mivel arra gondoltam, hogy a kód nem rossz, de mégegyszer végiggondolom a dolgot.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
Nem lehet hogy valami index amit használsz fut ki az értelmezési tartományból?
az is lehet, hogy a differencialegyenlet maga instabil ;) lasd: hegye're allitott ceruza, ilyesmik. ennek a mozgasat is le tudod irni sima x''=F/m alakban, de ma'r maga az egyenlet sem stabil.
egyebkenet meg igen, spline interpolacio az sokat segithet. vagy spline illeszte's, valamifele elo"szu"re's (peldaul moving median window) utan.
Az F az ido"to"l fu"gg vagy x-to"l? vagy mindketto"to"l?
Első körben csak x, és y az erőfüggés. Mármint az eszköz amit leírok az egyenlőre így működik. Utánaolvasok ennek az spline-nek. ég nem csináltam ilyet, de egyszer csak kell ezek szerint.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
Ha nincsenek nagy bakkecskeugrások a függvényben, lineáris interpolációval és adaptív lépésköz-választással is megúszhatod.
A spline-t csak akkor válaszd, ha nincs fogalmad, milyen jellegű igaziból a függvény. Fentebb mintha utaltál volna rá, hogy van tipped, milyen jellegű az F(x,y) fgv., és ha ez igaz, tehát van egy formulád F(x,y)-ra, csak ismeretlen paraméterek vannak benne, akkor értelmesebb azokat a paramétereket meghatározni regresszióval és így az analitikus F(x,y)-nak számolni.
Ez fontos információ, ezek szerint az erőnek nincs explicit időfüggése.
Jól értem akkor, hogy neked igazából egy F_ij mátrixod van? Maga az erő mennyire sima függvény és egyáltalán milyen?
A rendszered dinamikailag is lehet instabil, nem csak numerikusan. Ha az erő nem visszatérítő (rugó jellegű), akkor elég valószínű, de rugónál is elképzelhető hogy beoszcillál, ezért lehet hogy valamilyen sebességgel arányos csillapító tagot érdemes lenne legalább betenni.
Másik dolog, ha diszkrét tartományon van csak megadva az erő, akkor mi történik ha kilép a rendszer ebből a tartományból? Mert ez lehet az elszállás egyik oka: konstans erő, konstans gyorsulás. Ezt mondjuk könnyen ki lehet találni abból, hogy a megoldás exponenciálisan távolodik vagy négyzetesen?
Remélem segítettem valamit.