簡諧運動

在這一個單元我們要介紹簡諧運動,簡諧運動雖然是一維空間的運動,但是它的特點但是作用力並不是均勻的常數作用力,而是一個隨著位置改變的力量,這個力量稱為恢復力,力量方向總是指向平衡點,也就是我們在這個運動所經常定義的原點。

解說簡諧運動的影片


  1. 簡諧運動的精確解

  2. 簡諧運動的方程式如下: \[F=ma=-kx\] \[m\frac{d^2x}{dt^2}=-kx\] 方程式的解: \[ x(t)=A \cos(\omega_0 t)\] \[ \omega_0=\sqrt{\frac{k}{m}} \] 球的位置向量直接以這個精確解的函數關係代進去,就可以模擬球的簡諧運動。\(\omega_0\)稱為震動系統的自然(角)頻率,由震盪子的質量m和彈簧的彈性係數k決定。簡諧震盪的頻率和週期可以分別表示為: \[f=\frac{\omega}{2\pi}; \,\,\, T=\frac{2\pi}{\omega} \]

    Web VPython 3.2
    size = 0.3  #球的半徑
    r = 0.      #平衡點的位置
    k = 10      #彈簧的彈性係數
    m = 2     #簡諧震盪物體的質量
    w=sqrt(k/m) #簡諧震盪的角頻率
    A=3.        #簡諧震盪的振福
    scene = canvas(width=600, height=400, center=vec(0, 0, 0))
    ball = sphere(radius = size,  color=color.red)
    ball.pos = vector(r+A ,0, 0)   #簡諧震盪物體的初始位置
    arr=arrow(pos=ball.pos*2, axis=vec(-4*A,0,0), \ 
         shaftwidth=0.02, headwidth=0.06)
    arrow(pos=vec(0,-2,0), axis=vec(0,4,0), \ 
         shaftwidth=0.02, headwidth=0.06)
    t=0.; dt = 0.01; NR=int(1/dt)   
    while True:
        rate(NR)
        #球的位置向量直接以精確解的函數代進去
        ball.pos=vector(r+A*cos(w*t),0,0) #直接用x(t)函數來控制球的運動位置
        t=t+dt
    



    glowscript(PS-SHO-1.py)





  3. 簡諧運動的差分近似

  4. \[a(t)=\frac{dv}{dt} \rightarrow v(t+dt) \simeq v(t)+ a(t)dt\] \[v(t)=\frac{dx}{dt} \rightarrow x(t+dt) \simeq x(t)+ v(t)dt\] \[f=-kx=ma; \,\,\, a=-\frac{k}{m}x\] \[v(t+dt) \simeq v(t) - \frac{k}{m}x \cdot dt\]
    Web VPython 3.2
    size = 0.3  #球的半徑
    r = 0.      #平衡點的位置
    k = 10      #彈簧的彈性係數
    m = 2     #簡諧震盪物體的質量
    w=sqrt(k/m) #簡諧震盪的角頻率
    A=3.        #簡諧震盪的振福
    scene = canvas(width=600, height=400, center=vec(0, 0, 0))             
    ball = sphere(radius = size,  color=color.red)                              
    ball.pos = vector(r+A ,0, 0)   #簡諧震盪物體的初始位置
    ball.v=vec(0,0,0)
    arr=arrow(pos=ball.pos*2, axis=vec(-4*A,0,0), shaftwidth=0.02, headwidth=0.06)
    arrow(pos=vec(0,-2,0), axis=vec(0,4,0), shaftwidth=0.02, headwidth=0.06)
    scene.pause('click')
    t=0.; dt = 0.01; NR=int(1/dt)   
    while True:
        rate(NR)
        ball.v+=(-k*ball.pos/m)*dt
        ball.pos+=ball.v*dt
        t=t+dt
    



    glowscript(PS-SHO-2.py)





  5. 簡諧運動的模擬中加入彈簧

  6. GlowScript 3.0 VPython
    R=0.3; r=0.; k=20.; m=2.; A=3      
    w=sqrt(k/m) 
    scene=canvas(width=600, height=400, center=vec(0, 0, 0))
    ball1=sphere(pos=vec(r+A ,0, 0),radius=R, color=color.red)
    pin=vec(-5,0,0)
    arr=arrow(pos=ball1.pos*2, axis=vec(-4*A,0,0), \ 
    shaftwidth=0.02, headwidth=0.06) 
    spring=helix(pos=pin,axis=ball1.pos-pin,radius=0.5,color=vec(0.3,0.3,1))
    scene.pause('click to start')
    t=0.; dt = 0.1; NR=int(1/dt); 
    while True:
        rate(NR*1)
        ball1.pos.x=A*cos(w*t)
        spring.axis=ball1.pos-pin
        t=t+dt
    



    glowscript(PS-SHO-3.py)