第 5章 综合实例用 MATLAB 求解问题时,一般要经历 建模 和 编程 两个过程,只有在建模正确的前提下,方能得出正确的结果。
一、单自由度系统有阻尼自由振动
1.建立计算模型由动力学可知,单自由度有阻尼自由振动的 振动方程 为:
无量刚化 后有:
其中,
上述 方程的解为,
其中
x0 表示初始位置,v0 表示初始速度。
0 kxxcxm
0 xxx nn
mkn kmc2
)s i n ()( dtnAetx
2
20200 )()(
d
dn xxvA
00
01 xv xtg
n
d 21 nd
参数 ωn = 10,x0 = 1,v0 = 0,计算的终止时间 t=2。 试求 ξ
从 0.1 到 1运动方程的解,并画出波形 。
2,MATLAB 编程编写 M 文件 ex1.m
%首先清空 MATLAB 的工作空间
clear;
%给定初值
wn=10;
tf=2;
x0=1;
v0=0;
%计算不同的 ξ值所对应的振型
for j=1:10;
eta(j)=0.1*j;
wd(j)=wn*sqrt(1-eta(j)^2);
%求振幅 A
a=sqrt((wn*x0*eta(j)+v0)^2+(x0*wd(j))^2)/wd(j);
第 5章 综合实例
%求相位角
phi=atan2(wd(j)*x0,v0+eta(j)*wn*x0);
%设定自变量数组 t
t=0:tf/1000:tf;
%求过渡过程
x(j,:)=a*exp(-eta(j)*wn*t).*sin(wd(j)*t+phi);
end
%在同一个图形窗口中绘制不同的 ξ 值所对应的振型
plot(t,x(1,:),t,x(2,:),t,x(3,:),t,x(4,:),..,
t,x(5,:),t,x(6,:),t,x(7,:),t,x(8,:),..,
t,x(9,:),t,x(10,:))
grid on
%新建一个图形窗口,绘制三维网格图
figure
mesh(x)
第 5章 综合实例第 5章 综合实例如果改变初始条件令 x0= 0,v0= 1,其运动曲线实际上就是系统的脉冲过渡函数 。
第 5章 综合实例二,气体分子运动的麦克斯韦分布曲线通过本例说明如何 用复杂的数学公式绘制曲线 。
利用气体分子运动的麦克斯韦速度分布律,求氯分子运动的 速度分布曲线,并讨论 温度 T及 分子量 mu对速度分布曲线的影响 。
1,建立计算模型麦克斯韦速度分布律为,
其中,m---分子质量,m=mu/NA,mu---分子量,NA---阿伏加德罗数
k---波尔茨曼常数
T----气体的绝对温度
v----分子速度

kT
mvv
kT
mf
2e x p24
2223

第 5章 综合实例为研究单个参数的影响,先把麦克斯韦分布律编为一个函数子程序,以便重复调用,同时将 常数项 也放在子程序中。
需要强调的是,子程序不得与主程序放在同一个 M 文件中,只能将子程序单独做成 M 文件,并放在与主程序同一个工作路径中。
2,MATLAB 编程
首先建立计算麦克斯韦分布律的子程序 mxw.m
function f=mxw(T,mu,v)
% The subfunction mxw.m of ex2 利用麦克斯韦速度分布律求分子的速度分布曲线的子程序
%mu,v,T分别是分子量,分子速度和气体的绝对温度
k=1.381*10^(-23); %波尔茨曼常数
NA=6.022*10^23; %阿伏加德罗数
m=mu/NA %分子质量
f=4*pi*((m/2*pi*k*T)).^(3/2),*v.*v.*exp(-m*v.^2./(2*k*T));
第 5章 综合实例
编写主程序 ex2.m
T=300;
mu=28e-3; %给出 T和 mu的值
v=0:1500; %调出自变量数组
y=mxw(T,mu,v); %调用子程序
plot(v,y,'r') %绘制分布曲线
hold on
%为了看出不同的 T和 mu对曲线形状的影响,再次给定 T和 mu,在同一幅图中绘制分布律曲线的图形
T=200;
mu=28e-3;
y=mxw(T,mu,v);
plot(v,y,'b')
hold on
T=300;
mu=2e-3;
y=mxw(T,mu,v);
plot(v,y,'g'))
第 5章 综合实例三、方波的分解在连续信号系统中,方波 可以用 相应频率 的 基波及其奇次谐波合成,这也是将 方波 展开为正弦级数的出发点。本节将演示这一现象。
1,建立计算模型一个以 原点为奇对称中心 的 方波 y(t)可以用奇次正弦波的叠加来逼近:
方波的宽度为 π,周期为 2π 。
.,,)12s i n (12 1.,,)5s i n (51)3s i n (31)s i n ()( tkktttty
2,MATLAB编程建立 M 文件 ex3.m
% 演示基波和奇次谐波合成方波
t=0:0.1:10; %首先设定一个有 101个点的时间数组
%绘制频率 w= 1( f=1/2π) 的正弦基波,并设置暂停
y=sin(t);
plot(t,y)
pause
%叠加 3次谐波,绘图并设置暂停
y=sin(t)+sin(3*t)/3;
plot(t,y)
pause
%叠加 1,3,5,7,9次谐波,绘图并设置暂停
y=sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9;
plot(t,y)
pause
第 5章 综合实例
%为了绘制三维曲面,需要将各次波形数据存储为一个三维数组,因此需要重新定义 y,
重新编程,本例将求至 19 次谐波
t=0:0.031:3.14;
y=zeros(10,max(size(t)));
x=zeros(size(t));
for k=1:2:19
x=x+sin(k*t)/k;
y((k+1)/2,:)=x;
end
pause
%将各个波形叠合绘出,并设置暂停
plot(t,y(1,:),t,y(2,:),t,y(3,:),t,y(4,:),t,y(5,:),...
t,y(7,:),t,y(8,:),t,y(9,:))
pause
%将各个波形绘制成三维网格图
mesh(y)
pause
第 5章 综合实例