SciFest 2015 Joensuu

Kivaa kuvaa taulukkolaskennalla

Markku Leino

Lounais-Suomen LUMA-keskus

www.luntti.net/scifest15

Sisällysluettelo

  • Kuvan liittäminen komponenttimuodossa
  • Pascalin kolmio
  • Mandelbrotin joukko
  • Julian joukko
  • Kaoottinen rata

Kuvan liittäminen

Kuva tietokoneessa on RGB-muodossa, eli jokaisen värin komponentilla on oma voimakkuutensa. Esimerkiksi, jos R=255, G=0 ja B=0, niin pikseli on punainen.

Kuvan muuttaminen

Matt Parkerin, {koom,matemaat}ikko, sivuilla http://think-maths.co.uk/spreadsheet on valmis kilke, joka muuttaa kuvan taulukoksi. Ladattavan tiedoston päätteestä huolimatta myös LO avaa tiedoston ja näyttää sen oikein.

Solun värit

Solujen taustavärit muutetaan sen arvon mukaiseksi. Solut ovat päällekkäin kolmen ryhmissä.

Poista tekstit

Solujen tekstit voidaan piilottaa muuttamalla muotoilua. Muuta solun muotoiluksi (Type tai Numbers → Format Code) ;;;.

Sierpinskin kolmio

Värittämällä Pascalin kolmiosta parilliset luvut mustiksi ja parittomat valkoisiksi saadaan Sierpinskin kolmio. Eli lasketaan jokaisen solun arvo modulossa 2.

Sierpinksin kolmion pinta-ala on nolla!

Kirjoita soluun

  • A1: alkuluku p, vaikka 3.
  • C3: luku 1
  • A4: yhtälö =A3+1
  • C4: yhtälö =MOD(C3+B3; $A$1)

Kopioi ensin solua C4 paljon (esim. 128 solua) oikealle. Sitten kopioi riviä 4 alaspäin riittäävästi (esim. 127 riviä). Muuta vielä solujen leveydeksi 3 yksikköä.

Poistetaan nollat näkyvistä: File → options → Advanced: "Show a zero in cells. . ." Tai LO:ssa Tools → Options → ja sieltä Zero Values.

Harjoitustehtäviä

  • Vaihda alkuluvun p arvoa, mitä tapahtuu? Miksi?
  • Muuta parittomat luvut (=ISODD()) mustiksi
  • Selvitä mikä on Lucasin vastaavuusperiaate.

Mandelbrotin joukko

Joukko on helppo laskea, sillä siinä toistetaan vain laskua $$z_{n+1} \to z_n^2 + c$$ missä \(z_0=c\) ja \( z \) on kompleksitason luku. Käytämme Table-operaatiota, joka laskee aika kätevästi taulukon arvot.

Aluksi kirjoitetaan perustiedot. Kirjoita soluihin

Huomaa, että taulukko (n: 0,1,2,3,...) saadaan vetämällä alanurkan neliöstä.

Sen jälkeen iteroidaan, eli lasketaan paikkaa \(x_n\) ja \(y_n\) useampia kertoja. Yhtälöt ovat $$x_{n+1}=x_n^2 - y_n^2 + x_0 $$ ja $$y_{n+1} = 2x_n \cdot y_n + y_0$$

Kirjoita yhtälöt soluihin C4 ja C5:

  • C4: =B4*B4 - B5*B5 + $B$2
  • C5: =2*B4*B5 + $B$3

Kopioi niitä eteenpäin \(n\):n alle:

Oleellista on tietää millä indeksillä \(n\) iteraatio hajaantuu. Iteraatio suppenee indeksillä \(n\), jos $$x_n^2 + y_n^2 < 2$$

Kirjoita allaolevat yhtälöt soluihin ja kopio C6:n sisältö jokaiselle \(n\):lle

  • C6: =IF(C4*C4+C5*C5>2;"Kyllä";"Ei")
  • B7: =COUNTIF(C6:AH6;"Ei")
  • B8: =B7

Lopuksi tehdään taulukko ja täytetään se.

Kirjoita ensin \(x\)- ja \(y\)-koordinaatit vaakariville 10 ja pystyriville D. Kaksi riittää molempiin suuntiin; ohjelma osaa jatkaa aritmeettista sarjaa. Kirjoita taulukon vasempaan yläkulmaan (soluun D10) yhtälö, joka ratkaistaan kaikilla taulukon arvoilla. Nyt se on =B8 eli taulukon jokaiseen soluun kirjoitetaan värin numero.

Maalaa äskeinen taulukko ja etsi ylhäältä Data → What-If-Analysis → Data Table tai LO:lla Data → Multiple Operations:

Kirjoita dialogiin, minkä paikalle yhtälössä D10 tulee vaakarivit (B2) ja minkä sijaan pystyrivit (B3). Lisäksi väritetään solut kuten äsken.

Siis Format / Home → Conditional Formatting → Color Scales.

Vielä pitää muuttaa solujen leveys mukavaksi ja zoomata pois.

3-ulotteiset kuvat

Voit myös piirtää maalatusta alueesta pinnan Insert → Other Charts → Surface -käskyllä. LO:hon ei ole vielä implementoitu pinnan piirtoa.

Ilmestyvästä kuvasta kannattaa poistaa kaikki ylimääräinen ja kääntää kuvaa kivaan asentoon. Kääntö onnistuu klikkaamalla kuvaa oikealla napilla ja valitsemalla 3D-rotation. Sopivia arvoja on esimerkiksi:

  • Rotation x: 0 astetta
  • Rotation y: 90 astetta
  • Perspective: 20 astetta

Harjoitustehtäviä

  • Laske värit modulossa 8, eli =MOD(B7,8)
  • Poista värit, eli tutki ainoastaan hajaantuuko sarja. =IF(B7=32;0;1)
  • Lisää iteraatioita eli \(n\):ää
  • Vaihtele \(x\)- ja \(y\)-akselien arvovälejä
  • Selvitä mikä on imaginaariyksikkö \(\imath\)
  • Laske käsin paperilla \((x+\imath y)^2\) ja \((x+\imath y)^3\)
  • Mikä on kvaternio?

Julian joukko

Gaston Julia keksi nimeään kantavan joukon jo vuonna 1918. Se on melkein sama kuin Mandelbrotin, eli $$z_{n+1} = z_n^2 +c$$ mutta parametrin \(c\) saa valita itse. Siis Julian joukkoja on ääretön määrä.

Kannattaa kopioida kaikki muu paitsi taulukko edellisestä työstä ja liittää se uuteen. Tee samanlainen taulukko kuin edellä, mutta nyt sinne annetaan arvot B4 ja B5.

LO:ssa Data → Multiple Operations.

Harjoitustehtäviä

  • Etsi jänis, kun \(x_0=-0.123\) ja \(y_0 = 0.745\)
  • Mandelbrotin joukon reuna (dendriittinen fraktaali) saadaan kun \(x_0=0\) ja \(y_0 = 1\)
  • Jos \(x_0=-0.391\) ja \(y_0 = -0.587\), syntynyttä kuviota sanotaan Siegelin levyfraktaaliksi
  • Kokeile \(x_0=-0.1\) ja \(y_0=0.651\)
  • Piirrä vielä muutama hieno kuva 3d-pintana

Huomaa, että vastaavasti voit tehdä vaikka Conwayn Game of Lifen.

Kaoottinen rata

Kaaosteoria paljasti alkuarvojen merkityksen kappaleen radan määrityksessä. Syntyneet kuvat nimetään yhtälön parametrien mukaan.

Parametrit

Ratkaistava yhtälön \(x\)-koordinaatti on $$x_\textrm{uusi} = ax + by +e $$ ja \(y\)-koordinaatti vastaavasti $$u_\textrm{uusi} = cx + dy +f\textrm{.}$$ Otetaan kaksi kappaletta molempia yhtälöitä. Ensin muunnetaan kirjaimet numeroiksi.

Muunnos on =(CODE(UPPER(C2))-65)/10-1,2. Nyt kaikki kirjaimet ovat välillä \(-1.2 \leq x \leq 1.2\). Miksi?

Lasketaan parametreja kuvaavat todennäköisyydet eli pinta-alat (determinantit). Yhtälö on \(J = | ad - bc|\), eli koodina kirjoitettuna alla olevan kuvan mukainen.

Tee sama molemmille yhtälöille.

Alapuolella lasketaan pinta-alan \(J_0\) suhde kokonaispinta-alaan \(J_0+J_1\).

Yhtälän iteroiminen: yhtälö

Sarakkeeseen A kirjoitetaan =RAND() eli pseudosatunnainen luku. B-sarakkeeseen (Yhtalo) lasketaan satunnaislukua hyödyntäen kumpaa parametrisarjaa käytetään. Jos satunnaisluku on pienempi kuin pinta-alan \(J_0\) suhde kokonaisalaan, niin käytä \(0\)-parametrisointia.

Käytä taulukkolaskennan IF-funktiota. Huomaa $-merkit.

Yhtälön iteroiminen: parametrit

Kopioidaan oikeat parametrit ylhäältä. Jokaisen alle kirjoitetaan vastaava IF-lause ja sitä vastaavat parametrit. Jos Yhtalo on nolla, niin käytetään nolla-parametreja.

Yhtälön iteroiminen: rata

Lopuksi kirjoitetaan liikeyhtälöt \(x\)- ja \(y\)-suunnille käyttäen vieressä olevia oikeita parametreja. Ensimmäinen rivi (vaakarivilla 10) on alkuarvo joka on tässä nolla.

Yhtälön iteroiminen: kopioi

Koska ensimmäisellä rivillä (rivi 10) on alkuarvot, älä kopioi sitä. Siis ensin pitää kopioida muut sarakkeet riville 11 ja sitten kopioida riviä 11 alaspäin n. 1500 riviä.

Piirrä \(xy\)-kuvio, se on siinä.

Harjoitustehtäviä

Kokeile muita parametrisointeja. Esimerkiksi parametreillä

  • GNGUVETDNSWK
  • IFEROWOSIRQI
  • IPUDJIHVEIQY
  • KJPSVUHDVJNR
  • KWMRVRUCOWWB
  • KDOWQMMVEMWD
  • IIDQIKFMHUSK
  • GOHRHRNVFLNO

Vielä lisää parametrisointeja.

  • LGMRYBSCSSQR
  • MCGMGGJQORXH
  • RFUSIENLJVCN
  • NYDEQPKLOOKY
  • TTGUJNMRLWBR
  • TLPVPLMQEIFC
  • UIPUDROEPLPM

Lisäksi, Piirrä Lorenz-attraktori.

Lisää mielenkiintoisia juttua

LS-LUMA-keskuksesta

ainakin kaikille satakuntalaisille ja varsinais-suomalaisille kouluille sekä muille netin käyttäjille.

Ota yhteyttä Markku.LeinoⒶutu.fi

Tai ilmoittaudu sähköpostilistalle

www.luntti.net/FLL/ilmoittaudu

Muuta LUMAa

  • Mobiili laboratorio valmistuu kesällä
  • ViLLE: sähköinen oppimisympäristö
  • Ohjelmointia matematiikan opetukseen
  • Tekniikkaa ja legoja
  • Yhteistyötä opettajien välillä
  • Arduino-oppia käsitöihin
  • Lukioille MOOC-ohjelmointia syksystä
  • Opettajille täsmäkoulutusta mm. CAS, sähköiset kokeet, ATK-opetus (kuvankäs. ohjelmointi, 3d-grafiikka), sähköinen GE, tabletit, legot, jne
  • Uuden LOPSin mukaista MAA1-materiaalia tulossa
  • Tapahtumia: Julia Collins toukokuussa LUMA-päivät kesäkuussa
  • Tarjoaa Lounais-Suomen LUMA-keskus.

Lisämateriaalia

Kaikki materiaali on netistä lainattu.