Eksempel 15.4 elastisk_pendel.py

# Program elastisk_pendel.py
import numpy as np
import matplotlib.pyplot as plt

# Definerer størrelser
tMax = 5 # tid maks [s]
dt = 0.0001 # tidsintervall [s]
n = int(tMax/dt) # antall tidspunkter
t = np.linspace(0,tMax,n) # tidsliste [s]

m = 0.1 # masse [kg]
k = 2.5 # fjærkonstant [N/kg]

x = np.zeros(n,float) # posisjon startliste [m]
v = np.zeros(n,float) # fart startliste [m/s]
a = np.zeros(n,float) # akselerasjon startliste [m/s^2]

# Setter startverdier
x[0] = 0.05 # posisjon startverdi [m]
v[0] = 0 # fart startverdi [m/s]
a[0] = -k/m*x[0] # akselerasjon startverdi [m/s^2]

# Steg for steg beregning av x-, v- og a-lister
for i in range(n-1):
x[i+1] = x[i] + v[i]*dt # posisjon [m]
v[i+1] = v[i] + a[i]*dt # fart [m/s]
a[i+1] = -k/m*x[i+1] #akselerasjon [m/s^2]

# Akselerasjonsgraf
plt.figure(1)
plt.plot(t,a,'-r')
plt.grid()
plt.title ('Akselerasjon')
plt.xlabel('$t$ / s')
plt.ylabel('$a$ / m/s$^2$')

# Fartsgraf
plt.figure(2)
plt.plot(t,v,'-b')
plt.grid()
plt.title ('Fart')
plt.xlabel('$t$ / s')
plt.ylabel('$v$ / m/s')

# Posisjonsgraf
plt.figure(3)
plt.plot(t,x,'-g')
plt.grid()
plt.title ('Posisjon')
plt.xlabel('$t$ / s')
plt.ylabel('$s$ / m')

plt.show()

Programmet lager figurene:

Posisjonsgrafen til en elastisk pendel

Fartsgrafen til en elastisk pendel

Akselerasjonsgrafen til en elastisk pendel