% ch1problem2.m
g=9.8; % 重力加速度
k=-1; % 空气阻力系数
dt=0.1; % 设置计算步长
N=30; % 设置仿真递推次数. 仿真时间等于N与dt的乘积
for m=[1, 2, 10] % 三种落体质量
v=0; % 设定初始速度条件
s=0; % 设定初始位移条件
t=0; % 设定起始时间
for i=1:N
a=g+k/m*v; % 计算加速度
v=v+a*dt; % 计算新时刻的速度
s(i+1)=s(i)+v*dt; % 新位移
t(i+1)=t(i)+dt; % 时间更新
end
plot(t,s,'o');
hold on;
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_theory,s_theory, '-');
xlabel('时间 t'); ylabel('位移 s');