⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch2example6main.m

📁 乒乓球弹跳模型主程序
💻 M
字号:
% ch2example6main.m
clear;
v0=0; y0=1;     % 球的初始状态
x_state=[v0,y0];% 将初始状态赋值到状态变量中
dt=0.01;        % 仿真步进
t=0:dt:5;       % 仿真时间序列
K=0.85;         % 碰撞衰减系数
for k=1:length(t)   % 仿真开始,每次循环向前推进一个仿真步进dt
    x(k,:)=x_state; % 记录并保存当前状态的计算结果
    [t_out, x_out]=ode45('ch2example6statefun',[t(k),t(k)+dt],x_state);
    % 计算下一个时刻的新状态
    % 可换用ode23、ode113、ode23t、ode15s、ode23s以及ode23tb求解器
    x_state=x_out(length(x_out),:);     % 更新状态
    if (x_state(2)<=0) & (x_state(1)<0) % 当速度为负(球向下运动)且已经接触碰撞面
        x_state(1)=-K*x_state(1);       % 处理碰撞瞬间情况:速度反向并衰减K
    end
    % 动画作图:显示小球弹跳过程
    y=x_state(2); % 小球当前位置
    subplot(2,1,1);plot(0,y,'o'); 		 
    axis([-2 2 -0.1 1]); 	        % 坐标范围固定	 
    set(gcf,'DoubleBuffer','on'); 	% 双缓冲避免作图闪烁	 
    drawnow; % 立即显示作图
end
% 仿真结束。最后输出计算时间序列上的结果:随时间变化的速度和位移曲线
subplot(2,1,2);plotyy(t,x(:,1),t,x(:,2),'plot'); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -