Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 187. feladat (2008. május)

I. 187. Havazáskor a hópihék egymásra rakódnak. Bizonyos magasságot elérve a hótömeg megcsúszik, és veszélyes lavina alakulhat ki. A megcsúszás jelensége minden apró szemcsés, por állapotú szilárd anyagnál megfigyelhető. A jelenséget vizsgáljuk meg egy általunk készített szimulációs programmal.

A talaj az egyszerűség kedvéért legyen sík, N×M cellára (3\leN,M\le100) felosztva. A szimuláció minden lépésében essen 1 hópihe valamelyik véletlenszerűen kiválasztott cellára. A valóságban a hópihék időben párhuzamosan esnek, de sok szimulációs lépés végrehajtásával ezt jól közelíthetjük.

A hóréteg vastagsága fokozatosan növekszik, és ezt számoljuk minden cellában. Ameddig a HM (4\leHM\le12) kritikus magasságot nem éri el a hó, addig különösebb változás nem történik. Ha a cellában a hópihék száma eléri a kritikus értéket, akkor 4 szomszédjának átad egy-egy hópihét. (A cella értéke 4-gyel csökken és a négy oldalszomszédjáé 1-1-gyel nő.) Ennek hatására a szomszéd cellákban is megnő a hóréteg magassága és a kritikus magasság felett, az előbbiekhez hasonlóan azok is továbbadják a négy szomszédjuknak a hópihéket. Amennyiben a szomszéd cellában a magasság nem éri el a kritikus értéket, akkor az nem ad tovább és így a szomszédjait sem kell tovább vizsgálni. A vizsgált terület széléről ledőlő hó eltűnik. Ha az átadás több cellán keresztül végig vonul, akkor beszélhetünk megcsúszásról, és ha ez a terület nagy, akkor lavináról.

A program jelenítse meg minden hópihe leesése után a változást grafikusan. A jó megfigyelhetőség érdekében a cellákat 3×3-as, vagy 5×5-ös pixelekkel ábrázoljuk. Azokat a cellákat, amelyekben változás nem történt, színezzük egyforma színnel (háttérszín is lehet) és a megváltozott tartalmú cellákat egy másik színnel.

A szimuláció végrehajtása közben lépésenkénti és folyamatos üzemmódok közül lehessen választani. A program leállítását a felhasználó kezdeményezheti.

Beküldendő a program forráskódja (i187.pas, i187.cpp, ...), valamint a program rövid dokumentációja (i187.txt, i187.pdf, ...), amely tartalmazza a megoldás vázlatos leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.

(10 pont)

A beküldési határidő 2008. június 16-án LEJÁRT.


Megoldás

Havazáskor a hópihék talajra érkezésének helye és ideje véletlenszerűnek tekinthető. A természeti jelenség párhuzamos jellegét nagyszámú elemi lépés (egy hópihe leesése) gyors, egymás utáni végrehajtásával szimulálhatjuk. Modellünkben a talajt egy N×M-es mátrix reprezentálja. A mátrix elemeiben számláljuk az adott pontba érkezett hópelyheket, azaz a hó magasságot ábrázoljuk.

Szimulációs lépés

Vizsgáljunk meg egy elemi lépést! Egy hópehely leesését a mátrix egy véletlenszerű elemének eggyel növelése jelenti. Ha az így kialakuló hó magassága nem éri el a kritikus magasságot, akkor a szimulációs lépés be is fejeződött. Ellenkező esetben az omlás, a megcsúszás jelenségét kell meghatároznunk.

Omlás

Ha a cellában a hópihék száma eléri a kritikus értéket, akkor 4 szomszédjának átad egy-egy hópihét. (A cella értéke 4-gyel csökken és a négy oldalszomszédjáé 1-1-gyel nő.) Ennek hatására a szomszéd cellákban is megnő a hóréteg magassága és a kritikus magasság felett, az előbbiekhez hasonlóan azok is továbbadják a négy szomszédjuknak a hópihéket. A hatás terjedését rekurzív vizsgálattal, illetve mátrixelem érték változtatással tudjuk szimulálni.

Megjelenítés A jelenség tanulmányozásához egy-egy szimulációs lépés után az előző állapothoz képesti változásokat jelenítjük meg. A hópihe becsapódását és az esetleges omlást figyeljük meg. Tanulmányozhatjuk, hogy sok szimulációs lépésen keresztül különösebb változást nem tapasztalunk, a hóréteg vastagsága növekszik. Később 1-1 becsapódás óriási változást, átrendeződést eredményez. Szimulációnk tárgya a káosz-jelenségek közé tartozik. A megcsúszás nagy területre terjedhet ki.

Üzemmódok

A szimuláció végrehajtása közben lépésenkénti és folyamatos üzemmódok választunk a jelenség megfelelő nyomon követéséhez. A lépésenkénti üzemmód azt jelenti, hogy valamely billentyű leütése szükséges egy új hópehely leeséséhez. Így a kiváltott hatás jól megfigyelhető.

Siegler Gábor

Mintamegoldás

LAVINA.PAS


Statisztika:

6 dolgozat érkezett.
10 pontot kapott:Véges Márton.
9 pontot kapott:Póta Kristóf.
8 pontot kapott:1 versenyző.
6 pontot kapott:1 versenyző.
5 pontot kapott:2 versenyző.

A KöMaL 2008. májusi informatika feladatai