6 Poikittainen aaltoliike

Tehtävässä on tarkoitus rakentaa simulaatio köydestä, jolla voimme tutkia poikittaista aaltoliikettä. Köysi rakennetaan yksittäisistä palloista. Koodissa on aluksi luotu muuttuja "pallo_lkm", jolla voimme säätää köydessä olevien pallojen lukumäärää.

Käydään läpi kuinka pallot on luotu:

  • Luodaan ensin lista nimeltä "pallot". Tähän listaan säilömme luomamme pallot.
  • Sitten luodaan for-silmukka, jossa i käy läpi arvot 0 - "pallo_lkm" lukumäärä: for i in range (pallo_lkm).
  • Silmukan sisällä luodaan punainen pallo, JOS i on jaollinen viidellä. (Eli joka viides pallo on punainen. (if)
  • Muutoin luodaan valkoinen pallo. (else)

Tehtävät:

Osa 1 - simulaation luominen

  1. Luo muuttuja "k", joka kuvaa köyden jäykkyyttä. Aseta arvoksi vaikka 50.
  2. Luo muuttuja "massa", joka on nyt yksittäisten, käyden muodostavien pallojen massa. Anna arvoksi melko pieni arvo, esim. 0,05.
  3. Luo muuttuja "vaim_kerroin", joka kuvaa aallon vaimenemista köydessä. Anna arvoksi esim. 3.

  4. Seuraavaksi koodissa on muutama funktio sitä varten, että saamme liikutettua hiirellä köyden ensimmäistä palloa. Siirrytään silmukkaan:
  5. Luo while-silmukka, joka pyörii "ikuisesti" (eli niin kauan, kun ohjelma jotenkin keskeytetään) ja aseta haluamasi rate.
  6. Seuraavaksi luo while-silmukan sisään for-silmukka, jossa i käy läpi arvot 1 - pallojen lukumäärä. Näin kierros päästään aloittamaan toisesta pallosta, sillä ensimmäisen pallon indeksi on 0 (pallot[0] on siis ensimmäinen pallo)

  7. Tässä silmukassa haluamme siis tehdä kaikille köyden palloille jotain. Koska voimme hiiren avulla liikuttaa ensimmäistä palloa, haluamme, että ensimmäisen pallon liike vaikuttaa muihin palloihin. Tilanteen voi mallintaa esim. niin, että ajatellaan kahden peräkkäisen pallon väliin jousi, jolla on tietty jousivakio (köyden jäykkyys). Venymäksi voidaan ajatella pallojen y-koordinaattien erotus. Silloin kun tämä erotus on nolla, pallot ovat vierekkäin eikä palloihin kohdistu venymästä aiheutuvaa voimaa. (\(F=-kx\)) Tässä tapauksessa meidän täytyy vielä vaimentaa palloon kohdistuvaa voimaa termillä \(bv\), missä \(b\) on vaimennus kerroin ja \(v\) on pallon nopeus. Kokonaisuudessaan palloon kohdistuva voima siis olisi \(F=-kx-bv\), missä \(x\) siis on pallon sitä edeltävän pallon y-koordinaattien erotus.
  8. Kirjoita for-silmukan sisään palloon i (pallot[i]) kohdistuvan voiman suuruus.
  9. Kirjoita for-silmukan sisään pallon i uusi nopeus siihen kohdistuvan voiman avulla.
  10. Kirjoita for-silmukan sisään pallon i uusi paikka siihen kohdistuvan voiman avulla.
  11. Kasvata lopuksi while-silmukan sisällä aikaa ajan muutoksella.
  12. Silmukat kokonaisuudessaan:

Osa 2 - simulaation tutkiminen

  1. Mitä voit sanoa poikittaisesta aaltoliikkeestä simulaation perusteella (Miten syntyy? Mikä ilmiössä liikkuu ja mihin suuntaan?)
  2. Tee ennuste siitä, miten köyden jäykkyys vaikuttaa aallon etenemisnopeuteen. Tutki asiaa.
  3. Tutki, miten vaimenemiskerroin vaikuttaa aaltoliikkeeseen.