Free Vibration
Table of Contents
$$
\large
e^{i\theta} = \cos\theta + i\sin\theta $$
Example
Recap: Vector Representation in Circular Motion
$$\text{ How to represent } v \text{ and } a \text{ in a cross product form}\\$$$$\begin{align*} \vec v &= \vec \omega \times \vec r\\ \vec a &= \vec \omega \times \vec v\\ & = \vec \omega \times (\vec \omega \times \vec r ) \end{align*}$$Show $ z(t) = r e^{-j\omega t} $ also satisfies $$\frac{d^2z(t)}{dt^2} + \omega^2 z(t) = 0$$
Given the differential equation
%%processing
Ball ball;
PImage spring;
void setup() {
size(600, 100);
background(255);
PVector loc = new PVector(width/2 + 100, height/2);
ball = new Ball(loc);
spring = loadImage("./image_files/spring_image_02.png");
}
void draw() {
background(255);
fill(0);
rect(0, 0, 100, height);
ball.run();
image(spring, 96, height/2 - 20, ball.location.x - ball.d/2 - 92, 40);
}
class Ball {
int d = 60;
PVector location;
PVector velocity;
PVector acceleration;
PVector center = new PVector(width/2, height/2);
Ball(PVector loc) {
location = loc.get();
velocity = new PVector(0, 0);
acceleration = new PVector(0, 0);
}
void run() {
applyForce();
update();
display();
}
void display() {
noStroke();
fill(175);
ellipse(location.x, location.y, d, d);
}
void applyForce() {
PVector force = PVector.sub(location, center);
force.normalize();
force.mult(-1);
force.mult(0.5);
acceleration = force;
}
void update() {
velocity.add(acceleration);
velocity.limit(100);
location.add(velocity);
}
}
Example 1: Initial Conditions (pictorial interpretation)
Example 2: Initial Conditions (pictorial interpretation)
From Nonlinear to Linear
$$ \begin{align*} -mg\sin\theta = ma = ml\ddot\theta \implies & \ddot \theta + \frac{g}{l}\sin \theta = 0\\ \implies & \ddot \theta + \frac{g}{l}\theta = 0, \qquad \omega^2 = \frac{g}{l} \end{align*}$$
%%html
<iframe
width="420" height="315"
src="https://www.youtube.com/embed/YlSC2DfphaY" frameborder="0" allowfullscreen>
</iframe>
Note
'Equation of motion' means
'Simple harmonic motion' means
$$
z(t) = e^{j \omega t} = \cos \omega t + j \sin\omega t$$
t = 0:0.01:1;
f = 1;
w = 2*pi*f;
z = exp(1j*w*t);
plot(real(z),imag(z),'.'), axis equal, ylim([-1.1 1.1])
subplot(2,1,1), plot(t,real(z),'.')
subplot(2,1,2), plot(t,imag(z),'.')
%%html
<iframe
width="560" height="315" src="https://www.youtube.com/embed/IYeV2Wq82fw" frameborder="0" allowfullscreen>
</iframe>
t = 0:0.005:3;
f1 = 4;
f2 = 5;
w1 = 2*pi*f1;
w2 = 2*pi*f2;
A = exp(1j*w1*t);
B = exp(1j*w2*t);
subplot(3,1,1), plot(t,real(A))
subplot(3,1,2), plot(t,real(B))
subplot(3,1,3), plot(t,real(A+B))
plot(real(A+B),imag(A+B)), axis equal, xlim([-3,3])
fs = 44100; % sampling frequency
T = 5; % seconds
t = linspace(0,T,fs*T); % time variable
x1 = exp(1j*2*pi*440*t); % pure sine wave at 440 Hz
x2 = exp(1j*2*pi*441*t); % pure sine wave at 441 Hz
sound(real(x1),fs)
sound(real(x2),fs)
x = x1 + x2;
sound(real(x),fs)
Example: The Bell of King Seongdeok (Emile Bell)
%%html
<iframe width="420" height="315"
src="https://www.youtube.com/embed/7YEyMLX3sD8" frameborder="0" allowfullscreen></iframe>
fs = 44100; % sampling frequency
T = 5; % seconds
t = linspace(0,T,fs*T); % time variable
r = 0.3;
x1 = exp(-r*t).*exp(1j*2*pi*440*t); % pure sine wave at 440 Hz
x2 = exp(-r*t).*exp(1j*2*pi*441*t); % pure sine wave at 441 Hz
x = x1 + x2;
sound(real(x),fs)
%%html
<iframe width="560" height="315"
src="https://www.youtube.com/embed/vDulP6vTa9g" frameborder="0" allowfullscreen>
</iframe>
r = 0.3;
f = 1;
w = 2*pi*f;
t = 0:0.01:10;
z = exp(-1*r*t).*exp(1j*w*t);
plot(real(z),imag(z)), axis equal, ylim([-1.1,1.1])
plot(t,real(z),t,exp(-1*r*t),'r--',t,-exp(-1*r*t),'r--')
$$ \left\{ (\gamma ^2 - \omega^2 + j2\gamma \omega) e^{-(\gamma +j\omega)t} \right\} + 2\gamma \left\{ \left( -(\gamma + j\omega) e^{-(\gamma +j\omega)t}\right) \right\} + \left(\gamma^2 + \omega^2 \right) \left\{ e^{-(\gamma +j\omega)t} \right\} \\
= a(t) + 2\gamma \upsilon(t) + \left(\gamma^2 + \omega^2 \right) z(t) = \frac{d^2z(t)}{dt^2} + 2\gamma \frac{dz(t)}{dt} + (\gamma^2 + \omega^2) z(t) = 0$$
$$
\begin{align*}
m \ddot x(t) + c \dot x(t) + k x(t) &= 0 \implies \\
\ddot x(t) + 2\zeta \omega_n \dot x(t) + \omega_n^2 x(t) &= 0 \qquad \text{where } \; \omega_n^2 = \frac{k}{m} = \gamma^2 + \omega^2
\end{align*}$$
%plot -s 800,250
f = 1;
wn = 2*pi*f;
zeta = [0.1 0.2 0.5 0.8];
t = 0:0.01:10;
for i = 1:4
r = zeta(i)*wn;
w = wn*sqrt(1-zeta(i)^2);
z = exp(-1*r*t).*exp(1j*w*t);
subplot(1,4,i), plot(real(z),imag(z)), grid on
axis equal, axis([-1.1,1.1 -1.1 1.1])
title(['\zeta = ',num2str(zeta(i))],'fontsize',8)
end
for i = 1:4
r = zeta(i)*wn;
w = wn*sqrt(1-zeta(i)^2);
z = exp(-1*r*t).*exp(1j*w*t);
plot(t,real(z)), hold on
end
hold off
legend(['\zeta = ',num2str(zeta(1))],['\zeta = ',num2str(zeta(2))],...
['\zeta = ',num2str(zeta(3))],['\zeta = ',num2str(zeta(4))])
%%processing
Ball ball;
PImage spring;
float damping_c = 0.02;
void setup() {
size(600, 100);
background(255);
PVector loc = new PVector(width/2 + 100, height/2);
ball = new Ball(loc);
spring = loadImage("./image_files/spring_damper_image.png");
}
void draw() {
background(255);
fill(0);
rectMode(CORNER);
rect(0, 0, 100, height);
ball.run();
image(spring, 98, height/2 - 20, ball.location.x - ball.d/2 - 96, 40);
}
class Ball {
int d = 60;
PVector location;
PVector velocity;
PVector acceleration;
PVector center = new PVector(width/2, height/2);
Ball(PVector loc) {
location = loc.get();
velocity = new PVector(0, 0);
acceleration = new PVector(0, 0);
}
void run() {
springForce();
damping();
update();
display();
}
void display() {
noStroke();
fill(150);
rectMode(CENTER);
rect(location.x, location.y, d, d);
}
void damping() {
float normal = 1;
PVector damping = velocity.get();
damping.normalize();
damping.mult(-1);
damping.mult(damping_c*normal);
acceleration.add(damping);
}
void springForce() {
PVector force = PVector.sub(location, center);
force.normalize();
force.mult(-1);
force.mult(0.3);
acceleration.add(force);
}
void update() {
velocity.add(acceleration);
velocity.limit(100);
location.add(velocity);
acceleration.mult(0);
}
}
Example: Door lock
%%html
<iframe width="560" height="315"
src="https://www.youtube.com/embed/C2P_5Q8XROk" frameborder="0" allowfullscreen>
</iframe>
Example: Torsional Pendulum
%%html
<iframe width="420" height="315"
src="https://www.youtube.com/embed/pnhE_-fW0pE" frameborder="0" allowfullscreen>
</iframe>
Example: unicopter
%%html
<iframe width="560" height="315"
src="https://www.youtube.com/embed/N8UX_TDMn-Y" frameborder="0" allowfullscreen>
</iframe>
%%javascript
$.getScript('https://kmahelona.github.io/ipython_notebook_goodies/ipython_notebook_toc.js')