Edellisessä tarinassani https://mikonfysiikka.wordpress.com/2019/12/17/lewis-carrollin-taikatemppu/ kerroin Lewis Carrollin taikatempusta. Tempussa valitaan jokin salainen luonnollinen luku a. Sen jälkeen luvulle suoritetaan erilaisia laskutoimituksia, näiden lopputulokset ovat b, c, …, h ja i. Taikurille kerrotaan alkuperäisen luvun a ja kolmannen c luvun parillisuudesta ja saatu viimeinen luku i. Taikuri pystyy parin laskutoimituksen avulla päättelemään alkuperäisen luvun a.
Ongelman määrittely
Minua kiinnostaa onko ongelma yksikäsitteinen siinä mielessä, että tuottaako taikatempun algoritmi yksikäsitteiset lopputulokset. Tietysti minua kiinnostaa myös millaisen kuvan saan aikaiseksi kolmiulotteiseen avaruuteen. Jos olet jaksanut lukea edes tähän saakka, niin ymmärrät, että tämä menetelmä ei ole matemaattinen todistus, tässä tutkitaan ”kokeellisesti” matemaattista ilmiötä.
Merkitään alkuperäisen luvun n jakojäännöstä kahdella jaettaessa aa:lla ja luvun c (eli kolmas luku taikatempussa, kun ensimmäinen luku on n) jakojäännöstä kahdella jaettaessa cc:llä. Olkoon N luonnollisten lukujen joukko ja joukko CC algoritmin tuottamien pisteiden (aan, ccn, in) joukko, missä n on luonnollinen luku..
Haluan siis tietää vastaako jokaista luonnollista lukua n, joukon CC:n piste (in, aan, ccn) ja päinvastoin eli onko kuvaus N -> CC bijektio.
Satunnaisuus
Taikatempussa on vaiheita, jossa voidaan valita eri lukuja tyyliin
- Jos b on
- pariton, niin lisää joko 5 tai 9. Jaa luku kahdella ja lisää 1. Annetaan luvun nimeksi c.
- parillinen, niin vähennä siitä 2 tai 6, jaa luku kahdella ja sitten lisää 29 tai 33 tai 37. Annetaan luvulle nimeksi c.
Yksinkertaistan ongelmaa siten, että jätän eri vaihtoehtojen tutkimisen tulevaan artikkeliin, niinpä valitsen taikatempun vaihtoehdoista aina pienimmän luvun tässä tarinassa. Eli edellinen kohta on tässä jutussa:
- Jos b on
- pariton, niin lisää 5. Jaa luku kahdella ja lisää 1. Annetaan luvun nimeksi c.
- parillinen, niin vähennä siitä 2, jaa luku kahdella ja sitten lisää 29. Annetaan luvulle nimeksi c.
Suunnitelma
Ajatuksena on tuottaa GeoGebra 6:lla (onnistuu myös GeoGebra 5:llä ja GeoGebra 3D:llä) sovellus, jossa luodaan funktio c7(x), joka laskee taikatempun algoritmin tuottaman lopullisen luvin i. Koska GeoGebrassa ei voi rajoittaa lähtöjoukkoa vain luonnollisiksi luvuiksi, pitää ottaa huomioon kaikki reaaliluvut x ≥ 0. Tuotetun funktion ja lukujen a ja c parillisuuden avulla tuotetaan taulukkolaskennan avulla 3D pisteet. Nämä yhdistetään janoilla alkuperäisiin a arvoihin. Näin saadaan kuva kuvauksesta.
Kirjoitan komennot GeoGebra 6:n syöttökenttään.
Parillisuusfunktio
GeoGebralla voidaan luvun n parillisuus selvittää käyttämällä jakojäännöstä komennolla mod(n, 2). Esimerkiksi mod(13, 2) antaa tulokseksi 1.
Valitettavasti komento mod(x, 2) ei tuota funktiota. Niinpä tarvitsen funktion, joka antaa arvoksi 0, jos annetun luvun kokonaisosa on parillinen ja 1 jos se on pariton. Funktion luonti onnistuu käyttämällä floor-komentoa, joka tuottaa arvoksi luvun kokonaisosan. Esimerkiksi floor(13.6) tuottaa arvoksi 13. Muutaman kokeilun jälkeen havaitsin, että seuraava toimii. Määritellään syöttökentässä funktio
paril(x) = floor(2 (x / 2 - floor(x / 2)))

Carroll-funktio
Muutetaan taikatempun laskutoimitukset funktioiksi. Ohjeen resepti b tuottaa funktion c1(x) ja c vastaavasti c2(x) ja niin edelleen. Viimeinen kohta ohjeessa eli i on funktio c7(x). Kirjoitetaan syöttökenttään komennot:
c1(x) = 3 x c2(x) = Jos(paril(c1(x)) == 1,(c1(x)+5)/(2)+1,(c1(x)-2)/(2)+29) c3(x) = 3 c2(x) c4(x) = Jos(paril(c3(x)) == 1,(c3(x)+5)/(2)+1,(c3(x)-2)/(2)+29) c5(x) = (x+19)*10+c4(x) c6(x) = floor(c5(x)/7) c7(x) = floor(c6(x)/7)
GeoGebra sieventää sisäkkäisten funktioiden lausekkeet, näin ollen funktion c7 lauseke on aika monimutkaisen näköinen.

Tietysti kuvaajakin on aika eksoottinen.

3D-pisteet taulukkolaskennalla
Lasketaan muutamia funktion c7 arvoja luonnollisilla luvuilla. Samalla lasketaan ensimmäisen luvun a ja kolmannen luvun c eli funktion c2 arvojen parillisuus. Teen tämän taulukkolaskennalla, jotta näen luvut rinnakkain, näin minun on helpompi pohdiskella lukujen yhteyksiä toisiinsa.
Kirjoitetaan taulukkolaskennan soluihin A1, …, A4 otsikot: ”x”, aparil, c2paril ja ”c7”. Kirjoitetaan soluun A2 luku 0 ja soluun A3 luku 1. Valitaan alue A2:A3 ja luodaan sarake luonnollisia lukuja 0, …, 50 kahvasta vetämällä. Soluihin B2, …, B4 kirjoitetaan kaavat:
=paril(A2) =paril(c2(A2)) =c7(A2)
Valitaan alue B2:B4 ja monistetaan kaavat alaspäin kahvalla vetämällä.

Tuota taulukkoa tutkiskelemalla voi pohdiskella millainen säännönmukaisuus lukujonoilla on. Palaan tähän asiaan luultavasti tulevassa artikkelissa.
3D-kuvaajaa varten luodaan kaksi pistelistaa. Aluksi kannattaa valita Piirtoalueen asetuksista Nimeäminen: Nimeäminen pois. Näin pisteiden nimet eivät tule näkyviin 3D piirtoalueelle. Valitaan alue B2:D32 ja Luo lista -työkalua painamalla valitaan työkalu Luo pistelista. Annetaan listalle nimeksi l1.

Kun testasin komentoja GeoGebra3D:llä, jossa ei ole taulukkolaskentaa käytössä, niin loin l1-listan Jono-komennolla:
l1=Jono((paril(nn),paril(c2(nn)),c7(nn)),nn,0,30)
Luvut 0, …, 30 saadaan pisteiksi 3D-avaruuteen kirjoittamalla syöttökenttään
l2 = Jono((n, 0, 0), n, 0, 30)
Luodaan janat muuttujan arvojen pisteiden ja niiden arvoja vastaavien pisteiden välille. Eli periaatteessa hahmotetaan kuvausta n -> (aan, ccn, in).
Tämän tyyppinen asia kannattaa tehdä Zip-komennolla, toki jono-komennollakin janojen piirto onnistuu.
l3 = Zip(Jana(n, m), n, l1, m, l2)
3D-piirtoalueelle ilmestyvät janat pistelistojen alkioiden välille. Akseleiden skaalausta saa muutettua painamalla Vaihto-näppäimen pohjaan ja vetämällä koordinaattiakseleista. Kuviota saa liikutettua tasossa Vaihto-näppäintä pohjassa siirtelemällä.

Vaikuttaa siltä, että jokaista luonnollista lukua n vastaa yksikäsitteinen piste taikatempun funktioiden tuottama piste (aan, ccn, in). Ja myös päinvastoin, eli jokaista (aan, ccn, in) pistettä vastaa yksikäsitteinen luonnollinen luku n.
Jätän asian täsmällisen matemaattisen todistamisen lukijalle.
Lähteet
Edellinen artikkelini aiheesta: Lewis Carrollin taikatemppu https://mikonfysiikka.wordpress.com/2019/12/17/lewis-carrollin-taikatemppu/
Futility Closet artikkeli: A Late Carroll Game https://www.futilitycloset.com/2019/07/14/a-late-carroll-game/
GeoGebra 3D -appletti liu’un avulla tuotettuna : https://www.geogebra.org/3d/fsa27rx7
Tämän artikkelin esimerkki GeoGebra 6:lla: https://www.geogebra.org/m/zpbkxeh9