Matlab 的小球弹跳仿真程序
3个回答
2013-07-18
展开全部
%Mi.m
function xdot=Mi(t, x, flag)
xdot=zeros(2,1); % 状态变量矩阵初始化
xdot(1)=-9.8; % 速度加速度方程
xdot(2)=x(1); % 位移速度方程
% Mimain.m
clear all;clc;
v0=0; y0=1; % 球的初始状态
x_state=[v0,y0];% 将初始状态赋值到状态变量中
dt=0.01; % 仿真步进
t=0:dt:5; % 仿真时间序列
K=0.8; % 碰撞衰减系数
for k=1:length(t)
x(k,:)=x_state;
[t_out, x_out]=ode45('Mi',[t(k),t(k)+dt],x_state);
x_state=x_out(length(x_out),:);
if (x_state(2)<=0) & (x_state(1)<0)
x_state(1)=-K*x_state(1);
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');
function xdot=Mi(t, x, flag)
xdot=zeros(2,1); % 状态变量矩阵初始化
xdot(1)=-9.8; % 速度加速度方程
xdot(2)=x(1); % 位移速度方程
% Mimain.m
clear all;clc;
v0=0; y0=1; % 球的初始状态
x_state=[v0,y0];% 将初始状态赋值到状态变量中
dt=0.01; % 仿真步进
t=0:dt:5; % 仿真时间序列
K=0.8; % 碰撞衰减系数
for k=1:length(t)
x(k,:)=x_state;
[t_out, x_out]=ode45('Mi',[t(k),t(k)+dt],x_state);
x_state=x_out(length(x_out),:);
if (x_state(2)<=0) & (x_state(1)<0)
x_state(1)=-K*x_state(1);
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');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-18
展开全部
既然进来了就帮你顶下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-18
展开全部
与楼主一起等答案!~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询