Nihalo

V tem zvezku bomo pokazali, kako v Mathematici simuliramo nihalo.

Diferencialna enačba za nihalo

Diferencialna enačba, ki opisuje gibanje nihala dolžine l, mase m pri gravitaciji g je

(((d^2)θ)/(d(t^(2 ))))+(ω^2)Sin[θ]=0

kjer je ω=(Sqrt[g/l]) in θ kot nihala glede na navpičnico. Enačbo običajno lineariziramo:

(((d^2)θ)/(d(t^(2 ))))+(ω^2)θ=0

Zanima nas grafična predstavitev gibanja in primerjava med linearizirano in prvotno enačbo. Vse skupaj še nekoliko poenostavimo. Naj bo ω=1, nihalo pa naj bo v začetku v mirovni legi, njegova kotna hitrost pa 1:

θ[0]==0, ((dθ)/(dt))[0]==1

Rešitev lienarne enačbe

Diferencialno enačbo rešimo z DSolve.

DSolve[{θ''[t]+θ[t]==0,θ[0]==0, θ'[0]==1},θ[t],t]

Mathematica je odgovorila s seznamom rešitev. Ker je ena sama rešitev, je to seznam z eno rešitvijo, ki je predstavljena s prepisovalnim pravilom “θ[t] se prepiše v Sin[t]”. Več o takih pravilih bomo izvedeli naslednjič, tokrat le pokažimo recept, kako rešitev “izluščimo” iz odgovora brez uporabe Copy & Paste (ki se ne spodobi za resnega programerja):

ClearAll[resitev]
resitev[t_] = θ[t]/.First[DSolve[{θ''[t]+θ[t]==0,θ[0]==0, θ'[0]==1},θ[t],t]]

Narišimo graf v odvisnosti od časa:

Plot[resitev[t],{t,0,6π}]

Naredimo še animacijo:

Animate[
Graphics[{Line[{{0,0},{Sin[resitev[t]],-Cos[resitev[t]]}}], Disk[{Sin[resitev[t]], -Cos[resitev[t]]},0.1]}, PlotRange->{{-1.1,1.1},{-1.1,1.1}}]
,{t,0,10}]

Rešitev nelienarne enačbe

Ali zna Mathematica rešiti tudi nelinearno enačbo?

ClearAll[resitev2]
resitev2[t_]= θ[t]/.First[DSolve[{θ''[t]+Sin[θ[t]]==0,θ[0]==0, θ'[0]==1},θ[t],t]]

Zna! Narišimo graf:

Plot[resitev2[t],{t,0,6π}]

V bistvu si želimo primerjati obe rešitvi:

Plot[{resitev[t],resitev2[t]},{t,0,6π}]

Animate[
Graphics[{
Red,
Line[{{0,0},{Sin[resitev2[t]],-Cos[resitev2[t]]}}], Disk[{Sin[resitev2[t]], -Cos[resitev2[t]]},0.1],
Blue,
Line[{{0,0},{Sin[resitev[t]],-Cos[resitev[t]]}}], Disk[{Sin[resitev[t]], -Cos[resitev[t]]},0.1]}, PlotRange->{{-1.1,1.1},{-1.1,1.1}}]
,{t,0,10}]

Nalogi

Primerjava različno dolgih nihal

Sestavi animacijo, ki prikazuje hkratno nihanje desetih nihal različne dolžine, a z isto začetno amplitudo. Ali so nihajni časi odvisni od dolžine nihala? Ali je odgovor odvisen od tega, ali uporabimo linearni in nelinearni model?

Nihalo, ki se na vrhu ustavi

Izračunaj začetno hitrost nihala, ki je na začetku v najnižji točki in se ustavi, ko pride v najvišjo lego (namig: vsa začetna kinetična energija se pretvori v potencialno). Za reševanje enačb uporabi Solve. Naredi animacijo in nariši graf, ki prikazuje dogajanje.