Demográfiai modellek (folytatás)

Hasonló dokumentumok
Demografia / Demográfiai modell

Demográfiai modellek

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Közismereti informatika 2.zh T-M szakirány

Rendezések. A föltöltés nemcsak az r-re vonatkozik, hanem az s-re is. Ez használható föl a további rendezések

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

A feladat. A főprogram

Véletlen sorozatok ellenőrzésének módszerei. dolgozat

Programozási segédlet

Utolsó módosítás: Véletlenszámok

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Az Összegfokozatos listázás téma 2. gyakorlata

Érdekes informatika feladatok

Számítógépes döntéstámogatás. Genetikus algoritmusok

értékel függvény: rátermettségi függvény (tness function)

Eljárások, függvények

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

SCILAB programcsomag segítségével

Adatbányászati szemelvények MapReduce környezetben

Algoritmizálás és adatmodellezés tanítása 1. előadás

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

biometria II. foglalkozás előadó: Prof. Dr. Rajkó Róbert Matematikai-statisztikai adatfeldolgozás

értékel függvény: rátermettségi függvény (tness function)

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Programozási módszertan. Mohó algoritmusok

BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:

Programozás alapjai. 5. előadás

Egyszerű példaprogramok gyakorláshoz

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Statisztika - bevezetés Méréselmélet PE MIK MI_BSc VI_BSc 1

angolul: greedy algorithms, románul: algoritmi greedy

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

Az első fájlos program

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

A következő feladat célja az, hogy egyszerű módon konstruáljunk Poisson folyamatokat.

Gazdasági matematika II. vizsgadolgozat megoldása A csoport

Adatok statisztikai értékelésének főbb lehetőségei

Populáció A populációk szerkezete

1. A feladatról. 2. Az áramkör leírása. Mechatronika, Optika és Gépészeti Informatika Tanszék D528. Léptetőmotor vezérlése

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

BASH script programozás II. Vezérlési szerkezetek

4/24/12. Regresszióanalízis. Legkisebb négyzetek elve. Regresszióanalízis

INFORMATIKA javítókulcs 2016

GAZDASÁGI NÖVEKEDÉS II.

Függvények ábrázolása

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

14. Mediánok és rendezett minták

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Adatszerkezetek 2. Dr. Iványi Péter

2. Visszalépéses stratégia

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Algoritmizálás + kódolás C++ nyelven és Pascalban

1. szemináriumi. feladatok. Ricardói modell Bevezetés

Vérsejtszámlálás. Bürker kamra

Algoritmuselmélet 2. előadás

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

I. Egydimenziós tömb elemeinek rendezése

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

Készítette: Fegyverneki Sándor

Megoldott feladatok. Informatika

Számítógépes geometria (mester kurzus)

Eseményalgebra. Esemény: minden amirl a kísérlet elvégzése során eldönthet egyértelmen hogy a kísérlet során bekövetkezett-e vagy sem.

e (t µ) 2 f (t) = 1 F (t) = 1 Normális eloszlás negyedik centrális momentuma:

Algoritmusok helyességének bizonyítása. A Floyd-módszer

dimenziója Szirmay-Kalos László N= 1/r D D= (logn) / (log 1/r) D= (log4) / (log 3) = 1.26 N = 4, r = 1/3 Vonalzó ( l ) db r =1/3 N = 4 r 2 N 2 N m r m

INFORMATIKAI ALAPISMERETEK

Makroökonómia. 7. szeminárium

Makroökonómia. 5. szeminárium

Algoritmusok vektorokkal keresések 1

Algoritmusok és adatszerkezetek II.

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Általánosan, bármilyen mérés annyit jelent, mint meghatározni, hányszor van meg

Delphi programozás IV.

DOKUMENTÁCIÓ KÉSZÍTETTE: Naszári László I. évf. levelező Informatika tanári szak 2003.

INFORMATIKA tétel 2019

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

Felvételi tematika INFORMATIKA

Feltételezés: A file strukturálisan helyes, tanszékenként nem üres, de az adott listázási feladatban kikötött számút nem haladja meg.

Az [OIII] vonal hullámhossza = 3047,50 Ångström Maximális normált fluxus = 7,91E-12 Szigma = 0,18 Normálási tényező = 3,5E-12 A Gauss-görbe magassága

Programozás alapjai. 7. előadás

Makroökonómia. 6. szeminárium

A Statisztika alapjai

Nagy számok törvényei Statisztikai mintavétel Várható érték becslése. Dr. Berta Miklós Fizika és Kémia Tanszék Széchenyi István Egyetem

Likelihood, deviancia, Akaike-féle információs kritérium

Matematika A3 Valószínűségszámítás, 5. gyakorlat 2013/14. tavaszi félév

Nemparaméteres próbák

GAZDASÁGI NÖVEKEDÉS I.

A félév során előkerülő témakörök

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén


A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Informatika terméktervezőknek

Átírás:

Demográfiai modellek (folytatás) 4. A teljesebb anyag 4.1. A megoldás egy változata Alábbiakban az előző gyakorlaton szereplő keretprogramból kapható egy lehetséges megoldást részletezzük. (Ha már a sajátja kész, ugorja át ezt az alfejezetet!) Pirossal a keretből hiányzó kódbetéteket emeltük ki. Program Demografia; (* A demográfiai feladat megoldása. *) N:TEgyedIndex; K:TKorcsopIndex; egyedek:tegyedek; szulratak, halratak:tvaloskcs; kcselo:tegeszkcs; T:LongInt; leptek, {a képernyőre normáláshoz} felszorz:real; {a tároltból a tényleges létszám meghatározásához} Tulnepesedes:Boolean; Procedure Param; Function Folytatas:Boolean; Procedure KorCsopKi; Procedure SzimulaciosLepes; Const szelrata = 0.8; {a tömörítéskor alkalmazott szelekciós ráta} gydb:tegyedszam; i,j:tegyedindex; Procedure Hullatakaritas( N:TEgyedIndex); {hullatakarítás: 0-k kihagyása az egyedek[1..n] tömbből N = tömör egyedek tömb hossza számlálás: kcselo[1..k] = korcsoportok gyakorisága} i,j:tegyedindex; For j:=1 to K do kcselo[j]:=0; 1

j:=0; For i:=1 to N do If egyedek[i]>0 then Inc(kCsElo[egyedek[i]]); Inc(j); egyedek[j]:=egyedek[i]; End N:=j Procedure AranyosTomorites; {Átlagosan minden x. marad meg, a többi "meghal"; felszorz = felszorz/x most x=1/(1-szelrata)=5} i:tegyedindex; GotoXY(65,11); Writeln('Túlnépesedés!'); Billre; For i:=1 to N do If (egyedek[i]>0) and (Random<szelRata) then egyedek[i]:=0 Hullatakaritas(N); felszorz:=felszorz*(1-szelrata); {SzimulaciosLepes} gydb:=0; for i:=1 to N do If Random<halRatak[egyedek[i]] then {meghalt} egyedek[i]:=0; End Else If Random<szulRatak[egyedek[i]] then {szült => gyerekszámlálás} Inc(gyDb); Inc(egyedek[i]); {öregszik} {hullatakarítás és számlálás:} Hullatakaritas(N); While N+gyDb>=MaxN do {túlnépesedés} AranyosTomorites; {a gyerekek szelektálása:} gydb:=round((1-szelrata)*gydb); For i:=1 to gydb do egyedek[n+i]:=1; kcselo[1]:=gydb; N:=N+gyDb; 2

End. 4.2. A második megoldás egy változata A második változatban a születés naiv megoldását helyettesítjük egy valósághűbbel, a Poissoneloszlással leírt véletlen gyermekszámmal. A lényeg: most nem egy valószínűség írja le az 1 gyerek születését, hanem a születendő gyerekek számát generáljuk (a demográfusok szerint jól működő) Poisson-eloszlással. Ehhez módosítani kell a programot a paraméterbeolvasásnál és a szimulációs lépésnél. Az utóbbi az érdekes természetesen: egyszerűen a Poisson-eloszlás beépített függvényének felhasználásával a gyerekek számát növelni kell (nem eggyel és nem egy valószínűségtől függően). Érdemes röviden belepillantani a Poisson-eloszlású véletlenszám generálásába, elvileg és programozásilag. Elvi tudnivaló ennyi: a Poisson-eloszlás egy természetes szám értékű, egyparaméteres valószínűségi változó eloszlása. Ez a valószínűségi változó rendszerint egy esemény ismétlődés-számát írja le 1 : ; a paramétere. A paraméter az ismétlődés-szám várható értéke (és mellesleg szórásnégyzete). Ez a paraméter kötődik az egyes korcsoportokhoz, ezt kell a korábbi valószínűségek helyett beolvasni. Programozás logikájához értsük meg az alábbi ábrát! 8. ábra. A Poisson-eloszlás szimulálásának magyarázata. (A fenti formula -ját m-mel jelöltük az ábrán. L. még: http://people.inf.elte.hu/szlavi/inforendsz/szimulacio/poissonabra.ppt) 1 http://hu.wikipedia.org/wiki/poisson-eloszl%c3%a1s 3

És végül maga a Pascal függvényeljárás: { Poisson-eloszlású véletlenszámot generáló függvény. Paramétere a várhatóértéke (és szórásnégyzete). Értéke: 0..MaxInt } Function Poisson(m:Real):Integer; i:integer; r,t,s:real; r:=random; i:=0; t:=exp(-m); s:=t; While r>=s do i:=succ(i); t:=t*m/i; s:=s+t; Poisson:=i; A szimulációs programunk lényegi részei következnek. (A piros az újdonság. Jól látszik ez az általánosítás felé tett lépés algoritmus-egyszerűsödéssel járt!) Program DemografiaP; (* A demográfiai feladat megoldása. Poisson-eloszlással. *) Procedure SzimulaciosLepes; Const szelrata = 0.8; {a tömörítéskor alkalmazott szelekciós ráta} gydb:tegyedszam; i,j:tegyedindex; Procedure Hullatakaritas( N:TEgyedIndex); Procedure AranyosTomorites; {SzimulaciosLepes} gydb:=0; For i:=1 to N do If Random<halRatak[egyedek[i]] then {meghalt} egyedek[i]:=0; End Else Inc(gyDb,Poisson(szulRatak[egyedek[i]])); Inc(egyedek[i]); {öregszik} 4

{hullatakarítás és számlálás:} Hullatakaritas(N); While N+gyDb>=MaxN do {túlnépesedés} AranyosTomorites; {a gyerekek szelektálása:} gydb:=round((1-szelrata)*gydb); For i:=1 to gydb do egyedek[n+i]:=1; kcselo[1]:=gydb; N:=N+gyDb; End. 4.3. A harmadik megoldás egy változata Ebben egyedszámtól 2 függővé tesszük a paramétereket. Mind a szül(et)ési ráták (Poisson-várhatóértékek), mind a halálozás ráták (valószínűségek) legyenek egyszerűség kedvéért az összlétszám lineáris függvényei. Ehhez az egyes korcsoportokhoz tartozó rátákat, mint függvényeket, már két paraméter fogja meghatározni: egy a növekedés ütemét és egy kezdeti értéket maghatározó paraméter. L. az alábbi ábrákat. 9. ábra. A halálozási ráta függése az összlétszámtól. (Egy ideig növekszik a valószínűség, majd N -től stagnál, 1-re beáll.) 2 Bár tehetnénk ugyanígy pl. az időtől is. 5

Ehhez hasonló a Poisson-eloszlás paraméterének a létszámfüggő változata, csak értelemszerűen nincs felső korlát, hiszen ez a paraméter várhatóértéket jelent, amely akármekkora pozitív szám lehet. 10. ábra. A születési ráta függése az összlétszámtól. A módosult szimulációs program (érdekes részletei): Program DemografiaPF; (* A demográfiai feladat megoldása. Poisson-eloszlással. Függvényes paraméterrel. *) szulratak0,csz, halratak0,ch:tvaloskcs; Procedure Param; i:tegyedindex; Writeln(CrLf,'Halálozási ráták (h0 és szorzó):'); For i:=1 to K-1 do Readln(fBe,halRatak0[i],cH[i]); If fnbe<>'con' then If (i Mod 5)=0 then Writeln; 6

Write(halRatak0[i]:8:5,cH[i]:8:5); If fnbe<>'con' then Writeln; halratak0[k]:=1; Writeln(CrLf,'Szülési ráták (r0 és szorzó):'); For i:=1 to K do Readln(fBe,szulRatak0[i],cSz[i]); If fnbe<>'con' then If (i Mod 5)=0 then Writeln; Write(szulRatak0[i]:8:5,cSz[i]:8:5); If fnbe<>'con' then Writeln; If fnbe<>'con' then Billre; Function Folytatas:Boolean; Procedure KorCsopKi; Procedure SzimulaciosLepes; Const szelrata = 0.8; {a tömörítéskor alkalmazott szelekciós ráta} gydb:tegyedszam; i,j:tegyedindex; Function szulratak(const i:integer):thatoertek;{poisson!} r:real; r:=szulratak0[i]+csz[i]*n; If r<0 then szulratak:=0 else szulratak:=r Function halratak(const i:integer):tvaloszinuseg; r:real; r:=halratak0[i]+ch[i]*n; If r>1 then halratak:=1 else if r<0 then halratak:=0 else halratak:=r {EndIf}; Procedure Hullatakaritas( N:TEgyedIndex); Procedure AranyosTomorites; 7

{SzimulaciosLepes} gydb:=0; For i:=1 to N do If Random<halRatak(egyedek[i]) then {meghalt} egyedek[i]:=0; End Else Inc(gyDb,Poisson(szulRatak(egyedek[i]))); Inc(egyedek[i]); {öregszik} {hullatakarítás és számlálás:} Hullatakaritas(N); While N+gyDb>=MaxN do {túlnépesedés} AranyosTomorites; {a gyerekek szelektálása:} gydb:=round((1-szelrata)*gydb); For i:=1 to gydb do egyedek[n+i]:=1; kcselo[1]:=gydb; N:=N+gyDb; End. A rátákra vonatkozó összefüggéssel érdemes eljátszadozni. Megfigyelték, hogy a születési ráta mind kis, mind nagy egyedszám mellett viszonylag kicsi, s van egy optimális népesség, amely mellett maximális. A halálozási rátára is hasonlóan igaz, hogy az optimális népesség mellett a legkisebb, s minél nagyobb a tőle való távolság, annál jobban nő. A modell is arról számol be, hogy ilyen változású ráták stabilizálják a populációt, azaz egy egyensúlyi létszám felé terelik őt. 11. ábra. A születési ráta függése az összlétszámtól. 8

5. Feladatok Tegye alkalmassá a programot arra, hogy nemhez fűződő jelenségeket (pl. betegségeket, háborúk stb.) lehessen vizsgálni. 9