Sisällysluettelo

Miten satumetsän puut varjostavat toisiaan

Satumetsän puiden lehvästö on suurinpiirtein pallon muotoinen. Koska kraateriimme tulee valoa vain ylhäältä, arvelimme puiden kasvun olevan verrannollista puusta ylöspäin näkyvän kiekon pinta-alaan. Vettä ja ravinteita imevän juuriston voi ajatella maan alla kasvavaksi lehvästön peilikuvaksi, joten se tulee otettua samalla huomioon. (Ei tämä tietenkään pidä yhtä todellisuuden kanssa, mutta onpahan jotenkin mukavan oloinen oletus.)

Lähekkäin kasvavat puut varjostavat toisiaan, joten meidän piti laskea muodostuvan varjon pinta-ala.

Piirsimme kuvan kahdesta limittäin kasvavasta puusta:

Limittyvät kiekot: Tapaus A

Peikkokoulun matematiikan opettaja tiesi kertoa, että kiekon pinta-ala A on $A = \pi \cdot r^2$, mutta hän sanoi, että on hirveän iso työ laskea pinta-ala "ihmesoikiolle", jonka kaksi osin päällekkäin olevaa kiekkoa muodostavat. "Sehän on se katve-alue, jonka pinta-alan haluatte tietää."

Sitten opettava oivalsi, että "ihmesoikio" on oikeastaan kaksi segmenttiä, yksi kummastakin kiekosta. "Segmentin pinta-alan laskemiseen löytyy valmis kaava."

Segmentin pinta-alan kaava tutkiessamme tajusimme, että kiekot voivat olla päällekkäin paljon enemmän kuin ensimmäisessä kuvassamme:

Limittyvät kiekot: Tapaus B

"Kaiken muun lisäksi teidän pitää vielä miettiä, mitä milloinkin lasketaan. Sikamaisen hirveä työ", opettaja kannusti peikkomaiseen tyyliinsä.

Katsoimme kuvaa pitkää. Taitaa olla niin, että kun kuvassa c1:n ja r2:n välinen kulma $ \alpha > 90^o$, eli kun $ r_2² > d² + r_1² $, katve-alue on pienemmän kiekon sisään muodostuvan segmentin suuruinen.

Aluksi ajattelimme, että siltä osin, kuin kaksi puuta kasvaa limittäin ne saavat kumpikin puolet valosta. Sitten älysimme, että pieni puu ei varjosta isompaa niin pahasti kuin iso pienempää, vaikka imeekin siltä vettä ja ravinteita. Ehkä katveen aiheuttama haitta on verrannollinen puiden kokojen suhteeseen

$$ haitta_1 = \frac{r_2}{r_1 + r_2} \cdot A_{varjo}$$

Jos puiden koot ovat $r_1 = 2$ ja $r_2 = 1$ niin isomman puun auringon valoa saava pinta-ala pienee 1/3:lla varjon pinta-alasta ja pienemmän 2/3.

Segmentin pinta-ala

Olimme jo oppineet, että "sikamaisen hirveät työt" kannattaa teettää tietokoneella. Tällaiseenkin löytyi kopioitavaksi sopiva malli. Sen ymmärtämisessä oli hirveän iso työ, mutta tästä lähtien voimme tehdä kaikki yhtälöiden pyöritykset tietokoneella.

r1:n ja c1:n välinen kulma voidaan laskea kosinilauseen avulla. Helppo tuo olisi varmaan ollut itsekin johtaa, mutta kopioimme webistä, kun hakukone sitä tyrkytti. Pääsimme nopeammin ohjelmoinnin alkuun.

$ r_2^2 = r_1^2 + d^2 - 2 \cdot r_1 \cdot d \cdot cos(\alpha)$

Krjoitimme yhtälön Sympyä miellyttävään muotoon ja ratkaisimme $\alpha$:n.

Mistäkö tiesimme, mikä Sympyä miellyttää? Emme tienneetkään, vaan jouduimme lukemaan manuaaleja ja kokeilemaan esimerkkejä.

Tämä dokumentti näyttää matematiikan työkirjalta, koska olen tehnyt tämän jupyter-notebook sovelluksella, jossa voi tällä tavalla yhdistää matemaattista tekstiä ja python-koodia ja näyttää tulokset matemaattista merkintätapaa käyttäen.

Saimme kaksi ratkaisua? Jälkimmäinen näytti järkevältä, joten käytämme sitä jatkossa. Ensimmäinen ratkaisu — sol1[0] — on oikeastaan sama kulma miinusmerkkisenä. Yksikköympyrän piirtämällä ymmärrät ehkä parhaiten, miksi tuloksia on kaksi. Tai oikeastaan äärettömän monta — kaksi joka kierroksella yksikköympyrän ympäri eli $2\pi$ välein.

Kokeilimme varmuuden vuoksi, millaisia tuloksia saamme muutamalle erikokoiselle ympyrälle.

Segmentin pinta-alan laskusäännön mukaan meidän on laskettava ympyrän keskuskolmion ala. Sitä varten tarvitsemme korkeuden h, mikä taas on kätevä laskea $sin(\alpha)$:n ja $r_1$:n avulla. Trigonometrian kaavakokoelmasta löysimme kaavan $ sin²(\alpha) + cos²(\alpha) = 1$

Selvitetään ensin, mikä on $cos(\alpha)$. Kirjoitetaan kosinilause uudestaan, mutta kirjoitetaan $cos(\alpha)$:n paikalle cosa ja ratkaistaan se.

hauska harjoitus, mutta yhtä hyvin voisimme käyttää $sin(\alpha)$:a kun kerran $\alpha$:n osaamme laskea.

Lopuksi sijoitetaan segmentin laskusääntöön. Kolmion korkeus on kummassakin tapauksessa $r_1\cdot sin(\alpha)$ koska $sin(\alpha) = sin(\pi - \alpha)$ kuten alla näkyy.

Keskuskulma on $2\alpha$ ja keskuskolmio on kaksi kertaa tarkastelemamme kolmion suuruinen. (punainen peilikuva pitää ottaa huomioon)

Kokeillaan, antaako lauseke ensinkään järkevän näköisiä tuloksia.

Ohjelmakoodin automaattinen generointi

Segmentin pinta-alan lausekkeen voi printata muodossa, joka sellaisenaan kelpaa python-koodin sekaan copy-pastettavaksi

Koska teimme monta ajatusvirhettä, koodin pätkien kopiointi aina uudelleen alkoi harmittaa. Päätimme printata suoraan funktion, jolla lasketaan puiden katveen pinta-ala ja opettelimme vielä kirjoittamaan varjon laskemisen erilliseen tiedostoon omaksi python-modulikseen. Aina kun käynnistämme ohjelman, se lataa modulimme uusimman version. Aina kun huomasimme ylläesitetyssä pinta-alan laskennassa jonkin virheen, korjasimme sen ja annoimme cell -> run all-komennon tässä jupyter notebookissa ja käynnistimme simulaattorimme uudelleen.

(Virheitä saattaa olla vieläkin. Simuloinnin lopputuloksessa ei välttämättä helposti huomaa pientä eroa katveiden vaikutuksessa puiden kasvuun, kunhan vaikutus on oikean suuntaista.)

Jos haluat kokeilla symbolista laskentaa, mutta et jaksa installoida jupyter-ympäristöä, lataa tämä python-kielinen versio

jupyter notebook ja python -versiot tästä dokumentista

jupyter notebookissa

python-kielinen versio