sunnuntai 26. maaliskuuta 2023

Mitä matematiikan tehtävässä kysytään 2

Tammikuun blogikirjoituksessani (26.1.2023) esitin seuraavan, mielestäni lukiolaisillekin aivan hyvin sopivan tehtävän, johon ei niinkään haeta tiettyä ratkaisua, vaan tavoitteena on lähteä tutkimaan tilannetta ja katsomaan, mihin ehkä päädytään:

Tasavälisiä kokonaislukuja korotetaan tiettyyn (positiiviseen) kokonaislukupotenssiin. Syntyvästä lukujonosta lasketaan perättäisten lukujen erotukset, jolloin saadaan uusi lukujono. Tästä lasketaan uudelleen perättäisten lukujen erotukset, jolloin syntyy jälleen uusi lukujono. Näin jatketaan ja todetaan, että jossakin vaiheessa saadaan vakiolukujono, ts. kaikki luvut yhtä suuria. Seuraava askel tuottaisi nollajonon. Miksi näin käy? Mistä tässä on kysymys?

Millaista pohdiskelua sitten — esimerkiksi — odottaisin?

Ensimmäinen vaihe ehkä olisi kokeilu joillakin konreettisilla luvuilla, esimerkiksi korottamalla parilliset luvut seitsemänteen potenssiin. Jotta kokeiluista ei tule toivottoman työläitä, tarvitaan jonkinlainen ohjelmointiympäristö. Minä olen käyttänyt Mathematicaa, mutta vaatimattomampi ympäristökin toki käy, kunhan se helposti sallii yksinkertaisen koodin kirjoittamisen. Jonkinlainen ymmärrys ohjelmoinnin perusrakenteista täytyy kokeilijalla tietenkin olla.

Esimerkkitapauksessa saadaan seuraavat erotukset ja kahdeksannella rivillä vakiojono, seuraavilla riveillä nollaa:


Tämän jälkeen varmaan tekisi mieli kokeilla hieman eri luvuilla ja miettiä, millaisten laskujen tuloksena viimeisen rivin vakio syntyy. Ehkä vastauksenkin voi kokeilujen perusteella arvata.

Jos käytettävissä on symbolinen laskenta (kerrankin käyttöä tällekin), voi seuraavaksi katsoa, mitä tapahtuu, kun tasaväliset luvut $a + kd$, $k = 0,1,2,\dots,n$ korotetaan potenssiin $p$. Jotta symbolilaskenta onnistuisi, on luvuille $n$ ja $p$ annettava numeeriset arvot. Tuloksena saadaan iso taulukko muuttujien $a$ ja $d$ polynomeja. Kun näissä ehkä olevat sulkulausekkeet kehitetään (expand, ts. poistetaan sulut, tai ohjelmasta riippuen ehkä myös simplify), saadaan vakioriville monomi, joka ilmeisestikin on $p!\,d^p$. Näyttäisi siis toimivan, eikä lukujen $a$ ja $d$ edes tarvitse olla kokonaislukuja.

Lähtökohtana olivat siis tasavälisten lukujen kokonaislukupotenssit. Mitä tapahtuu, jos kokonaislukupotenssin $x^p$ sijasta käytettäisiinkin jotakin muuta funktiota? Tässä vaiheessa on ehkä helpointa siirtyä symboleista takaisin lukuihin. Toki symbolejakin voi kokeilla, mutta tulokset saattavat olla monimutkaisia ja vaikeasti hahmotettavia. Eikä lukujen käyttökään ole aivan ongelmatonta: murtoluvuilla laskettaessa nollat näyttävät nollilta, mutta desimaaliluvuilla laskettaessa ne saattavat olla esimerkiksi muotoa $1.23 \times 10^{-15}$, mikä on laitteen laskentatarkkuuden rajoissa sama kuin nolla.

Ehkä on helpointa valita aluksi funktioksi polynomi. Astelukua ei kannata valita kovin korkeaksi, jotta polynomin arvot eivät ole kovin suuria. Esimerkiksi voisi verrata polynomeilla $x^3$ ja vaikkapa $x^3 - 3x^2 + 2x$ laskettuja erotuksia. Numeerisessa kokeilussa täytyy vakiot $a$, $d$ ja $n$ valita jollakin tavoin. Tässä on kokeilun vaikeus. Jotkin arvot saattavat antaa kiinnostavia tuloksia, kun jotkin toiset kätkevät kiintoisat ilmiöt, esimerkiksi pienimittakaavaiset muutokset isojen lukujen seassa. Symbolisen laskun perusteella voi arvella, että luvulla $a$ ei ole kovin suurta merkitystä; valitaan siis yksinkertaisuuden vuoksi $a = 0$. Tasavälisiä lukuja pitää varmaan olla riittävän monta, jotta joitakin ilmiöitä saadaan esiin. Luku $n$ voisi ehkä olla muutamia kymmeniä, esimerkiksi $n = 30$. Luvun $d$ valinta on vaikeinta. Kannattaa kokeilla sekä pientä että suurta, esimerkiksi $d = 0.1$ ja $d = 2$. Kummallakin polynomilla saadaan erotusten neljännelle riville sama luku, jos $d = 0.1$, niin $0.006$, ja jos $d = 2$, niin $48$. Muissa erotuksissa kyllä on eroja.

Polynomi $x^3$, $d = 0.1$.

Polynomi $x^3 - 3x^2 + 2x$, $d = 0.1$.

Mielenkiintoisemmaksi osoittautuu jälkimmäinen taulukko. Hahmojen näkeminen pelkistä luvuista on yleensä vaikeata, mutta usein graafinen esitys auttaa. Piirretään jokaisen erotusrivin kuvaaja murtoviivana. Ensimmäisen rivin kuvaaja muistuttaa kolmannen asteen polynomia; tietenkin, koska lähtökohtana on polynomi $x^3 - 3x^2 + 2x$. Seuraava rivi näyttäisi pohjautuvan paraabeliin, ts. toisen asteen polynomiin. Kolmas rivi antaa suoran, ts. ensimmäisen asteen polynomin kuvaajan. Ja neljäs on vakiorivi. Vertailemalla lisäksi nollakohtia ja ääriarvoja voi alkaa epäillä, että asialla on jotakin tekemistä derivoinnin kanssa.

Polynomi $x^3 - 3x^2 + 2x$, $d = 0.1$.

Mitä tapahtuu, jos funtioksi valitaankin $\sin(x)$? Arvoa vakiolle $d$ täytyy taas hieman hakea; $d = 0.3$ voisi olla sopiva. Eri rivien erotukset näyttäisivät nyt antavan kuvaajat, jotka jotenkin näyttäisivät vastaavan funktioita $\sin(x)$, $\cos(x)$, $-\sin(x)$ ja $-\cos(x)$. Amplitudi kuitenkin pienenee ja viimeinen ei enää kovin hyvin erotu. Derivointiarvelu saa kuitenkin vahvistusta.

Funktio $\sin(x)$, $d = 0.3$.

Taulukon erotukset ovatkin itse asiassa erotusosamääriä, joista nimittäjät on unohdettu. Jos jokainen erotus lisäksi jaetaan luvulla $d$, niistä tulee erotusosamääriä, jotka lähestyvät ensimmäisen rivin funktion ensimmäistä, toista, kolmatta jne. derivaattaa, kun $d \to 0$. Tämän pohjalta on ymmärrettävää, että ensimmäisessä esimerkissä laskettu potenssin $x^p$ erotusten $p$:s rivi antaa vakion $p!\,d^p$. Kyseessä on sama asia kuin derivoinnissa \[\mathrm{D}^p\,x^p = p!.\]

Tammikuun blogikirjoituksen viimeisessä kuvassa on kyse Newtonin interpolaatiopolynomin laskemisesta menettelyllä, jota numeerisessa laskennassa aikoinaan käytettiin. Luvut $\Delta^n x_j$ ovat edellä kuvatun taulukon erotuksia laskettuna approksimoitavasta funktiosta (tai datasta) $x$. Näiden avulla muodostettiin interpolaatiopolynomi. Menettely on jäänyt menneisyyteen laskentaohjelmien kehityksen myötä ja varsin harva osaisi yhdistää erotustaulukon interpolaatiopolynomiin. Käsin laskettavan erotustaulukon sijasta numeerikko kirjoittaisikin vaikka seuraavan Mathematica-koodin:

Newtonin interpolaatio


Ei kommentteja: