本文介绍计算机仿真的过程,通过自由落体这一例子具体说明。仿真也称为模拟,在本质上,系统的计算机仿真就是根据物理系统的运行原理建立相应的数学描述并进行计算机数值求解的过程。
1.计算机仿真的一般过程:
- 建立计算机程序(层次化的)。
- 执行仿真。
- 对仿真模型和仿真结果的检验。
其中仿真验证包含以下方面的内容:
- 对仿真数学模型有效性的验证。
- 对计算机仿真模型(程序)的验证。
- 对仿真算法的验证。
- 仿真结果置信度分析。
2.实例
试对空气中在重力作用下不同质量物体的下落过程进行建模和仿真。已知重力加速度g=9.8m/s^2 ,在初始时刻 t_0 = 0 s时物体由静止开始坠落,空气对物体的影响忽略不计。
2.1 建立数学模型
质量为m 的物体在自由坠落过程中受到竖直向下的恒定重力的作用,由牛顿第二定律,我们知道,重力
F
F
,加速度 以及物体质量
m
m
之间的关系是:
其中 a=g a = g 。初始时刻为 t0=0 t 0 = 0 ,并设物体下落的瞬时速度为 v(t) v ( t ) 。设物体在t 时刻的位移为 s(t) s ( t ) ,并设初始位移为零,即 s(t0)=0 s ( t 0 ) = 0 。根据加速度、速度、位移三者之间的微积分关系,我们得到一组数学方程:
a=dvdt
a
=
d
v
d
t
v=dsdt
v
=
d
s
d
t
F=ma
F
=
m
a
以及初始条件:
v(t0)=0
v
(
t
0
)
=
0
s(t0)=0
s
(
t
0
)
=
0
2.2 数学模型分析
v(t)=v(t0)+∫tt0adt=v(t0)+a(t−t0)=at
v
(
t
)
=
v
(
t
0
)
+
∫
t
0
t
a
d
t
=
v
(
t
0
)
+
a
(
t
−
t
0
)
=
a
t
s(t)=s(t0)+∫tt0v(t)dt=∫tt0atdt=12at2
s
(
t
)
=
s
(
t
0
)
+
∫
t
0
t
v
(
t
)
d
t
=
∫
t
0
t
a
t
d
t
=
1
2
a
t
2
2.3 根据数学模型建立计算机仿真模型(编程)
将方程转换为一种在自变量(时间)上的“递推”表达式
v(t+dt)=v(t)+dv=v(t)+adt
v
(
t
+
d
t
)
=
v
(
t
)
+
d
v
=
v
(
t
)
+
a
d
t
s(t+dt)=s(t)+ds=s(t)+v(t)dt
s
(
t
+
d
t
)
=
s
(
t
)
+
d
s
=
s
(
t
)
+
v
(
t
)
d
t
2.4 执行仿真和结果分析
程序代码如下:
g=9.8; % 重力加速度
v=0; % 设定初始速度条件
s=0; % 设定初始位移条件
t=0; % 设定起始时间
dt=0.1; % 设置计算步长
N=20; % 设置仿真递推次数. 仿真时间等于N与dt的乘积
for k=1:N
v=v+g*dt; % 计算新时刻的速度
s(k+1)=s(k)+v*dt; % 新位移
t(k+1)=t(k)+dt; % 时间更新
end
% 理论计算, 以便与仿真结果对照
t_theory=0:0.01:N*dt; % 设置解析计算的时间点
v_theory=g*t_theory; % 解析计算的瞬时速度
s_theory=1/2*g*t_theory.^2; % 解析计算的瞬时位移
% 作图: 仿真结果与解析结果对比
t=0:dt:N*dt;
plot(t,s,'--*R', t_theory,s_theory, '-c');
xlabel('时间 t'); ylabel('位移 s');
legend('仿真结果','理论结果');
运行结果:
关于画图的线型及颜色
线型 | 说明 | 标记符 | 说明 | 颜色 | 说明 |
---|---|---|---|---|---|
- | 实线(默认) | + | 加号符 | r | 红色 |
– | 双划线 | o | 空心圆 | g | 绿色 |
: | 虚线 | * | 星号 | b | 蓝色 |
:. | 点划线 | . | 实心圆 | c | 青绿色 |
x | 叉号符 | m | 洋红色 | ||
s | 正方形 | y | 黄色 | ||
d | 菱形 | k | 黑色 | ||
^ | 上三角形 | w | 白色 | ||
v | 下三角形 | ||||
> | 右三角形 | ||||
< | 左三角形 | ||||
p | 五角星 | ||||
h | 六边形 |