多体运动的matlab动画演示

多体运动的matlab动画演示
多体运动的matlab动画演示

多体运动的matlab动画演示

1 问题说明

当考虑的体系中的对象超过两个时(比如三个),由于其相互作用的复杂性,使得多体动力学问题变得极其复杂,要用解析的办法通过求解动力学微分方程来求得多体系统的每个对象的运动状态几乎是不可能的。

不过,如果只是为了获得多体系统的粗略而简要的认知,那么可以利用matlab等软件在数值上求解多体系统的动力学微分方程,从而给出多体系统的大致运动状况。

需要说明的是,matlab求解动力学微分方程所得到的结果毕竟是存在误差的,这些误差主要来自于其算法的迭代过程,即舍入误差和截断误差。并且随着迭代次数增加,所产生的误差会不断累积,使得求解的时间尺度越大,后面的误差也就越大。所以要想获得比较可靠的计算结果,则所求解的时间尺度不能太大。

另外,该文档中所采用的动画演示方法是先用ode45在初始条件下求解出所有粒子的运动状态,包括速度和位置,然后按照所求解出来的位置,在每个对应的时间下在图中画出该粒子,从而形成可以连续演示的动画。

由于不是在求解微分方程的同时给出粒子的运动,这种方法演示更加流畅;但是依然能看出在长时间演示后期,动画演示也会迟滞,这是需要改进的地方。

2 理论求解

在这里,所考虑的多体系统可以包括3个粒子,4个粒子甚至更多粒子,只要计算机足够强大,可以放入100个粒子也行。所考虑的粒子分为两类,一种是以质子为原型,一种以中子为原型。

所考虑的作用力包括了两种:强相互作用力,电磁相互作用力。

在程序中求解时,需要把两种作用力加起来(具体见求解微分方程的m文件)。

这里只处理了平面中的运动情况,也可以将其更改为立体空间中的运动,那样会更加复杂。

程序已经写为多体(N体)的通用形式,改变N的大小时,不需要再去更改求解微分方程的m文件的内容,而只需要在参数设置区更改相应的粒子数以及每个粒子的具体信息。

注意,Rx,Ry,m,ke这几个代表着每个粒子信息的量,这几个变量所包含的数值个数(向量维度)应该等于N(n+p)的值,否则将出现不匹配的情况而无法运行。

比如:

n=3;p=3;

Rx=[0,1,1,1,1/2,0];Ry=[0,0,1/2,1,1/2,1];

m=[1.0012,1.0012,1,1.0012,1.0012,1];

ke=[0,0,1,0,1,0];%Rx,Ry,m,ke都应该包含6个数值,注意理清6个粒子对应的参量。

n=3;p=2;

Rx=[0,1/2,1/2,1/2,1];Ry=[1/2,0,1/2,1,1/2];

m=[1,1.0012,1.0012,1.0012,1];

ke=[1,0,0,0,1];%Rx,Ry,m,ke都应该包含5个数值

3 matlab程序

注:如果要copy该段程序直接放入matlab,需要调整注释(绿色的字体部分)

文件1

figure('name','多体运动演示'); %设置标题名字

global N m ke r0 %定义全局变量,使得求解微分方程的m文件可以使用这些变量

%****************************参数设置区********************************%

n=3;p=3; %n,p分别为中子和质子数

Rx=[0,1,1,1,1/2,0];Ry=[0,0,1/2,1,1/2,1]; %Rx和Ry分别为起始位置的坐标

m=[1.0012,1.0012,1,1.0012,1.0012,1]; %m以质子的质量为单位1的相对质量值

ke=[0,0,1,0,1,0]; %ke为以e为单位的电荷值

%*********************************************************************%

N=n+p;r0=0.4; %N为所有的粒子总数,r0为坐标尺度相对值,可调整

pausetime=.01;%设置暂停时间

set(gca,'xlim',[-2 2],'ylim',[-2 2]);%设置图形窗口的坐标显示范围(可根据实际情况进行更改。)

set(gcf,'doublebuffer','on') %消除抖动

axis equal

hold on

x0=zeros(4*N,1); %x0为求解方程组的初始值

for i=1:N

x0(4*i-2)=Rx(i);x0(4*i)=Ry(i);

if ke(i)==1

pp(i)=plot(x0(4*i-2),x0(4*i),'color','r','marker','.','markersize',15); %p为红色点

else

pp(i)=plot(x0(4*i-2),x0(4*i),'color','k','marker','.','markersize',15); %n为黑色点

end

end

t0=0;tf=15; %求解的时间范围

[t,x]=ode45('dohezi',t0,tf,x0); %调用m文件求解微分方程

len=length(t);

for i=1:len %在图中作出运动状况for j=1:N

set(pp(j),'xdata',x(i,4*j-2),'ydata',x(i,4*j));

plot(x(i,4*j-2),x(i,4*j));

end

pause(pausetime); %暂停一会

drawnow

end

下面是求解微分方程时调用的m文件的内容:

注:如果要copy该段程序进matlab,其文件名需要命名为dohezi.m保存,同时注意调整注释(绿色部分)。

文件2

function solhe=dohezi(t,x)

global N m ke r0

solhe=zeros(4*N,1); %x(4*j-3),x(4*j-2),x(4*j-1),x(4*j)分别为第j个粒子的vx,x,vy,y;solhe(4*j-3),solhe(4*j-2),solhe(4*j-1),solhe(4*j)分别对应vx,x,vy,y四个值对时间t的导数;

for j=1:N %j对应每个粒子

solhe(4*j-3)=0;solhe(4*j-1)=0;

for k=1:N

if j~=k %第j个粒子受到除了第j个粒子之外的其他所有粒子的作用力,所以要把其他粒子施加的作用全部求和。这里的作用力又分为两种:强相互作用的力和电磁相互作用的力。

r=((x(4*j-2)-x(4*k-2))^2+(x(4*j)-x(4*k))^2)^0.5; %r为第j个粒子和第k个粒子的相对距离

solhe(4*j-3)=solhe(4*j-3)+15/m(j)/r^2*(1/r0-1/r)*exp(-r/r0)*(x(4*k-2)-x (4*j-2))+ke(j)*ke(k)/m(j)/137*(x(4*j-2)-x(4*k-2))/r^3;

solhe(4*j-1)=solhe(4*j-1)+15/m(j)/r^2*(1/r0-1/r)*exp(-r/r0)*(x(4*k)-x(4 *j))+ke(j)*ke(k)/m(j)/137*(x(4*j)-x(4*k))/r^3;

else

end

end

solhe(4*j-2)=x(4*j-3);

solhe(4*j)=x(4*j-1);

end

4 运行结果

(1)三个粒子的运动

其中有两个p粒子(红色),一个n粒子(黑色)。从运动轨迹可以看出,三体运动是极其复杂的。三个粒子的运动相互交错融合,毫无规律可循。

(2)四个粒子的运动

其中有两个p粒子(红色),两个n粒子(黑色)。由于初始位置的对称,在开始一段时间四个粒子的运动几乎各自表现为简谐振动,但后来由于求解微分方程不断累积误差,使得各个粒子的轨迹不断偏离理论值,最后呈现出杂乱无章的状态。

(3)六个粒子的运动

其中有两个p粒子(红色),四个n粒子(黑色)。六个粒子的运动状态最初很有规律,但随着时间增加,运动轨迹的复杂度急速增加,最后变成一团毛线。

5 结语

该文档中的程序只处理了平面中的运动情况,而且设计并非完美,只希望起到抛砖引玉的作用,希望读者能根据该内容,做出更加完美的多体运动的matlab动画演示,得到更加准确的数值解,或者能在更大的时间范围内求解数值解。

更多内容见文库内本人的其他matlab 动画演示。

抛体运动的规律教案

6.4 抛体运动的规律 ★新课标要求 (一)知识与技能 1、理解平抛运动是匀变速运动,其加速度为g。 2、掌握抛体运动的位置与速度的关系。 (二)过程与方法 1、掌握平抛运动的特点,能够运用平抛规律解决有关问题。 2、通过例题分析再次体会平抛运动的规律。 (三)情感、态度与价值观 1、有参与实验总结规律的热情,从而能更方便的解决实际问题。 2、通过实践,巩固自己所学知识。 ★教学重点 分析归纳抛体运动的规律 ★教学难点 应用数学知识分析归纳抛体运动的规律 ★教学方法 教师启发、引导,学生归纳分析,讨论、交流学习成果。 ★教学工具 投影仪等多媒体教学设备 ★教学过程 (一)引入新课 上节课已经实验探究了平抛运动的特点,本节我们将从理论上对抛体运动的规律进行研究。 (二)进行新课 1、抛体的位置 教师活动:引导学生阅读教材,独立推导抛体运动的位置坐标。为了便于研究,推导时考虑以下问题: 1、应该沿什么方向建立坐标系? 2、应以哪个位置作为坐标原点? 学生活动:在练习本上建立平面直角坐标系,推导t时刻小球在水平方向和竖直方向上的位置坐标x、y. 为了研究问题的方便,应该沿水平向右和竖直向下建立坐标系,并取小球刚 被水平抛出的瞬间作为坐标原点。 教师活动:巡回指导,掌握学生的推导过程。 投影学生的推导过程,引导学生分析、点评。 点评:通过学生推导分析,提高学生分析解决问题的能力。通过推导,体会成功的喜悦。 为进一步研究轨迹方程做好准备。 教师活动:投影例1,讨论以速度v水平抛出的物体的运动轨迹。 引导学生独立思考,独立寻找求解轨迹的方法。 学生活动:在练习本上建立平面直角坐标系,利用上面推导出的位置坐标x、y的表达式,消去时间t,得到轨迹方程,即x与y的关系式。 点评:培养学生运用数学知识分析解决物理问题的能力。

抛体运动的规律及其应用

抛体运动的规律及其应用 基础知识回顾 1.平抛运动 (1)定义:将一物体水平抛出,物体只在重力作用下的运动。 (2)性质:加速度为g 的匀变速曲线运动,运动过程中水平速度不变,只是竖直速度不断增大,合速度大小、方向时刻改变。 (3)研究方法:将平抛运动分解为水平方向的匀速直线运动和竖直方向的自由落体运动,分别研究两个分运动的规律,必要时再用运动合成方法进行合成。 (4)规律: 设平抛运动的初速度为0v ,建立坐标系如图 ○ 1速度、位移: 水平方向: 0v v x =,t v x 0=, 竖直方向: gt v y =,221gt y = 合速度(t 秒末的速度): 22y x t v v v +=, 方向:0 0tan v gt v v g y ==? 合位移(t 秒末的位移):22y x s += 方向:0 0222/1tan v gt t v gt x y g ===θ ∴ θ?g g tan 2tan = ○2运动时间:由221gt y =得:2y t g = (t 由下落高度y 决定) ○3轨迹方程:2202g y x v = (在未知时间情况下应用方便) ○ 4可独立研究竖直分运动: a .连续相等时间内竖直位移之比为: 1∶3∶5∶…∶(2n-1)(n=1,2,3,…) 图4-2-1

b .连续相等时间内竖直位移之差为:2 y gt ?= ○5一个有用的推论: 平抛物体任意时刻瞬时时速度方向的反向延长线与初速度延长线的交点到抛出点的距离都等于水平位移的一半。 证明:设时间t 内物体的水平位移为s ,竖直位移为h ,则末速度的水平分量0x s v v t ==,而竖直分量2y h v t =, s h v v 2tan x y ==α, 所以有2tan s h s == 'α 2.斜抛运动: (1)将物体斜向射出,在重力作用下,物体作曲线运动,它的运动轨迹是抛物线,这种运动叫做“斜抛运动”。 (2)性质:加速度为g 的匀变速曲线运动。根据运动独立性原理,可以把斜抛运动看成是作水平方向的匀速直线运动和竖直上抛运动的合运动来处理。取水平方向和竖直向上的方向为x 轴和y 轴,则这两个方向的初速度分别是:v 0x =v 0cosθ,v 0y =v 0sinθ 重点难点例析 一、平抛物体运动中的速度变化 水平方向分速度保持v x =v 0,竖直方向,加速度恒为g ,速度 v y =gt ,从抛出点看,每隔?t 时间的速度的矢量关系如图4-2-3所示.这 一矢量关系有两个特点: 1.任意时刻v 的速度水平分量均等于初速度v 0; 2.任意相等时间间隔?t 内的速度改变量均竖直向下,且 y v v g t ?=?=?. 【例1】物体在平抛运动的过程中,在相等的时间内,下列物理量相 等的是 ( ) A .速度的增量 B .加速度 C .位移 D .平均速度 【解析】平抛运动是匀变速曲线运动,加速度为重力加速度g,由加速度定义v a t ?=?,可知速度θ v t v 0 v y A O B D C 图4-2-2 图4-2-3

用matlab制作简单仿真动画

用matlab制作简单仿真动画,并生成.avi格式的电影文件 MATALB知识点2008-05-01 13:17:54 阅读152 评论0 字号:大中小订阅 第一种形式:利用for循环,在一定时间内控制图形窗口图像的显示,产生一段动态的演示过程: 如下: set(gcf,'color','green'); grid on; set(gca,'zlim',[-10,10]'); set(gca,'xlim',[-10,10]); set(gca,'ylim',[-10,10]); for i=1:10 set(gca,'view',[-i*3.75,3*i] ); pause(0.2); end 第二种形式:利用moviein和movie函数,现将生成的动画存入一个由movien 函数定义的数组中,每一帧为数组的一个元素,最后用movie重复演示,movie后面的数字代表演示次数。 x=[-30:0.2:30]; y=[-30:0.2:30]; [x,y]=meshgrid(x,y); n=5; M = moviein(n); for i=1:n z=sin(sqrt(2*(x).^2+2*(y).^2)-2*pi*i/10); zz=plot3(x,y,z,'parent',gca); mesh(x,y,z); grid on; colormap([0,0.9,0.5]); light('position',[1,1,2],'style','local','color','white'); material([0.5,0.4,0.3,10,0.3]); set(gca,'zlim',[-10,10]'); M(i)=getframe(gca); end movie(M,20) 创建电影剪辑文件,并存储起来,如下: aviobj=avifile('文件名.avi','fps',3);%定义一个avi文件, %AVIOBJ = AVIFILE(FILENAME,'PropertyName',VALUE,'PropertyName',VALUE,...) %各属性详细说明见matlab帮助 for i=1:n %在当前窗体上生成一帧图像

汽车系统动力学Matlab

汽车系统动力学Matlab 作业报告 小组成员:

'组内任务分配

二、 Matlab 程序与图形 1、不同转向特性车辆在不同车速下的系统特征根 m=1000;I=1500;a1=1.15;b1=1.35;Caf=53000;Car=53000; i=1;R=[]; for uc=10:5:100; D=(l*(Caf+Car)+m*(a1^2*Caf+b1^2*Car))∕(m*l*uc); S=(a1+b1)^2*Caf*Car∕(m*l*uc^2)+(b1*Car-a1*Caf)∕l; P=[1 D S]; r=roots(P); R(i,1)=r(1,1);R(i,2)=r(2,1);i=i+1; end plot(real(R(:,1)),imag(R(:,1)),'bo'); hold a2=1.25; b2=1.25; t=1; S=[]; for uc=10:5:100 P=[m 0;0 l]; Q=[(Caf+Car)∕uc,m*uc+(a2*Caf-b2*Car)∕uG(a2*Caf-b2*Car)∕uc,(a2^2*Caf+b 2^2*Car)∕uc]; R=[Caf;a2*Caf]; A=-P^(-1)*Q; d=eig(A); i=imag(d); r=real(d); S(t,1)=r(1); S(t,2)=i(1); t=t+1; end plot(S(:,1),S(:,2),'*') a3=1.35; b3=1.15; for uc=10:5:100 P=[m 0;0 l];

Q=[(Caf+Car)∕uc,m*uc+(a3*Caf -b3*Car)∕uc; (a3*Caf-b3*Car)∕uc,(a3^2*Caf+b3^2*Car)∕uc]; R=[Caf;a3*Caf]; A=-P^(-1)*Q; d=eig(A); i=imag(d); r=real(d); S(t,1)=r(1); S(t,2)=i(1); t=t+1; end grid On Plot(S(:,1),S(:,2),'d'); axis([-14 2 0 3]); xlabel('实轴(Re)'); ylabel('虚轴(Im)'); text(-8,2.8,'不足转向'); text(0,0.2,'过多转向'); text(-3,0.2,'中性转向') set(gca,'Fo ntName','Helvetica','Fo ntSize',10) title(['不同转向特性车辆在不同车速下的系统特征根'],'FontSize',12); E 一 書不同转向特杵乍辆在不同乍速下的系统待征戕

抛体运动的规律教案

抛体运动的规律教案-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

抛体运动的规律 ★新课标要求 (一)知识与技能 1、理解平抛运动是匀变速运动,其加速度为g。 2、掌握抛体运动的位置与速度的关系。 (二)过程与方法 1、掌握平抛运动的特点,能够运用平抛规律解决有关问题。 2、通过例题分析再次体会平抛运动的规律。 (三)情感、态度与价值观 1、有参与实验总结规律的热情,从而能更方便的解决实际问题。 2、通过实践,巩固自己所学知识。 ★教学重点 分析归纳抛体运动的规律 ★教学难点 应用数学知识分析归纳抛体运动的规律 ★教学方法 教师启发、引导,学生归纳分析,讨论、交流学习成果。 ★教学工具 投影仪等多媒体教学设备 ★教学过程 (一)引入新课 上节课已经实验探究了平抛运动的特点,本节我们将从理论上对抛体运动的规律进行研究。 (二)进行新课 1、抛体的位置

教师活动:引导学生阅读教材,独立推导抛体运动的位置坐标。为了便于研究,推导时考虑以下问题: 1、应该沿什么方向建立坐标系 2、应以哪个位置作为坐标原点 学生活动:在练习本上建立平面直角坐标系,推导t时刻小球在水平方向和竖直方向上的位置坐标x、y. 为了研究问题的方便,应该沿水平向右和竖直向下建立坐标 系,并取小球刚被水平抛出的瞬间作为坐标原点。 教师活动:巡回指导,掌握学生的推导过程。 投影学生的推导过程,引导学生分析、点评。 点评:通过学生推导分析,提高学生分析解决问题的能力。通过推导,体会成功的喜悦。为进一步研究轨迹方程做好准备。 教师活动:投影例1,讨论以速度v水平抛出的物体的运动轨迹。 引导学生独立思考,独立寻找求解轨迹的方法。 学生活动:在练习本上建立平面直角坐标系,利用上面推导出的位置坐标x、y的表达式,消去时间t,得到轨迹方程,即x与y的关系 式。 点评:培养学生运用数学知识分析解决物理问题的能力。 教师活动:巡回指导,掌握学生的推导过程。 投影学生的推导过程,引导学生分析、点评。 从轨迹方程可以看出,其轨迹为抛物线。 提出问题:如果将物体斜向上或斜向下抛出,物体的运动轨迹 是怎样的呢 引导学生阅读教材有关内容,就“说一说”栏目中的问题进行 讨论。 学生活动:在练习本上建立平面直角坐标系,利用上面推导平抛运动轨迹的方法,推导斜抛物体的轨迹方程

有趣的MATLAB动画演示程序汇总

MATLAB 动画演示程序汇总 1.弹性蹦球演示程序 figure(1);%定义函数 axis([-5.1,5,-0.05,1.05]);%绘制二维图形 hold on;%保持当前图形及轴系所有的特性 axis('off');%覆盖坐标刻度,并填充背景 %通过填充绘出台阶及两边的挡板 fill([4.12,4.22,4.22,4.12],[-0.05,-0.05,1.05,1.05],'y'); fill([-5,-3.2,-3.2,-5],[-0.05,-0.05,0,0],'g'); fill([-3.2,-2.8,-2.8,-3.2],[-0.05,-0.05,0.2,0.2],'g'); fill([-3.2,-1.4,-1.4,-3.2],[0.2,0.2,0.25,0.25],'g'); fill([-1.4,-1,-1,-1.4],[0.2,0.2,0.45,0.45],'g'); fill([-1.4,0.4,0.4,-1.4],[0.45,0.45,0.5,0.5],'g'); fill([0.4,0.8,0.8,0.4],[0.45,0.45,0.7,0.7],'g'); fill([0.4,2.0,2.0,0.4],[0.7,0.7,0.75,0.75],'g'); fill([2.0,2.3,2.3,2.0],[-0.05,-0.05,0.75,0.75],'g'); fill([2.3,4.12,4.12,2.3],[-0.05,-0.05,0,0],'g'); %x2=line([-5,5],[0.25,0.25],'color','g','linestyle','-', 'markersize',50)%设置台阶边框线,颜色,擦试方式 %line([-5,5],[0.5,0.5],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 %line([-5,5],[0.75,0.75],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 head=line(-5,1,'color','r','linestyle','.','erasemode','xor', 'markersize',60);%设置小球颜色,大小,线条和擦试方式 %body=line(-5,1,'color','b','linestyle','-','erasemode','none'); %描绘轨迹线 %设置初始条件 while 1 t=4; dt=0.001; w=0; dw=0.001; w=0;%设置球弹起的初始位置 %设置球弹起的高度 while t<=4.12 t=dt+t; if w<=1 w=dw+w; else w=-1;

高中物理 抛体运动的规律的教学案

抛体运动的规律 新课标要求 (一)知识与技能 1、理解平抛运动是匀变速运动,其加速度为g。 2、掌握抛体运动的位置与速度的关系。 (二)过程与方法 1、掌握平抛运动的特点,能够运用平抛规律解决有关问题。 2、通过例题分析再次体会平抛运动的规律。 (三)情感、态度与价值观 1、有参与实验总结规律的热情,从而能更方便的解决实际问题。 2、通过实践,巩固自己所学知识。 教学重点 分析归纳抛体运动的规律 教学难点 应用数学知识分析归纳抛体运动的规律 教学方法 教师启发、引导,学生归纳分析、讨论、交流学习成果。 教学工具 平抛运动演示仪、投影仪等多媒体教学设备 复习提问: 处理质点在平面内的曲线运动的一般方法是什么? 可以选择平面直角坐标系,运用运动的合成与分解的方法求解。 教学过程 (一)引入新课 由几段视频引入新课,本节课我们来研究可以忽略阻力的抛体运动。 (二)进行新课 以一定的速度将物体抛出去,在空气阻力可以忽略的情况下,物体只受重力,它的运动即为抛体运动,日常生活中还有哪些抛体运动呢?(学生举例) 一、平抛运动的定义 在这些例子中,如果抛体运动的初速度是水平方向这种运动称为平抛运动。 下面我们来对水平抛出的粉笔头进行受力分析。(只受重力)(学生回答)(注意纠错)平抛运动的条件(1)只受重力(2)初速度方向水平 平抛运动加速度的特点:受力恒定加速度恒定为g 所以平抛运动又是一种特殊的匀变速曲线运动 二、研究平抛运动 猜想:平抛运动可以分解为什么样的运动?(理论分析) 1、抛体的位置 教师活动:引导学生阅读教材,独立推导抛体运动的位置坐标。为了便于研究,推导时考虑以下问题: 1、应该沿什么方向建立坐标系? 2、应以哪个位置作为坐标原点? 学生活动:在练习本上建立平面直角坐标系,推导t时刻小球在水平方向和竖直方向上

matlab动力学解析程序详解

·· 1.微分方程的定义 对于duffing 方程03 2 =++x x x ω ,先将方程写作??? --==3 1122 21x x x x x ω function dy=duffing(t,x) omega=1;%定义参数 f1=x(2); f2=-omega^2*x(1)-x(1)^3; dy=[f1;f2]; 2.微分方程的求解 function solve (tstop) tstop=500;%定义时间长度 y0=[0.01;0];%定义初始条件 [t,y]=ode45('duffing',tstop,y0,[]); function solve (tstop) step=0.01;%定义步长 y0=rand(1,2);%随机初始条件 tspan=[0:step:500];%定义时间范围 [t,y]=ode45('duffing',tspan,y0); 3.时间历程的绘制 时间历程横轴为t ,纵轴为y ,绘制时只取稳态部分。 plot(t,y(:,1));%绘制y 的时间历程 xlabel('t')%横轴为t ylabel('y')%纵轴为y

·· grid;%显示网格线 axis([460 500 -Inf Inf])%图形显示范围设置 4.相图的绘制 相图的横轴为y ,纵轴为dy/dt ,绘制时也只取稳态部分。红色部分表示只取最后1000个点。 plot(y(end-1000:end ,1),y(end-1000:end ,2));%绘制y 的时间历程 xlabel('y')%横轴为y ylabel('dy/dt')%纵轴为dy/dt grid;%显示网格线 5.Poincare 映射的绘制 对于不同的系统,Poincare 截面的选取方法也不同 对于自治系统一般每过其对应线性系统的固有周期,截取一次 对于非自治系统,一般每过其激励的周期,截取一次 例程:duffing 方程03 2=++x x x ω 的poincare 映射 function poincare(tstop) global omega; omega=1; T=2*pi/omega;%线性系统的周期或激励的周期 step=T/100;%定义步长为T/100 y0=[0.01;0];%初始条件 tspan=[0:step:100*T];%定义时间范围 [t,y]=ode45('duffing',tspan,y0); for i=5000:100:10000%稳态过程每个周期取一个点 plot(y(i,1),y(i,2),'b.'); hold on;% 保留上一次的图形 end

MATLAB程序设计报告--基于MATLAB动画播放及音乐播放

《MATLAB程序设计》课程设计报告 设计题目:基于MATLAB的动画演示 及背景音乐插入 专业:2011级通信工程 姓名(学号):储兆雄1162310213 邓少林1162310214 徐凯越1162310223 指导教师:倪建军(博士/副教授) 时间:2013年12月20日

目录 1、设计目的 2、总体设计 3、具体设计(功能实现) 4、结果分析 5、改进方向 6、心得体会 文献 附录

1、设计目的 学会运用matlab工具箱实现matlab GUI设计,处理动画运行,以及添加背景音乐,并实现其动态操作,如继续、暂停等功能。 2、总体设计

主要包括:动画模块,音乐模块,动画显示模块 3、具体设计(功能实现) 1) 动画模块 (1)打开动画文件:从文件打开对话框选择动画程序,实现动画播放的可选择性 程序实现代码如下: function btnvopen_Callback(hObject, eventdata, handles) % hObject handle to btnvopen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global vfname %动画文件名 [vfname vpname vindex]=uigetfile('*.m','choose moive file'); len=length(vfname); if vindex set(handles.txtvname,'string',vfname(1:len-2)) end 打开对话框效果如下:

matlab动力学分析程序详解

1 1.微分方程的定义 对于duffing 方程03 2 =++x x x ω ,先将方程写作??? --==3 1122 21x x x x x ω function dy=duffing(t,x) omega=1;%定义参数 f1=x(2); f2=-omega^2*x(1)-x(1)^3; dy=[f1;f2]; 2.微分方程的求解 function solve (tstop) tstop=500;%定义时间长度 y0=[0.01;0];%定义初始条件 [t,y]=ode45('duffing',tstop,y0,[]); function solve (tstop) step=0.01;%定义步长 y0=rand(1,2);%随机初始条件 tspan=[0:step:500];%定义时间范围 [t,y]=ode45('duffing',tspan,y0); 3.时间历程的绘制 时间历程横轴为t ,纵轴为y ,绘制时只取稳态部分。 plot(t,y(:,1));%绘制y 的时间历程 xlabel('t')%横轴为t ylabel('y')%纵轴为y grid;%显示网格线

2 axis([460 500 -Inf Inf])%图形显示范围设置 4.相图的绘制 相图的横轴为y ,纵轴为dy/dt ,绘制时也只取稳态部分。红色部分表示只取最后1000个点。 plot(y(end-1000:end ,1),y(end-1000:end ,2));%绘制y 的时间历程 xlabel('y')%横轴为y ylabel('dy/dt')%纵轴为dy/dt grid;%显示网格线 5.Poincare 映射的绘制 对于不同的系统,Poincare 截面的选取方法也不同 对于自治系统一般每过其对应线性系统的固有周期,截取一次 对于非自治系统,一般每过其激励的周期,截取一次 例程:duffing 方程03 2=++x x x ω 的poincare 映射 function poincare(tstop) global omega; omega=1; T=2*pi/omega;%线性系统的周期或激励的周期 step=T/100;%定义步长为T/100 y0=[0.01;0];%初始条件 tspan=[0:step:100*T];%定义时间范围 [t,y]=ode45('duffing',tspan,y0); for i=5000:100:10000%稳态过程每个周期取一个点 plot(y(i,1),y(i,2),'b.'); hold on;% 保留上一次的图形 end xlabel('y');ylabel('dy/dt');

MATLAB动画演示效果

MATLAB动画演示效果一 %曲柄滑块机构 hf=figure('name','曲柄滑块机构'); set(hf,'color','g'); hold on axis([-6,6,-4,4]); grid on axis('off'); xa0=-5;%活塞左顶点坐标 xa1=-2.5;%活塞右顶点坐标 xb0=-2.5;%连杆左顶点坐标 xb1=2.2;%连杆右顶点坐标 x3=3.5;%转轮坐标 y3=0;%转轮坐标 x4=xb1;%设置连杆头的初始位置横坐标

y4=0;%设置连杆头的初始位置纵坐标 x5=xa1; y5=0; x6=x3;%设置连轴初始横坐标 y6=0;%设置连轴初始纵坐标 a=0.7; b=0.7 c=0.7 a1=line([xa0;xa1],[0;0],'color','b','linestyle','-','linewidth',40); %设置活塞 a3=line(x3,y3,'color',[0.5 0.6 0.3],'linestyle','.','markersize',300);%设置转轮 a2=line([xb0;xb1],[0;0],'color','black','linewidth',10);%设置连杆 a5=line(x5,y5,'color','black','linestyle','.','markersize',40);%设置连杆活塞连接头 a4=line(x4,y4,'color','black','linestyle','.','markersize',50);%设置连杆连接头 a6=line([xb1;x3],[0;0],'color','black','linestyle','-','linewidth',10); a7=line(x3,0,'color','black','linestyle','.','markersize',50);%设置运动中心 a8=line([-5.1;-0.2],[0.7;0.7],'color','y','linestyle','-','linewidth',5);%设置汽缸壁 a9=line([-5.1;-0.2],[-0.72;-0.72],'color','y','linestyle','-','linewidth',5);%设置汽缸壁 a10=line([-5.1;-5.1],[-0.8;0.75],'color','y','linestyle','-','linewidth',5);%设置汽缸壁 a11=fill([-5,-5,-5,-5],[0.61,0.61,-0.61,-0.61],[a,b,c]);%设置汽缸气体 len1=4.8;%连杆长 len2=2.5;%活塞长 r=1.3;%运动半径 dt=0.015*pi; t=0; while 1 t=t+dt; if t>2*pi t=0; end lena1=sqrt((len1)^2-(r*sin(t))^2);%连杆在运动过程中横轴上的有效长度 rr1=r*cos(t);%半径在运动过程中横轴上的有效长度 xaa1=x3-sqrt(len1^2-(sin(t)*r)^2)-(r*cos(t));%活塞在运动过程中的右顶点坐标位置xaa0=xaa1-2.5;%%活塞在运动过程中的左顶点坐标位置 x55=x3-cos(t)*r;%连杆在运动过程中横坐标位置 y55=y3-sin(t)*r;%连杆在运动过程中纵坐标位置 set(a4,'xdata',x55,'ydata',y55);%设置连杆顶点运动 set(a1,'xdata',[xaa1-2.5;xaa1],'ydata',[0;0]);%设置活塞运动 set(a2,'xdata',[xaa1;x55],'ydata',[0;y55]); set(a5,'xdata',xaa1);%设置活塞与连杆连接头的运动 set(a6,'xdata',[x55;x3],'ydata',[y55;0]); set(a11,'xdata',[-5,xaa0,xaa0,-5]);%设置气体的填充 set(gcf,'doublebuffer','on');%消除震动

Matlab动画及其在物理中的应用

实验报告实验课程名称计算物理 实验项目名称Matlab动画及其在物理中的应用 年级 09级 专业物理学 学生姓名 学号 理学院 实验时间:2012 年 4 月 4 日

学生实验室守则 一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。 二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。 三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。 四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。 五、实验中要节约水、电、气及其它消耗材料。 六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。 七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。 八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。 九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。 十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。 十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。

抛体运动的规律教案

5.3 抛体运动的规律 .★新课标要求 1.知识与技能: (1)知道抛体运动的受力特点。 (2)能把数学知识与实验结论结合起来总结平抛运动的规律,并能应用于斜抛运动,掌握处理抛体运动的方法。 (3)了解斜抛运动。 2.过程与方法 (1)在对平抛运动特点的感性认识基础上上升到理性思维,使学生体会并理解在平面上应用牛顿定律的方法。 (2)进一步认识和掌握利用数学知识解决物理问题的方法。 3.情感.态度与价值观 (1)体会利用数学知识表达物理规律的和谐与美,养成良好的思维习惯。 (2)领略抛体的对称与美,培养学生对科学的好奇心与求知欲。 (3)通过用学到的方法解决没有感性认识的斜抛运动,使学生获得成功的体验,增强学生学习与探究的欲望。 ★.设计思路 前面一节是运用实验探究了平抛运动的特点,有了感性认识,本节的学习可以看作是由感性认识到理性思维的升华过程;引导学生从一维情景转向二维情景,体会并理解在二维情景下应用牛顿定律的方法。本节内容由于通过实验进行研究的可操作性较差,所以我借助课件来展示抛体运动,然后引导学生通过在水平和竖直两个方向的受力分析平抛运动的物体在两个方向的运动性质,发现问题,想办法解决问题。然后运用学到的知识解决几个实际问题,使学生获得成功的体验 ★教学重点 分析归纳抛体运动的规律 ★教学难点 应用数学知识分析归纳抛体运动的规律 ★教学方法 教师启发、引导,学生归纳分析,讨论、交流学习成果。 ★教学课时 2课时 ★教学工具 投影仪等多媒体教学设备 ★教学过程 (一)引入新课 演示实验:(1)多个角度将粉笔头抛出 (2)多个角度将纸片抛出 提出问题:(1)粉笔头和纸片的运动都是抛体运动吗? (2)什么是抛体运动呢? (二)进行新课 一、抛体运动的定义 1.将物体以一定的初速度向空中抛出,仅在重力作用下物体所做的运动叫做抛体运动。 2.抛体运动的一般特征: 有一定初速度、只受重力作用、 运动轨迹是直线或曲线 3.生活中常见的抛体运动

Matlab动画程序 弹性蹦球演示过程

Matlab动画程序弹性蹦球演示过程 figure(1);%定义函数 axis([-5.1,5,-0.05,1.05]);%绘制二维图形 hold on;%保持当前图形及轴系所有的特性 axis('off');%覆盖坐标刻度,并填充背景 %通过填充绘出台阶及两边的挡板 fill([4.12,4.22,4.22,4.12],[-0.05,-0.05,1.05,1.05],'y'); fill([-5,-3.2,-3.2,-5],[-0.05,-0.05,0,0],'g'); fill([-3.2,-2.8,-2.8,-3.2],[-0.05,-0.05,0.2,0.2],'g'); fill([-3.2,-1.4,-1.4,-3.2],[0.2,0.2,0.25,0.25],'g'); fill([-1.4,-1,-1,-1.4],[0.2,0.2,0.45,0.45],'g'); fill([-1.4,0.4,0.4,-1.4],[0.45,0.45,0.5,0.5],'g'); fill([0.4,0.8,0.8,0.4],[0.45,0.45,0.7,0.7],'g'); fill([0.4,2.0,2.0,0.4],[0.7,0.7,0.75,0.75],'g'); fill([2.0,2.3,2.3,2.0],[-0.05,-0.05,0.75,0.75],'g'); fill([2.3,4.12,4.12,2.3],[-0.05,-0.05,0,0],'g'); %x2=line([-5,5],[0.25,0.25],'color','g','linestyle','-', 'markersize',50)%设置台阶边框线,颜色,擦试方式 %line([-5,5],[0.5,0.5],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 %line([-5,5],[0.75,0.75],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜

【谷速软件】matlab源码-电梯动画演示程序

figure('name','自控电梯'); axis([-2.0,15.0,-2.0,15.0]) hold on fill([-2,15,15,-2],[-2,-2,15,15],[0.5,0.2,0.3]); x1=[8 8 10 10]; y1=[6 0 0 6]; x2=[10 10 12 12]; text(-1,8,'上升','fontsize',10,'color','c'); text(4,8,'下降','fontsize',10,'color','c'); text(6,12.5,'控制电机','fontsize',10,'color','c'); text(12.5,3,'电梯','fontsize',10,'color','c'); text(5,4.5,'关闭','fontsize',10,'color','c'); text(5,1.5,'打开','fontsize',10,'color','c'); l1=line([2;5.5],[11;11],'color','c','linestyle','-','linewi dth',2); l2=line([2;2],[9;11],'color','c','linestyle','-','linewidth ',2); l3=line([1;1],[7;9],'color','c','linestyle','-','linewidth', 2); l4=line([3;3],[7;9],'color','c','linestyle','-','linewidth', 2);

2);%绘制导线 k1=line([2;1],[6;7],'color','r','linestyle','-','linewidth', 2);%单刀双掷开关 k2=line([4;5],[3;4],'color','b','linestyle','-','linewidth', 2);%单刀双掷开关 g1=line([7.7;8],[3;3],'color','b','linestyle','-','linewidt h',2); g2=line([7.7;7.7],[3;4],'color','b','linestyle','-','linewi dth',2); g3=line([7.4;7.7],[2;4],'color','b','linestyle','-','linewi dth',2); g4=line([7.4;7.4],[2;4],'color','b','linestyle','-','linewi dth',2); g5=line([7.1;7.4],[2;4],'color','b','linestyle','-','linewi dth',2); g6=line([7.1;7.1],[2;4],'color','b','linestyle','-','linewi dth',2); g7=line([6.8;7.1],[2;4],'color','b','linestyle','-','linewi dth',2); g8=line([6.8;6.8],[2;4],'color','b','linestyle','-','linewi dth',2);

matlab动画演示17个实例

1.弹性蹦球演示程序 figure(1);%定义函数 axis([-5.1,5,-0.05,1.05]);%绘制二维图形 hold on;%保持当前图形及轴系所有的特性 axis('off');%覆盖坐标刻度,并填充背景 %通过填充绘出台阶及两边的挡板 fill([4.12,4.22,4.22,4.12],[-0.05,-0.05,1.05,1.05],'y'); fill([-5,-3.2,-3.2,-5],[-0.05,-0.05,0,0],'g'); fill([-3.2,-2.8,-2.8,-3.2],[-0.05,-0.05,0.2,0.2],'g'); fill([-3.2,-1.4,-1.4,-3.2],[0.2,0.2,0.25,0.25],'g'); fill([-1.4,-1,-1,-1.4],[0.2,0.2,0.45,0.45],'g'); fill([-1.4,0.4,0.4,-1.4],[0.45,0.45,0.5,0.5],'g'); fill([0.4,0.8,0.8,0.4],[0.45,0.45,0.7,0.7],'g'); fill([0.4,2.0,2.0,0.4],[0.7,0.7,0.75,0.75],'g'); fill([2.0,2.3,2.3,2.0],[-0.05,-0.05,0.75,0.75],'g'); fill([2.3,4.12,4.12,2.3],[-0.05,-0.05,0,0],'g'); %x2=line([-5,5],[0.25,0.25],'color','g','linestyle','-', 'markersize',50)%设置台阶边框线,颜色,擦试方式 %line([-5,5],[0.5,0.5],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 %line([-5,5],[0.75,0.75],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式 head=line(-5,1,'color','r','linestyle','.','erasemode','xor', 'markersize',60);%设置小球颜色,大小,线条和擦试方式 %body=line(-5,1,'color','b','linestyle','-','erasemode','none'); %描绘轨迹线 %设置初始条件 while 1 t=4; dt=0.001; w=0; dw=0.001; w=0;%设置球弹起的初始位置 %设置球弹起的高度 while t<=4.12 t=dt+t; if w<=1 w=dw+w; else w=-1; end y=(-w*w)+1; set(head,'xdata',t,'ydata',y);%设置球的运动 %set(body,'xdata',t,'ydata',y);%描绘轨迹线

MATLAB程序的设计报告--基于MATLAB动画播放及音乐播放

. . 《MATLAB程序设计》课程设计报告 设计题目:基于MATLAB的动画演示 及背景音乐插入 专业: 2011级通信工程 (学号):储兆雄 1162310213 邓少林 1162310214 徐凯越 1162310223 指导教师:倪建军(博士/副教授) 时间: 2013年12月20日

目录 1、设计目的 2、总体设计 3、具体设计(功能实现) 4、结果分析 5、改进方向 6、心得体会 文献 附录

1、设计目的 学会运用matlab工具箱实现matlab GUI设计,处理动画运行,以及添加背景音乐,并实现其动态操作,如继续、暂停等功能。 2、总体设计

主要包括:动画模块,音乐模块,动画显示模块 3、具体设计(功能实现) 1) 动画模块 (1)打开动画文件:从文件打开对话框选择动画程序,实现动画播放的可选择性 程序实现代码如下: function btnvopen_Callback(hObject, eventdata, handles) % hObject handle to btnvopen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global vfname %动画文件名 [vfname vpname vindex]=uigetfile('*.m','choose moive file'); len=length(vfname); if vindex set(handles.txtvname,'string',vfname(1:len-2)) end 打开对话框效果如下:

MATLAB 动力学公式

系统动力学方程为: Mx?J T K(L2)(L2?L1)=F(1) Iq+r0K(L2)(L2?L1)=u(2) 其中公式(1)的各符号如下 (M6×6,I3×3,r,R,r0,ES,L0,α1,α2,α3,Ja1,Ja2,Ja3,c均为常数) M6×6=diag([Jm1+R2m1,Jm2+R2m2,Jm3+R2m3,M,M,Je])(3) x6×1=[θ1(t),θ2(t),θ3(t),X(t),Y(t),?(t)]T(4) K(L2)3×3=ES?diag(L2)(5) L2=[L21(t) L22(t) L23(t) ]=[ L0?r0q1(t) L0?r0q2(t) L0?r0q3(t) ](6) L1=[√(X?Rcosθ1+rcos(?+α1))2+(Y?Rsinθ1+rsin(?+α1))2 √(X?Rcosθ2+rcos(?+α2))2+(Y?Rsinθ2+rsin(?+α2))2 √(X?Rcosθ3+rcos(?+α3))2+(Y?Rsinθ3+rsin(?+α3))2 ](7) L1=Jx(8) F6×1= [ F1(t) F2(t) F3(t) 0] (9) 其中公式(2)的各符号如下 I3×3=diag([Ja1,Ja2,Ja3])(10) q3×1=[q1(t),q2(t),q3(t)]T(11) u=[u1(t) u2(t) u3(t) ](12) X(t),Y(t),?(t)的变化规律为 X(t)=c?sin(3t)?cos?t(13) Y(t)=c?sin(3t)?sin?t(14) ?(t)=0(15) t∈[0,180](16)

相关文档
最新文档