Informatika2-2016/Gyakorlat14
A MathWikiből
(Változatok közti eltérés)
10. sor: | 10. sor: | ||
* Próbáljuk meg nagyvonalakban megérteni a kódot, nem kell érteni minden számolást, csak azt, hogy kb hol mi történik. | * Próbáljuk meg nagyvonalakban megérteni a kódot, nem kell érteni minden számolást, csak azt, hogy kb hol mi történik. | ||
− | * Módosítsuk a kódot, hogy többször ágazzon el (mondjuk | + | |
+ | * Módosítsuk a kódot, hogy többször ágazzon el (mondjuk 5 jó szám, annál többel már lehet lassú lesz). | ||
* Elég uncsi, hogy mindig ugyanazt a fát rajzolja ki. Módosítuk, hogy az elágazás szöge ('''branchAngle''') véletlen szám legyen '''[0, pi / 2]''' intervallumon. | * Elég uncsi, hogy mindig ugyanazt a fát rajzolja ki. Módosítuk, hogy az elágazás szöge ('''branchAngle''') véletlen szám legyen '''[0, pi / 2]''' intervallumon. | ||
* Csináljuk meg ugyanezt a törzs arányával is ('''trunkRatio'''), legyen mondjuk '''[0.25, 0.75]''' intervallumon véletlen szám! | * Csináljuk meg ugyanezt a törzs arányával is ('''trunkRatio'''), legyen mondjuk '''[0.25, 0.75]''' intervallumon véletlen szám! | ||
+ | |||
* Elég uncsi még mindig, mert még mindig nagyon szimmetrikus, érjük most el, hogy a két ág más szög szerint ágazzon el: | * Elég uncsi még mindig, mert még mindig nagyon szimmetrikus, érjük most el, hogy a két ág más szög szerint ágazzon el: | ||
** Csináljunk a '''branchAngle''' helyett '''branchAngleA''' és '''branchAngleB''' változókat, legyenek randomok mint a '''branchAngle''' volt. | ** Csináljunk a '''branchAngle''' helyett '''branchAngleA''' és '''branchAngleB''' változókat, legyenek randomok mint a '''branchAngle''' volt. | ||
** Cseréljük le a '''tree''' függvényben a '''pB''' és '''pC''' pontok létrehozásakor a '''branchAngle'''-t, az újonnan létrehozottakra, de az egyiknél az egyikre, másiknál a másikra! | ** Cseréljük le a '''tree''' függvényben a '''pB''' és '''pC''' pontok létrehozásakor a '''branchAngle'''-t, az újonnan létrehozottakra, de az egyiknél az egyikre, másiknál a másikra! | ||
+ | |||
+ | |||
+ | * Az utolsó probléma már csak az, hogy még így is túl szabályosnak tûnik, mert a szögek állandóak, érjük el, hogy ágazás közben változzanak: | ||
+ | ** A '''tree''' függvény végén növeljük a '''branchAngleA''', '''branchAngleB''' és '''trunkRatio''' változókat egy véletlen számmal, mondjuk '''[-0.02, 0.02]''' közöttivel. | ||
+ | ** Ahhoz, hogy ez mûködjön globálissá kell tenni a függvényben ezeket a változókat, szóval írjuk be a '''tree''' függvény elejére, hogy: | ||
+ | <python> | ||
+ | def tree(p0, p1, limit): | ||
+ | global branchAngleA | ||
+ | global branchAngleB | ||
+ | global trunkRatio | ||
+ | </python> |
A lap 2016. május 19., 03:00-kori változata
Feladatok
Bevezető
- Írjunk egy fixed_point nevű függvényt, ami két paramétert kap: egy f függvényt és egy x0 értéket! Az f-et iteratívan hattatva az x0 kiindulópontból keressük meg a függvény fixpontját. Álljunk meg, ha a lépés kisebb mint 0.00001.
- Oldjuk meg, hogy legyen egy tol opcionális paramétere a függvénynek, 0.00001 alapértelmezett értékkel. Ezzel a megállási pontosságot lehessen megadni!
- Adjunk hozzá egy maxiter opcionális paramétert (default: 200), amivel limitálhatjuk az iterációk számát!
Fraktál fa
- Töltsük le a fractree.py file-t és futtassuk le!
- Próbáljuk meg nagyvonalakban megérteni a kódot, nem kell érteni minden számolást, csak azt, hogy kb hol mi történik.
- Módosítsuk a kódot, hogy többször ágazzon el (mondjuk 5 jó szám, annál többel már lehet lassú lesz).
- Elég uncsi, hogy mindig ugyanazt a fát rajzolja ki. Módosítuk, hogy az elágazás szöge (branchAngle) véletlen szám legyen [0, pi / 2] intervallumon.
- Csináljuk meg ugyanezt a törzs arányával is (trunkRatio), legyen mondjuk [0.25, 0.75] intervallumon véletlen szám!
- Elég uncsi még mindig, mert még mindig nagyon szimmetrikus, érjük most el, hogy a két ág más szög szerint ágazzon el:
- Csináljunk a branchAngle helyett branchAngleA és branchAngleB változókat, legyenek randomok mint a branchAngle volt.
- Cseréljük le a tree függvényben a pB és pC pontok létrehozásakor a branchAngle-t, az újonnan létrehozottakra, de az egyiknél az egyikre, másiknál a másikra!
- Az utolsó probléma már csak az, hogy még így is túl szabályosnak tûnik, mert a szögek állandóak, érjük el, hogy ágazás közben változzanak:
- A tree függvény végén növeljük a branchAngleA, branchAngleB és trunkRatio változókat egy véletlen számmal, mondjuk [-0.02, 0.02] közöttivel.
- Ahhoz, hogy ez mûködjön globálissá kell tenni a függvényben ezeket a változókat, szóval írjuk be a tree függvény elejére, hogy:
def tree(p0, p1, limit): global branchAngleA global branchAngleB global trunkRatio