4 Harmoninen voima
Harmoninen voima kohdistuu aina tiettyyn tasapainoasemaan ja on suoraan verrannollinen kappaleen poikkeamaan tasapainoasemasta. Tästä esimerkkinä on jousivoima \[\bar{F} = -k\bar{x}, \] missä \(k\) on jousivakio ja \(\bar{x}\) on poikkeama tasapainoasemasta.
Tässä tehtävässä tavoitteena on ohjelmoida laatikko värähtelemään jousen päässä vaakasuoralla alustalla käyttäen hyväksi jousivoiman yhtälöä. Lisäksi tutkimme, kuinka jousen jousivakio ja laatikon massa vaikuttavat värähtelyyn.
Tehtävät
Osa 1
Koodiin on valmiiksi luotu jousi ja sen päähän laatikko:
paino = box(pos = vector(10,0,0),height=2, width=2, color = color.red)
jousi = helix(pos=vector(0,0,0), axis=paino.pos, radius=0.5, coils = 10)
tasapainoasema = arrow(pos=vector(7.5,-5,0), axis = vector(0,3,0))
- Luo muuttujat "k" (jousivakio, arvo vaikka 10), "paino.m" (laatikon massa, arvo esim. 10), "paino.nopeus" (laatikon nopeus alussa, arvo 0).
- Luo muuttujat aika ja ajan muutos. (vinkki: katso mallia edellisistä) Silmukka: (luo seuraavat silmukan sisään)
- Luo muuttuja "x", joka on laatikon poikkeama tasapainoasemasta. Sovitaan, että tasapainoasema on x-akselilla ja sen x-koordinaatti on 7,5. Mieti, miten saat kirjoitettua poikkeaman laatikon x-koordinaatin paino.pos.x ja tasapainoaseman avulla.
- Luo muuttuja "F" (jousivoima) ja kirjoita sille lauseke jousivakion ja poikkeaman x avulla.
- Muuta painon nopeutta eli kirjoita nopeudelle uusi arvo yhtälön \(v = v_0 + a\Delta t\) mukaisesti. Ratkaise laatikon kiihtyvyys jousivoiman F ja Newtonin toisen lain F = ma avulla. (oletetaan, että paino liikkuu kitkattomalla pinnalla.
- Muuta vielä laatikon paikkaa nopeuden avulla (yhtälö: \(s = s_0 + v\Delta t\) ). Lisäksi päivitä jousi kulkemaan laatikon mukana (jousi.axis pitää olla sama kuin laatikon paikka). Lopuksi kasvata aikaa yhdelle ajan muutos -askeleella.
k = 50 # N/m
paino.m = 10 # kg
paino.nopeus = 0
# tasapainoasema (7.5, 0 , 0)
x = paino.pos.x - 7.5
# Jousivoima
F = -k * x
# -kx = ma
# a = -kx / m -> a = F/m
paino.nopeus = paino.nopeus + F/paino.m*dt
paino.pos = paino.pos + vector(paino.nopeus,0,0)*dt
jousi.axis = paino.pos
t = t + dt
Osa 2
Tee ennuste siitä, miten sekä jousivakion että laatikon massan muuttaminen vaikuttavat laatikon värähtelyyn. Tutki tilannetta muuttamalla kyseisiä arvoja.