单摆运动过程的MATLAB&Simulink建模与仿真

2020-04-14 00:41

单摆运动过程的MATLA&Simulink建模与仿真

作者:王军 Email:wj820420@126.com

本文章为一次学习总结,发到网上供大家参考,希望大家转载的时候不要匿名篡改,保持良好的学术作风。

在高中物理学习过程中,我们接触了单摆.当时的单摆定义是:

细线一端固定在悬点,另一端系一个小球,如果细线的质量与小球相比可以忽略,球的直接与线的长度相比也可以忽略,这样的装置就叫做单摆.

根据上面的定义,得出以下试验结论. (1)当摆角很小时,周期与振幅无关; (2)周期与摆球质量无关;

(3)单摆振动的周期与摆长有关;单摆周期的平方与摆长成正比.

以上结论是在理想条件下得到的结论,现对这个理想条件下的单摆进行分析与仿真,将仿真结果与以上结论进行对比验证.

1 理想模式下单摆的数学模型.

首先根据理想条件,摆线质量忽略不计,空气阻力忽略不计.

设摆线长度为l,摆球质量为m,重力加速度为g,系统的初始时刻为t=0,在任意t≥0时刻摆球的线速度为v(t),角速度为ω(t),角位移?(t),以单摆的固定位置为坐标原点建立直角坐标系,水平方向为x轴方向.示意图如下所示:

在 t 时刻,摆锤所受切向力ft(t)是重力mg在其运动圆弧切线方向上的分力,即

ft(t) ??mg sin?(t)

完全理想条件下,根据牛顿第二运动定律,切向加速度为: a(t) ??g sin?(t)

因此得到单摆的运动微分方程组:

dv(t)dt??g sin?(t) (1)

1

d?(t)dt???(t)??v(t)l (2)

使用欧拉算法求解:将dv(t) ??v(t ??dt) ??v(t)和d?(t) ???(t ??dt) ??(t)代入 式(1)及式(2)中,并以仿真步进量Δ作为dt 的近似,得到基于时间的递推方程:

v (t +Δ)= v (t)+gsin?( t)Δ (3)

?(t +Δ)=?(t)?

v(t)lΔ (4)

注:本递推方程仅适合于摆角???2,也就是要求无论初始速度多少,摆角的最大

幅度不能超过90度,如果超过90度比并且初始速度为0时放手小球会自由下落一段时间才能摆动,本递推方程无法描述. 据此编写仿真程序:

在MALAB命令窗口输入以下命令: dt=0.0001; %仿真步进 T=16; %仿真时间长度 t=0:dt:T;%仿真计算时间序列 g=9.8; L=1.5;

th0=1.5; %初始摆角设置,不能超过π/2,即要求球摆动开始时绳子就要有拉力,如果初始摆角超过π/2,则球会经过一阵自由落体后才能进行摆动,上面的递推方程不能满足该情形. v0=0; %初始摆速设置

v=zeros(size(t)); %程序存储变量预先初始化,可提高执行速度 th=zeros(size(t)); v(1)=v0; th(1)=th0;

for i=1:length(t) %仿真求解开始 v(i+1)=v(i)+g*sin(th(i)).*dt; th(i+1)=th(i)-1./L.*v(i).*dt; end %使用双坐标系统来作图

[AX,B1,B2]=plotyy(t,v(1:length(t)),t,th(1:length(t)),'plot'); set(B1,'LineStyle','--'); %设置图线型 set(B2,'LineStyle',':');

set(get(AX(1),'Ylabel'),'String','线速度v(t)m/s');%作标注 set(get(AX(2),'Ylabel'),'String','角位移\\th(t)/rad'); xlabel('时间t/s'); legend(B1,'线速度v(t)',2);

2

legend(B2,'角位移\\th(t)',1);

在以上假设条件下得到仿真图形如下:

在其他条件不变的情况下,仅仅改变细线的长度L=3,再次进行仿真,仿真图象如下:

对比两幅图象可以看出,在理想条件下,同样摆角下,单摆的摆臂变化,影响单摆的最大线速度以及单摆的周期,当摆臂增加时,最大线速度增加,同时单摆的周期也增加.此结论正好与最初单摆理想条件下的试验结论一致.

实际情况中,当摆幅很小(?<50),单摆的摆动可以看作是简谐运动,现在更改单摆的初始摆角为50 情况,也就是令th0=0.085,L依然为1.5,仿真结果如下:

3

2 现实情况下单摆的数学模型.

现实情况下,绳子的质量,摆球的半径,空气的阻力等等都对单摆的摆动有影响,这些影响的主要作用就是阻止单摆的摆动,为简单起见, 可设单摆在摆动中受到阻力fz,显然阻力与摆锤的运动速度有关,即阻力是单摆线速度的函数:fz = f(v),fz (t) ???kv(t)

上式中,k>0为阻力比例系数,式中的负号表示阻力方向与摆锤运动方向相反。切向加速度由切向合力ft?fz产生,根据牛顿第二运动定律,有

a(t) ??g sin?(t)??

kv(t)m

因此得到修正后的单摆运动微分方程组:

dv(t)dtd?(t)dt??g sin?(t)??

??v(t)lkv(t)m (5)

(6)

仍然使用欧拉算法求解:将dv(t) ??v(t ??dt) ??v(t)和d?(t) ???(t ??dt) ??(t)代入 式(5)及式(6)中,并以仿真步进量Δ作为dt 的近似,得到基于时间的递推方程:

v (t +Δ)= v (t)+(gsin?( t)??

kv(t)m)Δ

?(t +Δ)=?(t)?

v(t)lΔ

据此编写仿真程序:

在MALAB命令窗口输入以下命令: subplot(2,1,1)

4

dt=0.0001; %仿真步进 T=16; %仿真时间长度 t=0:dt:T;%仿真计算时间序列 g=9.8; L=1.5; m=8; k=3;

th0=1.5; %初始摆角设置,不能超过π/2 v0=0; %初始摆速设置

v=zeros(size(t)); %程序存储变量预先初始化,可提高执行速度 th=zeros(size(t)); v(1)=v0; th(1)=th0;

for i=1:length(t) %仿真求解开始 v(i+1)=v(i)+(g*sin(th(i))-k./m.*v(i)).*dt; th(i+1)=th(i)-1./L.*v(i).*dt; end %使用双坐标系统来作图

[AX,B1,B2]=plotyy(t,v(1:length(t)),t,th(1:length(t)),'plot'); set(B1,'LineStyle','-'); %设置图线型 set(B2,'LineStyle',':');

set(get(AX(1),'Ylabel'),'String','线速度v(t)m/s');%作标注 set(get(AX(2),'Ylabel'),'String','角位移\\th(t)/rad'); xlabel('时间t/s'); legend(B1,'线速度v(t)',2); legend(B2,'角位移\\th(t)',1);

其它条件不变,令阻力比例系数k=1.5,将两次仿真的图形放在一起,结果如下:

5


单摆运动过程的MATLAB&Simulink建模与仿真.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:文论专题参考答案(选择题)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: