📄 ch1example4prg1.m
字号:
% ch1example4prg1.m
g=9.8; % 重力加速度
v0=0; % 初始速度
y0=1; % 初始位置
m=0.1; % 小球质量
t0=0; % 起始时间
K=0.8; % 弹跳的损耗系数
N=5000; % 仿真的总步进数
dt=0.005;% 仿真步长
v=v0; % 初状态
y=y0;
vx=0;
vz=0;
sx=0;
sz=0;
for k=1:N
if y > 0 % 小球在空中的动力方程计算
v=v -g*dt;
y=y +v*dt;
else % 碰击瞬间的计算
y=-K.*v*dt;
v=-K.*v-g*dt;
end
Fx=randn; % x水平方向的随机力,方差为1
ax=Fx./m; % Fx导致的x水平方向的加速度
vx=vx+ax*dt; % 小球在x水平方向的瞬时速度
sx=sx+vx*dt; % 小球在x水平方向的位移
Fz=randn; % z水平方向的随机力,方差为1
az=Fz./m; % Fz导致的z水平方向的加速度
vz=vz+az*dt; % 小球在z水平方向的瞬时速度
sz=sz+vz*dt; % 小球在z水平方向的位移
plot3(sx,sz,y,'.'); grid on;hold on;
axis([-2 2 -2 2 0 1]); % 坐标范围固定
set(gcf,'DoubleBuffer','on'); % 双缓冲避免作图闪烁
xlabel('水平方向x');ylabel('水平方向z');zlabel('垂直方向y');
drawnow; % 作图
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -