A fizika numerikus módszerei II. - előadás

Neptun kód: (mf1n1m04), mf1c1m04

Követelmény: aláírás (feltételeit ld. lejjebb)

Kredit: 0

Időpont: hétőf 12-14

Helyszín: É 0.81 Ortvay terem

Prezentációk: 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17

Facebook: https://www.facebook.com/fiznum2

<<< Zh-eredmények >>>

A fizika numerikus módszerei II. - gyakorlat

Neptun kód: mf1c2m04

Követelmény: gyakorlati jegy

Kredit: 3

Időpontok: H 14-15, H 15-16, Sze 14-15, Sze 15-16

Helyszín: É 5.56

A jegyszerzés feltételei

1. A gyakorlatok látogatása kötelező. A Tanulmányi- és Vizsgaszabályzat értelmében a félév során legfeljebb három igazolatlan hiányzás esetén szerezhető jegy.

2. Az elégséges jegyhez kötelező az alább található házi feladatok közül az alapfeladatok kidolgozása, határidőre történő beküldése, majd az óra keretében történő bemutatása.

Figyelem! Csak olyan házi feladatot tudok kiértékelni, melyet a GCC fordítóval le lehet fordítani. Szintaktikailag hibás program automatikusan 0 pontot ér.

3. A legutolsó feladat beküldési határideje a szorgalmi időszak utolsó hetére esik - így az utolsó héten még lesz mód arra, hogy mindenki személyesen beszámolhasson a feladatokról.

Figyelem! A TVSZ értelmében a gyakorlati jegyeket a vizsgaidőszak első hetének végéig be kell írni a Neptunba, így a házi feladatok későbbi beadására nincs lehetőség!

4. Szintén a jegyszerzés feltétele egy elméleti teszt elégséges megírása, melyre a félév végén, az előadás időpontjában kerítünk sort.

5. A házi feladatok és az elméleti teszt eredményei, valamint az órai munka alapján megajánlott jegyet lehet szerezni. Aki nem kap megajánlott jegyet, nem elégedett vele, vagy az elméleti teszten nem teljesíti a minimális szintet, annak a vizsgaidőszak első hetében biztosítok szóbeli javítási lehetőséget (gyak UV).

Programozási segédlet

C programozási segédlet

További hasznos linkek a lap alján.

Házi feladatok

AA házi feladatokra adott megoldásokat szabványos C nyelven kell elkészíteni. A házikat a domino.vo.elte.hu weboldalon keresztül kell beküldeni. A program új, ezért előfordulhatnak hibák. Ha kitöltitek a hibaüzenet alatt megjelenő űrlapot, akkor megkapom a részletes hibaleírást, és hamar tudom javítani a problémákat.

1. feladat: Egyszerű mátrixműveletek

Minimum feladat: Írjunk olyan programot, amely parancssorban megadott MxN méretű mátrixot (pl. matrix.dat) és egy N elemű oszlopvektort (pl. vector.dat) fájlból beolvas, összeszorozza őket, és az eredményvektort kiírja a standard outputra! A parancssor M=5, N=3 esetén így nézhet ki:

matmul 5 3 matrix.dat vector.dat

Teljes feladat: Írjuk meg a mátrixot fájlból betöltő függvényt úgy, hogy az ne várja előre a mátrix méretét, hanem találja ki a fájlban levő oszlopok és sorok számából. A fájl formátumára nincsen sok megkötés, a lényeg, hogy ránézésre mátrixot tartalmazó szöveges állomány legyen. Készítsünk a programhoz különböző próbafájlokat, amikkel a helyes működése tesztelhető. Figyelem: a fájlt csak egyszer és csak szekvenciálisan szabad végigolvasni, valamint a fájl tetszőlegesen nagy lehet!

Beküldési határidő: február 28. éjfél

2. feladat: Gauss-elimináció

Minimum feladat: Írjunk olyan programot, amelyik beolvas egy NxN méretű valós mátrixot (szöveges, szóközzel, illetve soremeléssel elválasztott fájlokból), eredményként pedig kiírja a mátrix inverzét! Algoritmusként használjuk a Gauss-eliminációt sor- és oszlopcserékkel! A program detektálja, ha az invertálandó mátrix szinguláris! Tervezzük meg modulárisan a programot, úgy, hogy egy lineárisegyenlet-megoldó algoritmus függvényként legyen hívható!

Teljes feladat: A Gauss-elimináció implementálása után használjuk mátrix inverzének meghatározására a LAPACK csomag szingulárisérték-dekompozíció függvényét. Hasonlítsuk össze az SVD algoritmus eredményét a Gauss-eliminációéval néhány mátrix esetében! Teszteljük a két algoritmus sebességét különböző méretű mátrixokra! Próbáljuk ki az SVD-t szinguláris és közel szinguláris mátrixokra.

Beküldési határidő: március 27. éjfél

3. feladat: Polinomillesztés

Minimum feladat: Írjunk olyan programot, amely az előző feladatban kidolgozott lineáris egyenletrendszermegoldó-kódot felhasználva általános N változós polinomillesztést hajt végre általános lineáris legkisebb négyzetek módszerével! A program parancssori paraméterként várja a független változók számát, az illesztendő polinom rendjét, valamint a bemenő adatokat tartalmazó fájl nevét. A program írja ki a képernyőre az illesztési paramétereket, valamint egy fájlba az eredeti mérési értékeket és az illesztett polinom által adott becsléseket az bemeneti fájl minden adatpontjára. Készítsünk ábrát, melyről leolvasható a polinomillesztés jósága! Készítsünk saját adatfájlokat az algoritmus tesztelésére, majd futassuk a programot az alább letölthető adatfájlokra (5 változó). Az alapfeladathoz nem szükséges a többáltozós polinomok vegyes tagjait (pl. xy, xy2 stb.) figyelembe venni.

A bemenő adatokat tartalmazó fájl formátuma: Szöveges fájl, mely soronként N + 2 számot tartalmaz, ahol N a független változók száma. Az első N szám ennek megfelelően a független változók értéke, az (N+1). a függő változó mért értéke, az (N+2). szám pedig a mérés abszolút hibája.

A kimenő fájl formátuma: Szöveges fájl, mely soronként két számot tartalmaz: a mérési értéket (az eredeti fájl (N+1). oszlopából), illetve a becsült értéket (az eredeti fájl első N oszlopát a polinomba helyettesítve). A kimeneti fájl annyi sorból álljon, mint a bemeneti fájl.

Minta bemeneti fájl (5 független változó + függő változó + mérési hiba):
small.dat (2.5MB, 42189 sor)
big.dat (40MB, 666694 sor).

A módszer elvi leírása.

A módszer leírása példával.

Nem kötelező feladat (jegybe nem számít bele): Valósítsunk meg nem lineáris függvényillesztést MCMC módszerrel, Metropolis-Hastings-algoritmussal. A program teszteléséhez készítsünk saját adatfájlokat. Próbálkozzunk Gauss-illesztéssel!

Beküldési határidő: április 17. éjfél 

4. feladat: Differenciálegyenlet megoldása

Minimum feladat: Írjunk olyan programot, amelyik az explicit Euler-módszer segítségével megoldja a Föld-Hold-rendszer mozgásegyenletét. Ábrázoljuk a kapott eredményeket. Nézzük meg, hogy tapasztalható-e eltérés az analitikus megoldástól sok periódus után! A feladat megoldása során dolgozzunk síkban, geocentrikus koordinátákban (a Föld a 0,0 pontban van rögzítve). Ábrázoljuk a Hold pályáját, valamint a rendszer teljes energiáját az idő függvényében.

Föld tömege: 5.9736 × 10sup>24 kg
Hold tömege: 7.349 × 1022 kg
Apogeum távolsága: 405.500 km
Sebesség apogeumban: 964 m/s
Perigeum távolsága: 363.300 km
Sebesség perigeumban: 1076 m/s
Gravitációs állandó: 6.67384 × 10-11 m3 kg-1 s--2

Teljes feladat: Integráljuk a mozgásegyenletet egyszerű, valamint adaptív lépéshossz-szabályozott negyedrendű Runge-Kutta-módszerrel! A program legyen teljesen általános, ne legyen megkötés az integrálandó változók számára. Használjunk függvénypointereket! Próbáljuk ki a programot a Lorenz-féle egyenletrendszer, vagy a kettős inga egyenleteinek megoldására! Ábrázoljuk az eredményeket!

Beküldési határidő: május 6. éjfél

Hasznos weboldalak