Paperille piirretään tasavälisiä yhdentaisia viivoja. Kuvion päälle pudotetaan satunnaisesti neula, jonka pituus on sama kuin viivojen etäisyys toisistaan. Millä todennäköisyydellä neula putoaa siten, että se leikkaa jonkin viivan?
Buffonin neulaprobleema: yhdensuuntaiset viivat ja neula |
Ainakin yliopistojen todennäköisyyslaskennan kursseissa tämä yleensä lienee harjoitustehtävänä. Tulos on $2/\pi \approx 0.63662$. En esitä ratkaisua tässä. Kiinnostuneet voivat katsoa vaikkapa verkkodokumenttia http://fi.wikipedia.org/wiki/Buffonin_neula.
Lukiossakin opetetaan todennäköisyyslaskentaa. Saattaa olla, että ratkaisu on hieman vaikea lukiolaiselle käsitteellisellä tasolla, vaikka se teknisesti on täysin mahdollinen.
Mutta lukiolainenhan voisi simuloida probleemaa. Piirretään viivat paperille ja heitetään neulaa vaikkapa 10000 kertaa. Lasketaan viivan päälle osumisten suhde kaikkien heittojen määrään ja katsotaan, päästäänkö lähelle lukua $2/\pi$. Ehkei sentään. Olisi vähän tylsää ja kuntakin joutuisi ostamaan neuloja aika läjän.
Mutta tässä olisi sopiva tehtävä toteutettavaksi laskimilla tai mieluummin tietokoneilla. Jouduttaisiin pohtimaan todennäköisyyden luonnetta ja simuloinnin ideaa, saataisiin matematiikan oppimista tukeva ohjelmointitehtävä. Konkreettista tekemistä, jossa ei kysytäkään opettajalta, milloin tehtävä on tehty, vaan saatu tulos ratkaisee.
Edellytyksenä tietenkin on, että käytössä oleva laskin tai tietokoneohjelma tukee tällaista käyttöä. Ainakin tarvitaan satunnaislukugeneraattori, joka tuottaa jollekin välille tasaisesti jakautuneita satunnaislukuja. (Mitä nämä ovat? Lisää pohdittavaa tunnille.) Lisäksi tarvitaan mahdollisuus kirjoittaa riittävän helposti yksinkertaista ohjelmakoodia, ja laskentanopeuttakin pitäisi olla riittävästi. Miljoonan neulanpudotuksen pitäisi olla mahdollista muutamassa minuutissa, ehkä alle minuutin. Varovaisempaa tietenkin aloittaa tuhannesta tai muutamasta kymmenestä tuhannesta pudotuksesta.
En tiedä, miten hyvin nykyiset laskimet ja kouluihin tarjottavat tietokoneohjelmat tukevat tällaista laskentaa. Esitänkin haasteen laskinfirmojen edustajille: laatikaa ohjelma ja julkaiskaa se, lisäksi tiedot laskentaan kuluvasta ajasta.
Matematiikan ymmärtämisen kannalta symbolisten laskimien käyttö saattaa herkästi painottaa vääriä asioita. Oleelliseksi tulee valmiiden työkalujen käytön oppiminen ja sivuun jää se, mihin näitä varsinaisesti tarvitaan. Numeerinen laskenta ohjelmointiin yhdistettynä saattaa avata oppilaille näköaloja enemmän kuin symbolinen laskenta asiana sinänsä. Ei symbolinen laskenta silti tarpeetonta ole. Sen ja ohjelmoinnin yhdistäminen avaa mahdollisuuksia vielä enemmän.
Joku saattaa sanoa, ettei koulumatematiikka tällaista ole eikä koulussa ole mahdollisuuksia tällaiseen. Aivan oikeassa hän on. Mutta tällaista sen pitäisi lähitulevaisuudessa olla, ja tähän suuntaan pitäisi edetä.
2 kommenttia:
Keskustelua on syntynyt Facebookissa ja hyvä niin. Nopeusraportointeja on saatu. Kaipaisin kuitenkin koodeja, millä nämä on eri laitteilla laskettu: tieto siis laitteesta ja sille tehdystä koodista. Missä määrin nämä ovat sellaisia, että voisi odottaa lukiolaisen a) ymmärtävän, b) tekevän niitä?
Pohjaksi omat Mathematica-koodini: helpommin ymmärrettävä ja tehokkaampi, mutta kryptisempi.
sim[n_] := (m = 0;
Do[x = RandomReal[{-1, 1}];
a = RandomReal[{-Pi/2, Pi/2}];
x1 = x - Cos[a]; x2 = x + Cos[a];
If[x1 < -1 || x2 > 1, m++], {n}];
N[m/n])
true[{r1_, r2_}] :=
If[r1 - Cos[Pi r2/2] < -1 || r1 + Cos[Pi r2/2] > 1, 1, 0];
sim2[n_] := N[Apply[Plus, Map[true, RandomReal[{-1, 1}, {n, 2}]]]/n]
En ole laskinvalmistaja, mutta joskus kysyttäessä olen suositellut Pythonia ja nimenomaisesti IPython Notebookia tällaisiin tarkoituksiin, joten tässä esimerkki: http://nbviewer.ipython.org/gist/jkseppan/8b09b9d6ba7cf5c8f4a7
Lähetä kommentti