ODEs
Feb 14, 2020
(3.1)
(a)
(b)
Ansatz:
We have three cases:
- => Overdamped. Will go to steady state without oscillating.
- => Critically-damped. Will return to steady state as quickly as possible.
- => Underdamped. Will overshoot zero faster than critically-damped, and start oscillating.
(c)
Click here for an interactive Google Colab notebook
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
m = 1
k = 1
gamma = 0.1
omega = np.arange(0, np.pi, .001)
A = 1 / (-m * omega ** 2 + 1j * gamma * omega + k)
plt.plot(omega, np.absolute(A))
plt.ylabel("Magnitude")
plt.xlabel("Frequency")
plt.show()
plt.plot(omega, np.angle(A))
plt.ylabel("Phase")
plt.xlabel("Frequency")
plt.show()
(d)
Try
Hmmm, to be continued. Useful links: 1, 2
(e)
Useful link: 1
(f)
Not sure what lower order correction means, yet
(3.2)
For each particle:
For brevity, denote
Now, we find the eigenvalues and then eigenvectors so we can eventually get the normal modes:
(3.3)
Apply two sided z-transform:
Let’s define , thus:
And apply the inverse z-transform:
Now for the frequency response, set and look at the asymptotic output (3.57):
Click here for an interactive Google Colab notebook
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
alpha = 0.1
k = 100
delta = 1
omega = np.arange(0, 100, .01)
y = ((1 - alpha) * np.exp(1j * omega * delta * (k + 1))) / (np.exp(1j * omega * delta) - alpha)
plt.figure(figsize=(12, 8))
plt.plot(omega, np.absolute(y))
plt.ylabel("Amplitude")
plt.xlabel("Frequency")
plt.show()