5. feladatsor (beadási határidő: 2004. okt. 24.)

1. Írjunk Fourier-transzformáló daemont (a daemon olyan program, ami a ”háttérbe teszi magát”). A program periodikusan ellenőrizze az aktuális directory tartalmát, ha talál .in-re végződő nevű file-t, akkor tegye bele a megfelelő .out-ra végződő nevű file-ba annak Fourier transzformáltját (amennyiben az még nem létezik). Használjuk az egyik meglévő Fourier transzformációs programunkat. Segítség: nézzük meg az lstat illetve az opendir és readdir, vagy a scandir függvények manual page-ét.

2. A gyakorlaton bemutatott fork-pipe.c programot írjuk át, hogy pipe-ok helyett:

a. egy fifo-n keresztül kommunikáljon a fork()-al szétvált két process. Segítség: man fifo.

b. file-ba írással és beolvasással kommunikáljanak. (Itt használjunk signal-okat, vagy wait()-et.)

3. Párhuzamosítsuk a III.3-as feladatbeli Monte-Carlo-féle integrál számítást POSIX thread-ek segítségével. A szálak száma, n, tetszőlegesen megválasztható legyen. A gyakorlaton elhangzottakon kívül hasznos lehet a következő dokumentáció (könyvfejezetek) a thread-ek alkalmazásához a C++ nyelvben:

http://www.awprofessional.com/articles/article.asp?p=169479

4. Virtuális függvények alkalmazásával írjunk olyan programot, amely kirajzol egy adott függvényt, a numerikusan kiszámolt deriváltját és integrálját (x=0-ban utóbbi legyen 0). A program úgy legyen bővíthető újabb - külön fájlban lévő C++ programmal adott - függvényekkel, hogy a meglévő programot ne kelljen forráskód szinten módosítani!

5. Definiáljuk a csoportok osztályát absztrakt osztályként és származtassuk le belőle a három, négy és hatfogású forgási szimmetriának megfelelő forgáscsoportokat! (A csoportműveletet jelöljük *-gal, értelmezzük az inverz fogalmát, definiáljuk az egységelemet!)

6. Definiáljuk egy absztrakt osztály függvényeként a differenciálegyenlet-rendszerek megoldását! Származtassunk le ebből további osztályokat, melyekben a differenciálegyenlet-rendszerek megoldása explicit Euler-módszerrel, középpontos (javított) Euler módszerrel ill. negyedrendű Runge-Kutta módszerrel történik! A megoldandó problémák osztályát szintén absztrakt osztályként definiáljuk és ebből származtassuk le a konkrét problémákat! Két konkrét megoldandó egyenletrendszer:

ẋ = −10 x + 10 y
ẏ = −y + 28 x − x z
ż = −8/3 z + x y

(Lorenz-modell)

ẋ = − y − z
ẏ = x + 0.2 y
ż = 0.2 + x z − 5.7 z

(Rössler-modell).