!!! RÉGI OLDAL !!!

 

 

 

 

 

 

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

Neptun kód: mf1n1m04

Időpont: kedd 10-12

Helyszín: É -1.64

>>> új: pontszámok + jegyek

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

Figyelem: a 06-os és 08-as diákon pár hibát javítottam, és frissítettem a PDF-eket

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

A fizika numerikus módszerei II. - gyakorlat

Neptun kód: mf1c2m04

Időpontok: Cs 8-9, Cs 9-10, Cs 14-15

Helyszín: É 5.56

Jegyszerzés

A gyakorlati jegy megszerzésének feltétele az alább található házi feladatok kidolgozása, határidőre történő beküldése, valamint az óra keretében történő bemutatása. 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.

Házi feladatok

A házi feladatokra adott megoldásokat C vagy C++ nyelven kell elkészíteni. A feladatokat határidőre, a fiznum2 kukac gmail.com címre küldjétek a fordításhoz és a futtatáshoz szükséges parancssorral együtt. Csak forráskódot küldjetek, lefordított binárist, bemeneti adatfájlt ne. Figyelem, a gmail még tömörített formában sem fogad el .exe fájlt, így lefordított programot soha ne küldjetek, mert előfordulhat, hogy nem érkezik meg az e-mail!

1. feladat: Egyszerű mátrixműveletek

Minimum feladat: Írjunk olyan programot, amely parancssorban megadott MxN méretű mátrixot (pl. table.dat) egy adott fájlból és N elemű oszlopvektort (pl. vector1.dat) a standard inputró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 < vector1.dat > kiVec.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. Figyelem: a fájlt csak egyszer és csak szekvenciálisan lehet végigolvasni, valamint a fájl tetszőlegesen nagy lehet!

Beküldési határidő: március 11. é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írjaa mátrix inverzét! Algoritmusként használjuk a Gauss-eliminációt sor- és oszlopcserékkel! 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ép algoritmus sebességét!

A Gauss-elimináció leírása.

Beküldési határidő: április 8. é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 legyen képes N változó esetén legalább másodrendű polinom illesztésére! Bemenetként az illesztendő polinom rendje és a mérési adatok száma mellett az adatokat egy olyan szöveges fájlból olvassa be, amelyben az első N oszlop a független változókat tartalmazza, az (N+1)-ik a függő változót, az (N+2)-ik pedig ennek hibáját. A program két kimeneti fájlt hozzon létre, az egyikbe írja ki a polinom együtthatóit, a másikba pedig soronként az eredetileg illesztendő, és a becsült függő változókat.

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.

Beküldési határidő: április 22. é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. Nézzük meg, hogy tapasztalható-e eltérés az analitikus megoldástól sok periódus után!

Föld tömege: 5.9736 × 1024 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!

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

Programozási segédlet

Az elméleti anyaghoz tartozó segédletek Csabai István honalpjáról tölthetők le.

C programozási segédlet

Hasznos weboldalak