钟摆模型主要物理参量如下图所示:
钟摆模型
钟摆物理方程
syms m a g(t)eqn=m * a==-m * g * sin()对于有长度的摆锤,摆锤的加速度:
syms reqn=subs(eqn,a,r*diff(theta,2))使用隔离,隔离方程eqn中的角加速度。得到:
eqn=isolate(eqn,diff(,2))将常数和频率收集到一个参数中,该参数也称为固有频率:
syms_ 0 eqn=subs(eqn,g/r,omega_0^2)
运动方程是非线性的,所以很难解析求解。假设角度很小,用泰勒展开式将方程线性化:syms xapprox=taylor(sin(x),x,' Order '2);近似=subs(近似,x,theta(t))eqnlineal=subs(eqn,sin(theta(t)),近似)
用溶解解方程组。将初始条件指定为第二个参数。通过使用假设来简化解决方案:syms theta _ 0 theta _ t0theta _ t=diff(theta);cond=[theta(0)==theta_0,theta _ t(0)==theta _ t0];假设(omega_0,' real ')tasol(t)=d solve(eqn linear,cond)
钟摆周期:
gValue=9.81右值=1;omega _ 0值=sqrt(gValue/r值);t=2 */_ 0值;_ 0值=0.1 *%解只对小角度有效theta _ t0Value=0;%初始静止。vars=[omega _ 0 theta _ 0 theta _ t0];values=[omega _ 0 value theta _ 0 value theta _ t0Value];thetaSolPlot=subs(thetaSol,vars,values);
画出钟摆运动:fplot(thetaSolPlot(t*T)/pi,[0 5]);网格打开;题目('谐摆运动');xlabel(' T/T ');y标签(' \ theta/\ pi ');钟摆动画:x _ pos=sin(thetaSolPlot);y _ pos=-cos(thetaSolPlot);fanimator(@fplot,x_pos,y_pos,' ko '' MarkerFaceColor '' k '' AnimationRange '[0 5 * T]);坚持住;fanimator(@(t) plot([0 x_pos(t)],[0 y_pos(t)],' k-'),' AnimationRange '[05 * T]);fanimator(@(t) text(-0.3,0.3,' Timer: ' num2str(t,2) ' s '' AnimationRange '[0 5 * T]);