三体问题的仿真与实现5篇

时间:2019-05-14 19:41:49下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《三体问题的仿真与实现》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《三体问题的仿真与实现》。

第一篇:三体问题的仿真与实现

前 言

1.1 论文的背景

在太阳系内的天体都可以近似看做球形,并且与他们之间的距离相比,他们的的大小就可以忽略不计,因而他们能被看做质点。因此,可以用现代动力天文学的基础理论来研究这个问题。这部分的天体力学以牛顿的万有引力理论开始。从1687年的《数学原理》出版之时开始,证实牛顿的理论是否能够独立的提供一个完整的关于天体如何在太空中运动的认识是非常重要的。沿着这个思路进行研究,我们需要根据牛顿的万有引力定律来确定彼此吸引的n体之间的相对运动。

牛顿曾经用几何学原理解决了只存在相互引力作用的两个球的运动这一两体问题。在1710年,Johann Bernoulli证明,在两体问题中,一个粒子相对于另外一个粒子的运动可以被描述为一个圆锥曲线。在1734年,Daniel Bernoulli因为他关于分析处理两体问题的研究获得了法国科学院奖。在1744年,这个问题被Euler完全的解决了。同时对多维问题的研究也已经在进行中。在需要关于月球运动知识的驱动下,研究人员研究了太阳,地球和月亮构成的三体系统,并且月球理论很快就成为了早期研究的问题。

在经典力学,量子力学和天文学中,三体问题是一个出名的,还没有解决的问题,它被Whittaker描述为在所有动力学问题中最出名的问题,Hilbert认为它是一个完美数学问题的标准。天体物理中的三体问题可以简单的被描述为:三个天体在他们之间的相互之间的万有引力作用下,给出各个天体的初始条件,包括三个天体的质量、初始位置和初始速度,确定它们的后续运动,包括位置和速度随时间的变化。

像许多数学问题一样,简单的问题声明后面往往覆盖了问题解决方法的复杂性。虽然一体和两体的问题能够以封闭的形式通过初等函数方式来解决,但是三体问题是一个复杂的线性问题,没有相似的解决方法存在。探究三体问题的方式大抵能够分为三类:第一类是分析方法,其基本原理是把天体的坐标和速度展开为时间或其它小参数的级数形式的近似解析表达式,讨论天体的坐标和轨道要素随时间的变化规律;第二类是定性方法,选用微分方程的定性理论来研究很长一段时间内三体运动的宏观运动规律和全局性质;第三类是数值方法,这是直接依据微分方程的计算方式得出天体在特定时刻的详细位置和速度。这三类方法各有利弊。

因为求解三体问题的困难在于它的不确定性和不可预测性,可以考虑计算机在迭代计算中的优势,选择第三类方法,基于受力分析和经典力学,求其数值解。1.2 论文相关的国内外动态及研究价值

从三体问题被提出的300年间,人们只发现3族周期性特解。在十八和十九世纪,几乎所有著名的数学家们都曾试图解决这个问题,但是问题的进展不大。截止到目前为止,三体问题特解的族数被扩充到了16族。与此同时,在失败的尝试中,微分方程的理论不断地发展成为数学的一门更成熟的分支。

作为一个能被简单描述的问题,除了其内在的吸引力,三体问题与太阳系统稳定性有着密切的联系,这使得对三体系统的研究成为潜在的解决太阳系统稳定性问题的解决方案。多年来,人们对这个问题进行了大量的研究,从1750年到20世纪初,关于这个问题有800多篇援引了许多杰出的数学家和天文学家成果的论文发表。因此,除了解决一个重要的难题,更重要的是在解决问题的过程当中产生了好几种崭新的数学思想。这些数学理论的进步已经深入到不同的领域,包括近代动力学问题的理论。三体问题的研究加深了人们对天体运动的认识,激励了天体力学和数学物理的进一步成长,尤其是对人们研究太空火箭轨道和双星演变很有帮助。1.3 本文的研究内容

本文决定通过计算机的数值运算,利用经典力学中的牛顿三大定律和万有引力定律迭代求解天体运动中的三体问题。

同时,本文利用MATLAB的GUI功能,设计出简洁友好的界面,并且通过动画的方法将天体的位置和速度在空间直角坐标系上实时的表示出来,作出了天体物理实验用计算机模拟来进行的尝试。1.4 本文的创新之处

首先:通过理论与实践相结合的方式生动的展示了原本静态的文字概念。其次:通过MATLAB的GUI界面,可以让用户在不必了解程序内部实现的情况下,给出三个天体的初始条件,包括三个天体的质量、初始位置和初始速度,就可以知道随着时间的推移其宏观的位置和速度以及运动的宏观规律和全局性质。同时,还可以在不同的观察角度了解它们的运动过程。模型假设

1)忽略相对论效应的影响;

2)不考虑其它天体对系统的作用,所处宇宙空间是各向同性的; 3)忽略宇宙空间粒子、潮汐力的影响; 4)假设运动过程中没有能量损失;

5)将天体视为质点,不考虑它们在运动的过程中彼此之间的相互碰撞; 模型建立

3.1 具体时刻的状态

因为三个天体的位置和速度是随时间变化的,现在取很短的时间间隔t,假定这段时间间隔内系统参数没有变化,则可以考虑从系统每一时刻的状态计算后下一时刻的状态。在每一时刻,每一个天体都有各自的位置与速度,三个天体总共有六个未知量,每两个天体之间应用万有引力定律和牛顿第二定律可以列出两个方程,总共六个方程,这六个方程组成的方程组足可以求解这六个未知量。如果分割的时间间隔无限小,则可以求出精确解,但是在现实中这是没法完成的。因此,我们可以将时间分成许多小部分,用计算机迭代求解,得到随时间变化的系统的各个参量和系统的末状态。3.2 受力分析

如图3-1所示,每个天体都受到其他两个天体的万有引力作用。为方便计算,将天体1对天体2的作用,天体2对天体3的作用,天体3对天体1的作用分别按直角坐标系分解为f12x,f12y,f12z,f23x,f23y,f23z,f31x,f31y,f31z。由于f12=f21,f23=f32,f31=f13,可以用式子右边等效表示左边。

在万有引力f12、f23、f31作用下,天体

1、天体

2、天体3的加速度分别为。

图3-1 三体问题受力分析

3.3 运动规律及迭代方程

一、万有引力定律

二、牛顿第二定律

三、速度迭代

四、位置迭代

求解时还须将加速度a,速度迭代方程,位置迭代方程按直角坐标系分解如附录1。

用计算机编程求解,即可得任意时刻三个天体的位置和速度。模型求解与系统仿真

4.1 编码与运行

(1)系统所需的软、硬件

系统所用的硬件是普通的PC机。本程序的编码和界面设计部分用MATLAB进行开发。

(2)三体问题的编码

1o三个天体各个参数的初始化部分。

函数ThreeBodyProblem_OpeningFcn(hObject, eventdata, handles, varargin)是该程序的启动函数。初始化各个天体参数的部分已在程序代码中标注: function ThreeBodyProblem_OpeningFcn(hObject, eventdata, handles, varargin)ThreeBodyProblem的创建函数,此函数没有返回值,详情请参见OutputFcn hObject

图形句柄

eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息 varargin

ThreeBodyProblem 的启动参数(详情请参见 VARARGIN)

初始化第一个天体的质量,位置和速度

handles.FirstBodyMData = 0;handles.FirstBodyXData = 0;handles.FirstBodyYData = 0;handles.FirstBodyZData = 0;handles.FirstBodyUData = 0;handles.FirstBodyVData = 0;handles.FirstBodyWData = 0;

初始化第二个天体的质量,位置和速度

handles.SecondBodyMData = 0;handles.SecondBodyXData = 0;handles.SecondBodyYData = 0;handles.SecondBodyZData = 0;handles.SecondBodyUData = 0;handles.SecondBodyVData = 0;handles.SecondBodyWData = 0;

初始化第三个天体的质量,位置和速度

handles.ThirdBodyMData = 0;handles.ThirdBodyXData = 0;handles.ThirdBodyYData = 0;handles.ThirdBodyZData = 0;handles.ThirdBodyUData = 0;handles.ThirdBodyVData = 0;handles.ThirdBodyWData = 0;

handles.output = hObject;

此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject, handles);

默认值按钮的回调函数,用于设置三个天体的默认参数值,并且将设置的默认参数值显示到图形界面上:

function default_Callback(hObject, eventdata, handles)hObject

default控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

在图形界面的第一个天体的文本输入框内显示默认的输入值,此输入值为太阳的参数。

set(handles.FirstBodyM,'String',19.89);set(handles.FirstBodyX,'String',0);set(handles.FirstBodyY,'String',0);set(handles.FirstBodyZ,'String',0);set(handles.FirstBodyU,'String',0);set(handles.FirstBodyV,'String',0);set(handles.FirstBodyW,'String',0);将太阳的参数保存为“GUI数据”形式,以便共享 handles.FirstBodyMData = 19.89*10^29;handles.FirstBodyXData = 0;handles.FirstBodyYData = 0;handles.FirstBodyZData = 0;handles.FirstBodyUData = 0;handles.FirstBodyVData = 0;handles.FirstBodyWData = 0;在图形界面的第二个天体的文本输入框内显示默认的输入值,此输入值为地球的参数。

set(handles.SecondBodyM,'String',59.742);set(handles.SecondBodyX,'String',14.960);set(handles.SecondBodyY,'String',0);set(handles.SecondBodyZ,'String',0);set(handles.SecondBodyU,'String',0);set(handles.SecondBodyV,'String',29.78);set(handles.SecondBodyW,'String',0);将地球的参数保存为“GUI数据”形式,以便共享 handles.SecondBodyMData = 59.742*10^23;handles.SecondBodyXData = 14.960*10^10;handles.SecondBodyYData = 0;handles.SecondBodyZData = 0;handles.SecondBodyUData = 0;handles.SecondBodyVData = 29.78*10^3;handles.SecondBodyWData = 0;在图形界面的第三个天体的文本输入框内显示默认的输入值,此输入值为月球的参数。

set(handles.ThirdBodyM,'String',0.7349);set(handles.ThirdBodyX,'String',14.9984);set(handles.ThirdBodyY,'String',0);set(handles.ThirdBodyZ,'String',0);set(handles.ThirdBodyU,'String',0);set(handles.ThirdBodyV,'String',33.7953);set(handles.ThirdBodyW,'String',0);

将月球的参数保存为“GUI数据”形式,以便共享 handles.ThirdBodyMData = 0.7349*10^23;handles.ThirdBodyXData = 14.9984*10^10;handles.ThirdBodyYData = 0;handles.ThirdBodyZData = 0;handles.ThirdBodyUData = 0;handles.ThirdBodyVData = 33.7953*10^3;handles.ThirdBodyWData = 0;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

2o从文本输入框中按顺序输入三个天体的各个参数。

第一个天体的各个文本输入框的回调函数,用于获得文本输入框内输入的值,代码的具体解释已在程序中给出:

function FirstBodyX_Callback(hObject, eventdata, handles)hObject

FirstBodyX 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyXData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyX_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyX 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function FirstBodyY_Callback(hObject, eventdata, handles)hObject

FirstBodyY控件的句柄(详情请参见 GCBO)

eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyYData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyY_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyY 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function FirstBodyZ_Callback(hObject, eventdata, handles)hObject

FirstBodyZ控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyZData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyZ_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyZ 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function FirstBodyU_Callback(hObject, eventdata, handles)hObject

控件的句柄(详情请参见 GCBO)FirstBodyU eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyUData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyU_CreateFcn(hObject, eventdata, handles)设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyX_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyU 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function FirstBodyV_Callback(hObject, eventdata, handles)hObject

FirstBodyV控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyVData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyV_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyV 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function FirstBodyW_Callback(hObject, eventdata, handles)hObject

FirstBodyW控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyWData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyW_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyW 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function FirstBodyM_Callback(hObject, eventdata, handles)hObject

FirstBodyM控件的句柄(详情请参见 GCBO)

eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.FirstBodyMData=str2double(tempData)*10^29;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function FirstBodyM_CreateFcn(hObject, eventdata, handles)hObject

FirstBodyM 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

第二个天体文本输入框的回调函数,用于获得文本输入框内输入的值,代码的具体解释已在程序中给出:

function SecondBodyX_Callback(hObject, eventdata, handles)hObject

SecondBodyX控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyXData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyX_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyX控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function SecondBodyY_Callback(hObject, eventdata, handles)hObject

SecondBodyY控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyYData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyY_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyY控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function SecondBodyU_Callback(hObject, eventdata, handles)hObject

SecondBodyU控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyUData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyU_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyU控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function SecondBodyV_Callback(hObject, eventdata, handles)hObject

SecondBodyV控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyVData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyV_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyV控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function SecondBodyZ_Callback(hObject, eventdata, handles)hObject

SecondBodyZ 控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyZData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyZ_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyZ控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建 提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function SecondBodyW_Callback(hObject, eventdata, handles)hObject

SecondBodyW控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyWData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyW_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyW控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function SecondBodyM_Callback(hObject, eventdata, handles)hObject

SecondBodyM控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.SecondBodyMData=str2double(tempData)*10^23;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function SecondBodyM_CreateFcn(hObject, eventdata, handles)hObject

SecondBodyM控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

第三个天体文本输入框的回调函数,用于获得文本输入框内输入的值,代码的具体解释已在程序中给出:

function ThirdBodyX_Callback(hObject, eventdata, handles)hObject

ThirdBodyX控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyXData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyX_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyX控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function ThirdBodyY_Callback(hObject, eventdata, handles)hObject

ThirdBodyY控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyYData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyY_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyY控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function ThirdBodyZ_Callback(hObject, eventdata, handles)hObject

ThirdBodyZ控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyZData=str2double(tempData)*10^10;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyZ_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyZ控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function ThirdBodyU_Callback(hObject, eventdata, handles)hObject

ThirdBodyU控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyUData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyU_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyU控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function ThirdBodyV_Callback(hObject, eventdata, handles)hObject

ThirdBodyV控件的句柄(详情请参见 GCBO)

eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyVData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyV_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyV控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function ThirdBodyW_Callback(hObject, eventdata, handles)hObject

ThirdBodyW控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyWData=str2double(tempData)*10^3;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyW_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyW控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

function ThirdBodyM_Callback(hObject, eventdata, handles)hObject

ThirdBodyM控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符 tempData=get(hObject,'String');将字符转换为双精度数

handles.ThirdBodyMData=str2double(tempData)*10^23;此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用

guidata(hObject,handles);

设置完所有属性后,在对象的创建过程中执行以下代码 function ThirdBodyM_CreateFcn(hObject, eventdata, handles)hObject

ThirdBodyM控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

3o开始计算三个天体的实时位置和速度

使用三个天体的各个参数进行迭代运算,同时画出三个天体的运行动画。这里由于坐标值的数量级是1010,x,y,z坐标轴的范围为-100~100,所以在画图的时候,计算出来的各个坐标值都要除以1010。如果其中一个天体的质量为0,那么程序将做两体问题的运算:

function OK_Callback(hObject, eventdata, handles)hObject

OK控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

清除坐标系原有的内容 cla 获得程序使用者输入的小球质量、刚开始小球的位置与速度,设置万有引力常量默认值以及程序的运动时间 g = 6.63*10^-11;获得输入框中第一个天体的各个参数

m1 = handles.FirstBodyMData;x1 = handles.FirstBodyXData;y1 = handles.FirstBodyYData;z1 = handles.FirstBodyZData;u1 = handles.FirstBodyUData;v1 = handles.FirstBodyVData;w1 = handles.FirstBodyWData;获得输入框中第二个天体的各个参数

m2 = handles.SecondBodyMData;x2 = handles.SecondBodyXData;y2 = handles.SecondBodyYData;z2 = handles.SecondBodyZData;u2 = handles.SecondBodyUData;v2 = handles.SecondBodyVData;w2 = handles.SecondBodyWData;获得输入框中第三个天体的各个参数

m3 = handles.ThirdBodyMData;x3 = handles.ThirdBodyXData;y3 = handles.ThirdBodyYData;z3 = handles.ThirdBodyZData;u3 = handles.ThirdBodyUData;v3 = handles.ThirdBodyVData;w3 = handles.ThirdBodyWData;

控制迭代时间 time = 100000;

加网格线 grid on

坐标轴显示的空间范围

axis([-100 100-100 100-100 100])

当m1,m2,m3其中有一个为0时,程序做两体运动。否则,程序做三体运动 if m3 == 0 && m1 ~= 0 && m2 ~=0 设置天体颜色、点型、大小等参数,每次循环都重新设置整个画面 h=line('Color',[1 0 0],'Marker','.','MarkerSize',50,'erasemode','normal');i=line('Color',[0 0 1],'Marker','.','MarkerSize',40,'erasemode','normal');

以0.1的时间步长迭代,用k来控制迭代进行的次数 for k=0:0.1:time 设置步长 t=100000;万有引力定律

f12=g*m1*m2/(sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2))^3*[x1-x2,y1-y2,z1-z2];

以下为对x轴方向的计算 牛顿第二定律 ax1=-f12(1)/m1;ax2=f12(1)/m2;坐标值迭代

x1=x1+u1*t+1/2*ax1*t^2;x2=x2+u2*t+1/2*ax2*t^2;速度值迭代 u1=u1+ax1*t;u2=u2+ax2*t;

以下为对y轴方向的计算 ay1=-f12(2)/m1;ay2=f12(2)/m2;

y1=y1+v1*t+1/2*ay1*t^2;y2=y2+v2*t+1/2*ay2*t^2;

v1=v1+ay1*t;v2=v2+ay2*t;

以下为对z轴方向的计算 az1=-f12(3)/m1;az2=f12(3)/m2;

z1=z1+w1*t+1/2*az1*t^2;z2=z2+w2*t+1/2*az2*t^2;

w1=w1+az1*t;w2=w2+az2*t;

重置两个小球的位置

set(h,'xdata',x1/10^10,'ydata',y1/10^10,'zdata',z1/10^10);set(i,'xdata',x2/10^10,'ydata',y2/10^10,'zdata',z2/10^10);

刷新画面 drawnow

控制速度 pause(0.01)end elseif m1 == 0 && m3 ~= 0 && m2 ~=0 设置天体颜色、点型、大小等参数,每次循环都重新设置整个画面 i=line('Color',[0 0 1],'Marker','.','MarkerSize',40,'erasemode','normal');l=line('Color',[0 1 0],'Marker','.','MarkerSize',40,'erasemode','normal');

以0.1的时间步长迭代,用k来控制迭代进行的次数 for k=0:0.1:time 设置步长 t=100000;万有引力定律

f23=g*m2*m3/(sqrt((x2-x3)^2+(y2-y3)^2+(z2-z3)^2))^3*[x2-x3,y2-y3,z2-z3];

以下为对x轴方向的计算 牛顿第二定律 ax2=-f23(1)/m2;ax3=f23(1)/m3;坐标值迭代

x2=x2+u2*t+1/2*ax2*t^2;x3=x3+u3*t+1/2*ax3*t^2;速度值迭代 u2=u2+ax2*t;u3=u3+ax3*t;

以下为对y轴方向的计算 ay2=-f23(2)/m2;ay3=f23(2)/m3;

y2=y2+v2*t+1/2*ay2*t^2;y3=y3+v3*t+1/2*ay3*t^2;

v2=v2+ay2*t;v3=v3+ay3*t;

以下为对z轴方向的计算 az2=-f23(3)/m2;az3=f23(3)/m3;

z2=z2+w2*t+1/2*az2*t^2;z3=z3+w3*t+1/2*az3*t^2;

w2=w2+az2*t;w3=w3+az3*t;

重置三个小球的位置

set(i,'xdata',x2/10^10,'ydata',y2/10^10,'zdata',z2/10^10);set(l,'xdata',x3/10^10,'ydata',y3/10^10,'zdata',z3/10^10);

刷新画面 drawnow

控制速度 pause(0.01)end elseif m2 == 0 && m3 ~= 0 && m1 ~=0 设置天体颜色、点型、大小等参数,每次循环都重新设置整个画面 h=line('Color',[1 0 0],'Marker','.','MarkerSize',50,'erasemode','normal');l=line('Color',[0 1 0],'Marker','.','MarkerSize',40,'erasemode','normal');

以0.1的时间步长迭代,用k来控制迭代进行的次数 for k=0:0.1:time 设置步长 t=100000;万有引力定律

f31=g*m3*m1/(sqrt((x3-x1)^2+(y3-y1)^2+(z3-z1)^2))^3*[x3-x1,y3-y1,z3-z1];

以下为对x轴方向的计算 牛顿第二定律 ax1=+f31(1)/m1;ax3=-f31(1)/m3;坐标值迭代

x1=x1+u1*t+1/2*ax1*t^2;x3=x3+u3*t+1/2*ax3*t^2;速度值迭代 u1=u1+ax1*t;u3=u3+ax3*t;

以下为对y轴方向的计算 ay1=+f31(2)/m1;ay3=-f31(2)/m3;

y1=y1+v1*t+1/2*ay1*t^2;y3=y3+v3*t+1/2*ay3*t^2;

v1=v1+ay1*t;v3=v3+ay3*t;

以下为对z轴方向的计算 az1=+f31(3)/m1;az3=-f31(3)/m3;

z1=z1+w1*t+1/2*az1*t^2;z3=z3+w3*t+1/2*az3*t^2;

w1=w1+az1*t;w3=w3+az3*t;

重置三个小球的位置

set(h,'xdata',x1/10^10,'ydata',y1/10^10,'zdata',z1/10^10);set(l,'xdata',x3/10^10,'ydata',y3/10^10,'zdata',z3/10^10);

刷新画面 drawnow

控制速度 pause(0.01)end else

设置天体颜色、点型、大小等参数,每次循环都重新设置整个画面 h=line('Color',[1 0 0],'Marker','.','MarkerSize',50,'erasemode','normal');i=line('Color',[0 0 1],'Marker','.','MarkerSize',40,'erasemode','normal');l=line('Color',[0 1 0],'Marker','.','MarkerSize',40,'erasemode','normal');

以0.1的时间步长迭代,用k来控制迭代进行的次数 for k=0:0.1:time 设置步长 t=100000;万有引力定律

f12=g*m1*m2/(sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2))^3*[x1-x2,y1-y2,z1-z2];

f23=g*m2*m3/(sqrt((x2-x3)^2+(y2-y3)^2+(z2-z3)^2))^3*[x2-x3,y2-y3,z2-z3];

f31=g*m3*m1/(sqrt((x3-x1)^2+(y3-y1)^2+(z3-z1)^2))^3*[x3-x1,y3-y1,z3-z1];

以下为对x轴方向的计算 牛顿第二定律

ax1=(-f12(1)+f31(1))/m1;ax2=(f12(1)-f23(1))/m2;ax3=(f23(1)-f31(1))/m3;坐标值迭代

x1=x1+u1*t+1/2*ax1*t^2;x2=x2+u2*t+1/2*ax2*t^2;x3=x3+u3*t+1/2*ax3*t^2;速度值迭代 u1=u1+ax1*t;u2=u2+ax2*t;u3=u3+ax3*t;

以下为对y轴方向的计算 ay1=(-f12(2)+f31(2))/m1;ay2=(f12(2)-f23(2))/m2;ay3=(f23(2)-f31(2))/m3;

y1=y1+v1*t+1/2*ay1*t^2;y2=y2+v2*t+1/2*ay2*t^2;y3=y3+v3*t+1/2*ay3*t^2;

v1=v1+ay1*t;v2=v2+ay2*t;v3=v3+ay3*t;

以下为对z轴方向的计算 az1=(-f12(3)+f31(3))/m1;az2=(f12(3)-f23(3))/m2;az3=(f23(3)-f31(3))/m3;

z1=z1+w1*t+1/2*az1*t^2;z2=z2+w2*t+1/2*az2*t^2;z3=z3+w3*t+1/2*az3*t^2;

w1=w1+az1*t;w2=w2+az2*t;w3=w3+az3*t;

重置三个小球的位置

set(h,'xdata',x1/10^10,'ydata',y1/10^10,'zdata',z1/10^10);set(i,'xdata',x2/10^10,'ydata',y2/10^10,'zdata',z2/10^10);set(l,'xdata',x3/10^10,'ydata',y3/10^10,'zdata',z3/10^10);

刷新画面 drawnow

控制速度 pause(0.01)end end

4o关闭按钮的回调函数,用来结束程序,关闭图形界面

function Close_Callback(hObject, eventdata, handles)hObject

Close控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

清除清空当前画图窗口,以方便画新的图形 clf;关闭界面 close;

5o改变观察者的视角,可以从各个角度观察三体的运行状态

用于控制方向角的滑键的回调函数,用于同步方位角文本输入框中显示的数值,同时改变观察者的观察方位角:

function azSlider_Callback(hObject, eventdata, handles)hObject

azSlider控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前滑键的值 az=get(hObject,'Value');将字符转换为双精度数

el=str2double(get(handles.elEditText,'String'));改变方位角输入文本框的显示数值,此数值为当前滑键所代表的值 set(handles.azEditText,'String',num2str(az));改变观察视角 view([az,el]);

设置完所有属性后,在对象的创建过程中执行以下代码 function azSlider_CreateFcn(hObject, eventdata, handles)hObject

azSlider控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 滑块控件通常有一个浅灰色的背景

if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor',[.9.9.9]);end

用于控制方位角的文本输入框的回调函数,用于同步方位角滑键的值,同时改变观察者的方位角:

function azEditText_Callback(hObject, eventdata, handles)hObject

azEditText控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符。同时,将字符转换为双精度数 az=str2double(get(hObject,'String'));改变方位角滑键的值 set(handles.azSlider,'Value',az);获得当前的仰角

el=str2double(get(handles.elEditText,'String'));改变观察视角 view([az,el]);

设置完所有属性后,在对象的创建过程中执行以下代码 function azEditText_CreateFcn(hObject, eventdata, handles)hObject

azEditText控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

用于控制仰角的滑键的回调函数,用于同步仰角文本输入框中显示的数值,同时改变观察者的仰角:

function elSlider_Callback(hObject, eventdata, handles)hObject

elSlider控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前滑键的值 el=get(hObject,'Value');将字符转换为双精度数

az=str2double(get(handles.azEditText,'String'));改变仰角输入文本框的显示数值,此数值为当前滑键所代表的值 set(handles.elEditText,'String',num2str(el));改变观察视角 view([az,el]);

设置完所有属性后,在对象的创建过程中执行以下代码

function elSlider_CreateFcn(hObject, eventdata, handles)hObject

elSlider控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 滑块控件通常有一个浅灰色的背景

if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor',[.9.9.9]);end

用于控制仰角的文本输入框的回调函数,用于同步仰角滑键的值,同时改变观察者仰角:

function elEditText_Callback(hObject, eventdata, handles)hObject

elEditText控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

获得当前输入框的输入字符。同时,将字符转换为双精度数 el=str2double(get(hObject,'String'));改变仰角滑键的值

set(handles.elSlider,'Value',el);获得当前的方位角

az=str2double(get(handles.azEditText,'String'));改变观察视角 view([az,el]);

设置完所有属性后,在对象的创建过程中执行以下代码 function elEditText_CreateFcn(hObject, eventdata, handles)hObject

elEditText控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,它会在调用完所有的CreateFcn函数后创建

提示: 可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');end

用于恢复默认方位角和仰角的默认值按钮的回调函数,用于将方位角恢复为默认值-37.50,仰角恢复为默认值300,同时更新方位角滑键的值,方位角文本输入框显示的值,仰角滑键的值,仰角文本输入框显示的值: function ViewDefault_Callback(hObject, eventdata, handles)hObject

ViewDefault控件的句柄(详情请参见 GCBO)eventdata

保留在MATLAB里面的参数,它的作用是方便后面的程序使用 handles

GUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)

设置方位角滑键的数值为方位角的默认值 set(handles.azSlider,'Value',-37.5);设置方位角文本框中显示的数值为方位角的默认值 set(handles.azEditText,'String',-37.5);设置仰角滑键的数值为仰角的默认值 set(handles.elSlider,'Value',30);设置仰角文本框中显示的数值为仰角的默认值 set(handles.elEditText,'String',30);改变观察视角 view([-37.5,30]);4.2 基于MATLAB的三体问题的运行成果

程序的初始图形界面如图4-1,在图形界面右端文本输入框可以依次输入程序运行所需的各个参数值,包括三个天体的质量,初始位置和初始速度。默认的参数值为:m1为太阳的质量,m2为地球的质量,m3为月球质量,x2的值为日地的平均距离,v2为地球绕太阳公转的平均线速度值,x3的值为日月的平均距离,v3为月球相对于太阳的平均线速度值。同时,文本输入框内标注了所输入数值的数量级。比如:当你在m1文本输入框内输入19.89,那么程序中实际使用到的数值是19.89 1029。

图4-1 输入参数

点击“使用默认值”按钮,如图4-2,界面三个天体文本输入框内显示三个天体各个参数的默认值。

图4-2 输入默认值

单击“开始”按钮,程序开始读取文本输入框中程序使用者输入的各个参数(如果不作变动的话,程序使用默认的参数值),按照万有引力和牛顿第二定律公式进行迭代计算,确定每经过一个时间步长t时,三个天体的实时位置和速度,并且在坐标系中即时显示,。如图4-3,我们就可以看到三个天体运动的动画(在某些情况下,天体会运动到坐标轴外边去)。

图4-3 显示动画

当程序的使用者改变三个天体的初始位置和速度是,便可以得到各种不同的运行结果。

如图4-4,在控制视角仪表板中点击方位角和仰角滑键可以改变观察者的观测点。同时,在滑键右边的文本输入框内,可以实时显示当前的方位角与仰角。在方位角和仰角的文本输入框内输入方位角和仰角也可以改变观察者的观察位置,并且在文本框内输入的数值可以实时的同步到滑键上,改变滑键的位置。

图4-4 改变观察视角

结 论

本论文先从研究三体问题的理论知识和背景入手,通过查阅文献和在互联网上搜索关于三体问题的相关资料,了解到了三体问题相关国内外的最新动态。

在论文中,详细介绍了什么是三体问题,三体问题的背景以及解决三体问题所面临的难题。论文除了对三体问题的基本概念的研究,还设计了MATLAB程序,用三体问题的数值解法,作出了三体问题的模拟动画。通过MATLAB设计的GUI界面,可以使使用者在不必考虑程序内部实现的情况下,给出三个天体的初始条件,包括三个天体的初始位置和初始速度,模拟三个天体的运动情况。

在书写论文和编译程序的过程中,我学到了很多东西,培养了我分析研究事情严谨的态度和创新精神,增加了我的对程序开发的动手能力,也减少了对于新知识新领域的学习的恐惧感,非常有利于我现在的学习和工作。

参考文献

[1] A treatise on the analytical dynamics of particles and rigid bodies, 4th edition, E.T Whittaker, Cambridge University Press(1937).[2]李银山.三体问题综述[D].辽阳职业技术学院.111000;

[3] 李明涛,郑建华,于锡峥等.受摄三体问题研究[J].中国空间科学技术:2008,6:14108;

[5] 杨远玲,聂清香,吴晓梅等.N体问题的几种数值算法比较[J].计算物理:2005,23(5):599-602;

[6] Mauri Valtonen,Hannu Karttunen.The Three-Body Problem[M].America:Cambridge University Press.2006;

[7] 李立康, 於崇华, 朱政华.微分方程数值解法[M].上海: 复旦大学出版社, 1999; [8] 彭芳麟, 管靖, 胡静, 卢圣治.MATLAB 编程应用, 理论力学计算机模拟[M].北京: 清华大学出版社, 2002;

[9] 易照华.天体力学基础[J].南京: 南京大学出版社, 1993 , 39–44;

[10] 黄元义.平面圆型限制性三体问题的运动方程[D].宜宾师专学报(自然科学版), 2(1995);

[11] 易照华, 李广宇, Gerhard HEINZEL,等.共轨限制性三体问题及其应用[J].中国科学: 物理学 力学 天文学, 2010, 40: 121 – 127;

第二篇:基于以太网交换机的仿真教学系统的设计与实现(精选)

基于以太网交换机的仿真教学系统的设计与实现

摘 要:以太网交换机是一种标准的局域网技术,其通过星型拓扑结构实现各功能的运用。交换机是为两台联网设备提供连接点的一种虚电路,可有效避免数据传输冲突,进而提高数据的网络传送速度。本文从以太网交换机的工作原理及功能入手,提出了基于以太网交换机的仿真教学系统的设计与实现。

关键词:以太网交换机;仿真教学;系统;硬件设计;研究 以太网交换机的工作原理及功能

1.1 以太网交换机的工作原理

以太网交换机是一种数据链路层备,可对数据包中MAC地址信息进行识别和转发,并将对应的端口和MAC地址记录在内部的地址表内。工作流程见下文:(1)某个端口在接收数据包后开始取读该数据包内的源MAC地址,从而获取某个端口上MAC地址的机器位置;(2)获取上述内容后再对数据包中MAC地址进行取读,查找出与地址表内位置相对应的端口;(3)系统将数据包直接复制到符合MAC地址的端口上;(4)将为寻找到符合地址表内数据的端口时,系统会将数据包广播至所有端口,交换机在源机器和目的机器进行回应时,确认哪个端口可与目的MAC地址对应,在进行下一次的数据传输时便不用将数据包广播于各个端口。

1.2 以太网交换机的主要功能

以太网交换机类似于一种特殊的计算机,位于OSI模型内的第一层,主要包括RAM(随机存储器)、CPI(中央处理器)及操作系统。其通过ASIC芯片实现所有端口对交换机速率的并行转发,较二层利用软件的转发网桥速度较快。以太网交换机具有以下功能:(1)实现网段内通信的隔离。网段是在以太网交换机设备的作用下划分而成的小单元,各个网段均通过CSMA/CD的访问方式完成系统内多个用户的通信交流。该分段方式可实现不同网段上多个用户的实时消息传送,且对网络速度不造成影响。(2)构建更小的冲突域实现多个带宽的提供,以太网内交换机内的2层MAC地址可向一个及以上端口传送数据报文,进而对过滤通信数据。更小冲突域的构建可有效实现更多带宽的提供。基于以太网交换机的仿真教学系统的设计与实现

2.1 教学系统的硬件功能模块分解

本文采用MCU+ASIC体系结构实现教学系统硬件支持平台的构建,通过ASIC专用集成电路的专业传用芯片对各类业务进行处理,以满足教学系统硬件实验及交换机处理性能的要求。微处理器单元(MCU)的使用可管理教学系统和通讯各软件层。该仿真教学系统开发成本预算的较低,开发周期适中,具有简单、便捷的特点。在硬件体系结构的基础上对教学系统硬件结构进行设计,示意图见图1。

2.2 I?C接口、SMI接口及串行接口的设计

本文设计的仿真教学系统硬件结合运用了Strapping Pins和EEPROM的初始化配置,使Strapping Pins配置在跳线组的设置下,通过一个或多个管教组合完成直观教学效果的表达。

软件层和硬件支持平台间的通信接口均通过RS232串行通信接口进行连接。RS232串行口是一种9针异步串行的通信接口,软件层在解析和转换后的指令均由RS232串行口接收,接收完毕后再将执行结果传送至软件层。

2.3 外部接口10M/100Mbps网口的实现

本文采用的RTL8309SC拥有8个10M/100Mbps网口,考虑到产品的设计性、实用性和直观性,本文设计系统中的网络接口采用的是双层RJ45 71 F-1201GYD2NL。经多次试验表明,此产品的较传统的分离网格变压器而言,具有较高的可靠性,在使用过程中出错率较小,系统内部的抗干扰性有所提高。为将各个网口工作状态实时提供给学生用户,本文设计出三组LED显示出链接/通信(Link/ACT)、双工/冲突(Duplex/Collision)和显示端口速度的多组合方式。

2.4 驱动设计

在对硬件特点和功能需求进行分析后,设计出具有结构化程序的驱动程序,将C语言作为开发语言,低功耗模式0表示为LPM 0,其中LPM 0中断后便自动退出。接收中断方式被运用与串口通信,其中终端处理程序流程图见表2。

将处理程序中的主体结构设定为Switch语句,当系统内数据满足指定条件时,相对应的功能函数便会被调动,进而完成功能函数定义出的相关功能。各个函数通过设置内部寄存器完成各种功能的运行,系统会自动保存修改后的系统配置,软件层在结束程序前会收到各个执行结果。总结

本文设计和研究出的仿真教学系统符合高校的网络设备教学要求,为高校的实验教学提供了多种仿真配置方式和界面。以太网交换机教学在高校计算机网络实验室中的运用,为学生的实际操作搭建了一个良好的平台,具有较强的运用意义和较高的性价比。

[参考文献]

[1]肖明彦,窦文华.基于以太网交换机平台的SNMP代理实现[J].电讯技术,2000,40(4):99-103.[2]张伟华,魏仲慧,何昕.嵌入式通用千兆以太网接口的设计与实现[J].仪表技术与传感器,2011(6).116-118.

第三篇:天体的中三体问题

天体中的三体问题

韩博伟谈

三体问题算是经典力学里面的天体力学的老难题了,从牛顿那个时候起就是物理学家和数学家的恶梦。

先说一下什么叫三体。用物理语言来说,在一个惯性参考系中有N个质点,求解这N个质点的运动方程就是N体问题。参考系是惯性参考系,也就是说不受系统外的力的作用,所有的作用力都来自于体系内的这N个质点之间。在天体力学里面,我们通常就只考虑万有引力。

用数学语言来说,经典力学的N体问题模型就是,在三维平直空间里有N个质点,每个质点的质量都已知而且不会变化。在初始时刻,所有质点的位置和速度都已知。每个质点都只受到来自其它质点的万有引力,引力大小由牛顿的同距离平方成反比的公式描述。要求解的就是,任意一个时刻,某个质点的位置。

N=2,就是二体问题。N=3,也就是我们要说的三体问题了。

N=2的情况,早在牛顿时候就已经基本解决了。学过中学物理后,大家都会知道,两个质点在一个平面上绕着共同质心作圆锥曲线运动,轨道可以是圆、椭圆、抛物线或者双曲线。

然而三体运动的情况就糟糕得多。攻克二体问题后,牛顿很自然地开始研究三体问题,结果也是十分自然的——头痛难忍。牛顿自述对付这种头痛的方法是:用布带用力缠紧脑袋,直至发晕为止—虽则这个办法治标不治本而且没多少创意,然而毕竟还是有效果的。

其实,三体运动已经是对物理实际简化得很厉害了。比如说对质点,自转啦、形状啦我们统统不用考虑。但是只要研究实际的地球运动,就已经比质点复杂得多。比如说,地球别说不是点,连球形都不是,粗略看来是个赤道上胖出来一圈的椭球体。于是,在月球引力下,地球的自转轴方向就不固定,北极星也不会永远是那一颗。而考虑潮汐作用时,地球都不能看成是“硬”的了,地球自转也因此越来越慢。

然而即使是极其简化了的三体问题,牛顿、拉格朗日、拉普拉斯、泊松、雅可比、庞加莱等等大师们为这个祭坛献上了无数脑汁也未能将它攻克。

当然,努力不会完全白费的,许多有效的近似方法被鼓捣了出来。对于太阳系,摄动理论就是非常有效的解决问题的近似方法。而对于地月系统,则可以先把地球和月球看作是二体系统,再考虑太阳引力的影响。“月亮绕着地球转,地球绕着太阳转”的理论计算已经作得非常精确,上下几千年的日食月食都能很好地预测。而对一颗受到行星引力干扰的彗星,人们也能算出一段时间内很精确的轨道,比如天文学家可以提前几年就预测出彗星撞木星。而且,太阳系的稳定性也在很大程度上得到了证明,比如说大行星的轨道变化大体上是周期性的,不会始终单向变化下去直到行星系统解体。

为了解三体问题,那就考虑再简化些吧。认为一个质点的质量非常小,从而它对其它两个质点的万有引力可以忽略。这样一来,三体问题就简化成了“限制性三体问题”。实际上,这个简化等于是先解一个二体问题,然后再加入一个质量很小的质点,再解这个质点在二体体系中的运动方程。

然而,即使这样也还是太复杂了。于是,再作简化,就得到了“平面限制性三体问题”,就是要求三个质点都在同一个平面上。然而,即使是对这样极度简化的模型,也还是没有解析通解,也就是得到一个普遍适用的公式是不可能的。

对“平面限制性三体问题”再作简化,认为两个大质点作圆周运动,就是“平面圆型限制性三体问题”。1772年,拉格朗日在这种限制条件下找到了5个特解,也就是著名的拉格朗日点。比如下面这张图上,木星和太阳连线上有L1,L2,L3三个拉格朗日点,而在木星轨道上则有L4,L5这两个点,和太阳以及木星构成等边三角形。L1,L2,L3是不稳定的,如果小质点离开这三个点,就会越跑越远。L4,L5则是稳定的。

本来,拉格朗日点多少显得有点象数学游戏,但是自然界证明,稳定解在太阳系里确实存在实例。对于木星来说,L4和L5上各有一群小行星,就是著名的特洛伊群和希腊群小行星。

从数学方法来说,解2体问题的方法是解微分方程组,通过求积分的方式可以圆满解决,得到解析解。很自然的,物理学家和数学家们也用这种方法去对付三体问题。1772年,拉格朗日就已经把三体问题的18个方程简化成了只有6个。然而,进步到此为止了。19世纪末期的研究更是给了数学家们一连串打击。布伦斯(1887),庞加莱(1889)和潘勒斯(1898)年给出了一个比一个更严格的证明,堵死了求积分的许多途径。1941年西格尔干脆证明了代数积分法的死刑,宣布找到足够的代数积分是不可能的。当然,三体问题的数学研究不是除了失败外就一无所有,它还是带来了许多新发现,比如混沌理论就是从它的废墟中诞生的。

当然,我们还只是谈到了牛顿力学。如果考虑到广义相对论的修正,那就更糟糕了,连二体问题都只有近似解。而且,广义相对论的二体问题也不稳定,由于发射引力波损失能量,两个星体迟早会撞在一起,虽说要等的时间可能比宇宙寿命还长。

在牛顿的经典力学体系里面,对三体问题的简化可以用下面这张图大体表示一下(在这里把月球火箭的轨道计算作为一个三体运动的一个实际应用的例子,实际上比三体运动还要复杂)

二十世纪50年代后,数学家们多了一个新帮手:计算机。于是,两个新办法出来了,一个是用级数表示积分(简单代数积分不指望了),另一个则干脆是使用数值方法求近似解。

级数解在理论上获得了很大成功,比如在限制性圆型三体问题中,已经证明了所需要的积分是存在的(但是另一方面早就证明了用代数公式是不能表达的)。这些积分可以用幂级数表达,而且证明了幂级数是收敛的。但是这些幂级数收敛得太慢了,比如对拉格朗日点,为了达到可以接受的精度,至少要取10^80000项!而整个宇宙中的粒子数也就10^80个的样子。

计算机的加盟使人们对三体问题不是那么无助了。虽然没有代数公式,但用数值算法硬算的结果,精确性也不错。比如,发射飞船去探测其他行星就是典型的三体问题,旅行者2号说去海王星就一定到得了。再比如,太阳系大行星4000万年内的运动也算了出来,至少往后这段时间,太阳系的行星系统还不至于散架。

让我们看看三体问题的大致现状吧:

1.目前的研究主要集中在限制性三体问题,因为比较简化,而且有实用价值。2.对于限制性三体问题,通过级数法证明了解的存在性(这已经是非常大的成果了)。而且,天体力学的定性分析和天文观测(比如地球上繁衍了几十亿年的生命)都证明了限制性三体体系的稳定解的存在性。

3.用解决二体问题的方法,也就是代数积分的方法被确认不可能解决三体问题。

4.用计算机进行较长期的三体问题的数值计算是成功的。

5.三体问题的算法还大有可改进之处。毕竟,10^80000项的计算是太过于可怕了。

回到《三体》小说,有了“秦始皇”的“人计算机系统”,算个简化的三体问题还是可以的。不过,如果是小说中那种三个太阳的质量差不多,而且相互距离也差不多的情况,他们面对的三体问题就不能简化为限制性三体问题,计算的难度要大很多。不过,用计算机算出比较短时间的预测应该是可行的。毕竟,天气预报不一定非得要知道明年今天的具体天气,能比较准确知道一周天气就不错了(通常我们还只听听明天是否下雨呢)。三体人知道是不是该“脱水”或者“浸泡”就已经很有好处了。用观测不断修正预测,至少对小的“乱世代”不用害怕了。

当然,如果三体文明只是在I/II类文明的层次,不能通过移走恒星来釜底抽薪地解决三体问题。那么,“但重要的是改变世界”这句话就仍然是正确到了残酷的地步,预测出“三星凌空”也无助于逃脱毁灭。

到目前为止,我们一直在用纸、笔还有计算机讨论三体问题,用的都是演绎法。但不要忘了,科学方法里还有另一件更重要的武器:归纳法。我们可以用观察和实验,看看实际中的三体会是什么样子。

由于在我们日常的尺度上,万有引力弱得可以忽略,只有到了天文尺度上,引力才显出它的威力,比如地球把我们拉在地上不放。所以,在普通的实验室里面实现三体系统是不行的。我们只能把视线转向天空,去考察大自然为我们安排了什么样的实例。

当然,象我们已经看到的,在太阳系里,已经充分表现了限制性三体问题是有稳定解的。但是,就基本同量级的三体又如何呢?我们可以来看看恒星。

银河系里的恒星不下一千亿颗,象太阳这样独居的恒星其实是少数。恒星们总的来说还是喜欢热闹的。双星的数量非常多,而且很多都已经是几十亿年的老伴侣了(比如下面要谈到的南门二A/B),等于从实验上证明了二体系统的稳定性。

而三合星也不少见,但是一般都是一对双星再搭上一个远距离的单星。同样,更多数量恒星组成的聚星,也多是由双星和单星组合而成的。应该说这也强烈地暗示了,大自然也认为三体系统是不稳定的。毕竟,银河系里的三体并不是理想的三体系统,一则恒星可以相撞而合并,二来,一旦一颗恒星被抛出太远,它就可能脱离体系而主要由银河系的整体引力而控制了。通过这两种方式,三体系统就变成了稳定的二体系统了。当然,还有“四边形聚星”这种系统,恒星彼此质量相近,距离也都差不多。最著名的一个例子就是猎户座大星云M42中心的四边形聚星(用5厘米左右的望远镜,放大率50~100倍就可以分辨开)。值得注意的是,这些四边形聚星都非常年轻,比如猎户座四边形聚星,年龄就只有几百万年,对于天文学来说,这完全是婴儿期。没有发现年老的四边形聚星,说明大自然认为这种构型也不稳定,总归会瓦解掉。

猎户座大星云M42的中心区,图中央的4颗亮星就是猎户座四边形聚星

有意思的是,N值再增大,比如N=100级别的疏散星团或者N=10万级别的球状星团,又是非常稳定的力学体系了,年龄超过几十亿年乃至百亿年的这些星团比比皆是。当然,过于密集的结果就是碰撞很多,球状星团中央就有大量碰撞后合并而成的亮星。

昴星团(M45),年龄约5000万年,算是相当年轻的疏散星团,约有100颗成员星

球状星团M13,年龄超过100亿年,成员星约有30万

第四篇:太阳帆航天器三维动画可视化仿真平台的设计与实现论文

0 引言

太阳帆航天器是一种在深空探测和星际航行等领域极具潜力的新型航天器,利用太阳光压产生持续推力,给航天器提供持续动力,本身无需携带大量的燃料,因此在深空探测和星际航行等航天领域具有广阔的应用前景,近年来受到国际航天界的广泛关注。

美国宇航局(NASA)、日本宇航局(JAXA)、欧洲航天局(ESA)等多个世界研究机构正在研制利用太阳帆航天器进行推进任务(如Pole Site、Geosail、Geostorm等),但是,离利用太阳帆进行深空探测及星际航行还有一定的距离,还有一系列的关键技术需要攻克。针对太阳帆航天器进行一次太空航行任务,需要高额的成本,本文提供了一种经济且有效的方式,研究并开发了一套三维可视化仿真平台,利用仿真平台模拟太阳帆航天器的飞行情况,为实际太阳帆航天器飞行提供一定的参考。

截止目前,未发现有关太阳帆航天器可视化仿真平台的文献。本文利用C++6.0、Multigen Creator/Vega、及MATLAB等软件相结合搭建了一个太阳帆三维动画可视化仿真平台。利用视点控制及多通道多视点技术分别在不同的通道中观察太阳帆的飞行轨迹及姿态变化;通过VC++与MATLAB的交互编程,利用MAT文件的仿真数据驱动多个物体同时移动;利用Vega和OpenGL混合编程,实现了飞行轨迹及姿态信息实时显示的功能。太阳帆航天器三维动画可视化仿真平台总体设计

三维动画可视化仿真系统主要由太空飞行仿真场景及视景仿真模型两大部分构成。飞行仿真场景是指太阳帆所飞行的具体环境;视景仿真模型是指太阳帆航天器的具体结构模型。

本文首先利用Creator建立太空环境飞行仿真场景(太空环境)和太阳帆航天器的结构视景仿真模型(flt文件);接着利采用Vega提供的Lynx工具将flt文件导入相应的场景中,然后,进行一系列的初始化工作,并将其储存为应用程序定义文件(ADF)文件;最后,通过MATLAB计算各个时刻太阳帆的飞行轨迹和姿态数据,并通过载入模型对象的位置及姿态数据,完成对太阳帆的飞行轨迹和姿态变化的三维可视化仿真。仿真软件平台环境和开发中的关键技术

2.1 在Visual C++环境下Vega应用程序的开发

Windows平台上Vega应用程序的开发,利用MFC框架开发程序能够有效地应用Vega函数库,可以极大程度地减小程序开发的工作量。本文采用基于MFC开发Vega应用程序。

2.2 三维动画场景和模型的建立

Multigen Creator是一款专业化的建模软件工具,可以有效地创建交互式实时应用的三维模型及场景。本文利用Creator建立太空环境模型和太阳帆航天器的结构模型。太阳帆航天器的结构主要包括大面积帆膜、支撑机构及中心控制机构等其它附属机构,模型的正面视图如图2所示。将Creator中建好的模型文件导入Vega中,利用Vega所提供的Lynx定义三维动画场景中的模型元素属性和相互位置关系,最后生成用于太阳帆航天器三维动画仿真平台的ADF文件,即虚拟场景文件。

2.3 多通道渲染技术

本文采用多通道技术实现在同一时刻不同位置观察各角色模型对象的运动状态。在一个通道中观察包括太阳帆在内的多个运动模型的相对运动轨迹,而在另外一个通道中观察太阳帆航天器姿态的变化过程,结合两个通道同时观察太阳帆航天器飞行状况。

2.4 数据驱动

本系统利用仿真数据与各模型对象进行关联,通过不断调用相关联的数据进行位置及姿态的更新,实现逼真的可视化效果,能够准确地展现控制效果。利用MATLAB与VC++之间的交互编程调用MAT文件,并采用MAT文件的操作方法来读取MAT文件,从而实现利用仿真数据驱动太阳帆、地球等模型对象的运动。仿真实例

三维可视化仿真平台系统界面主要包括菜单栏、主窗口和操作面板。其中主窗口中有两个通道,分别显示各模型对象飞行的轨迹与太阳帆的姿态变化;操作面板则用来控制仿真的进度,并同时显示太阳帆、地球等角色对象的位置、姿态及速度信息。首先载入使用MATLAB进行太阳帆航天器轨迹优化仿真后保存的MAT数据文件,与太阳帆、地球等模型绑定其相关的位姿数据。太阳帆航天器以一定的位姿出现在仿真环境中,通过视点切换,并选择合适的视点来观察太阳帆飞行过程。仿真过程中可以选择开始仿真、暂停仿真、重启仿真。结论

本文通过Vega和VC++相结合的方法,设计并开发了一套太阳帆航天器三维动画可视化仿真平台。利用Creator软件建立相关模型;采用多通道多视点技术分别观察太阳帆航天器的飞行轨迹及姿态变化,并通过视点控制技术,可以从任意位置任意角度观察太阳帆航天器的飞行状态;通过MATLAB与VC++的交互编程,实现了多个运动体同时移动;通过回调函数解决了Vega和OpenGL混合编程问题,给系统增加了显示飞行轨迹及重要数据信息的功能。

第五篇:建模与仿真实验报告

重 重 庆 庆

大 大 学 学

学 学 生 生

实 实 验 报 告 实验课程名称

物流系统建模与仿真

开课实验室

物流工程实验室

学 学

自动化

年级

专业班

程 物流工程 2 班

学 学 生 生

姓 姓 名

段竞男

201 24 912

开 开 课 时 间

2014

至15

学年第 二

学 学期 期 总 总

成 成 绩 绩

教师签名

自动化 学院制 《 物流系统建模与仿真 》实验报告

开课实验室:

****年**月**日 日 学院 自动化 年级、专业、班 12级物流工程2班 姓名 段竞男 成绩

课程 名称 物流系统建模与仿真 实验项目 名

称 产品测试工艺仿真与分析实验 指导教师 张莹莹 教师评语

成绩

一、实验目得 通过建立单存放区域、单处理工作台得简单模型,了解 5 个基本建模步骤。学习使用统计分析工具.二、实验原理 某工厂车间对三类产品进行检验。这三种类型得产品按照一定得时间间隔方式到达。随后,不同类型得产品被分别送往三台不同得检测机进行检测,每台检测机只检测一种特定得产品类型.其中,类型 1 得产品到第一台检测机检测,类型2得产品到第二台检测机检测,类型 3 得产品到第三台检测机检测。产品检测完毕后,由传送带送往货架区,再由叉车送到相应得货架上存放。类型 1 得产品存放在第 2 个货架上,类型 2 得产品存放在第 3 个货架上,类型 3 得产品存放在第 1 个货架上。

三、使用仪器、材料

一台PC机,flexsim软件 四、实验步骤

1)创建模型布局

使用鼠标将需要得对象从对象库中拖放到正视图窗口中,根据需要使用鼠标改变对象位置、大小与转角。

2)连接端口

按下键盘上得“A“键,用鼠标拖放在对象间建立输出端口-输入端口连接;方向为从流出实体得对象到流入实体得对象;模型中得对象发出与接收实体需要这种连接。

3)编辑外观、设置对象行为

(1)参数窗口(Parameters Window)

双击对象(或在右键菜单选择 Parameters)

;用于对各种对象得自身特性得设置、编辑。

(2)属性窗口(Properties Window)

右键单击对象,在弹出菜单中选择 Properties;用于编辑与查瞧所有对象都拥有得一般性信息。

(3)模型树视图(Model Tree View)模型中得所有对象都在层级式树结构中列出;包含对象得底层数据结构;所有得信息都包含在此树结构中。

4)重置运行

(1)重置模型并运行

(2)控制仿真速度(不会影响仿真结果)

检测机器 1 检测机器 2 检测机器 3 传送带 传送带 传送带 货架 1 货架 2 货架 3 产品 1 产品 2 产品 3

(3)设置仿真结束时间

5)观察结果

(1)使用“Statistics”(统计)菜单中得 Reports and Statistics(报告与统计)生成所需得各项数据统计报告.(2)其她报告功能包括:对象属性窗口得统计项;记录器对象;可视化工具对象;通过触发器记录数据到全局表。

五、实验过程原始记录((数据、图表、计算等))

1、运行结果得平面视图:

2、运行结果得立体视图

3、运行结果得暂存区数据分析结果图:

第一个暂存区

第二个暂存区 由报表分析可知 5 次实验中,第一个暂存区得平均等待时间为 11、46,而第二个暂存区得平均等待时间为13、02,略大于第一个暂存区,由此可见,第二个暂存区得工作效率基本上由第一个暂存区决定。

4、运行结果三个检测台得数据分析结果图,三个检测台得 state饼图:

(1)处理器一:

由实验结果分析可得,处理器一只有53%得时间处于工作状态,有32、3%得时间就是处于闲置状态,并且该处理器得准备时间较长,占总时间得 14、7%,这些数据表明该处理器得运行速度完全能满足,甚至超过系统得要求,可以适当得选择更处理速度慢一点得处理器来降低系统成本。

(2)处理器二:

由实验结果分析可得,处理器二只有 16、9%得时间处于工作状态,有66%得时间就是处于闲置状态,并且有 17、1%得时间处于准备时间,以上数据说明处理器二闲置时间过长,工作效率低,不能很好地配合物料二得到达速度。

(3)处理器三

由实验结果分析可得,处理器三得只有16、9%得时间处于工作状态,有 66、1%得时间就是处于闲置状态,并且有 16、9%得时间处于准备时间,以上数据说明处理器三得工作效率低,不能很好地配合物料三得到达速度,可以适当得降低处理器三得处理速度。

六、实验结果及分析

1))对得到得数据做简单分析,提出改进措施。

答:通过对实验数据分析,发现现有得机器设备得设置基本能满足系统得要求,但工作效率低,大大浪费了设备得工作能力,可以适当得提高物料得到达速度,或者降低三台处理器得处理速度.2 2)

讨论:本实验根据三个处理器得统计信息,通过状态图分析各处理器得工作状态,通过暂存区材料得平均等待时间,分析这个检测流程得效率如何?就是否存在瓶颈?如果存在,怎样才能改善整个系统得绩效呢? 答:由报表分析可知5次实验中,第一个暂存区得平均等待时间为 11、46,而第二个暂存区得平

均等待时间为 13、02,略大于第一个暂存区,由此可见,第二个暂存区得工作效率基本上由第一个暂存区决定。处理器一只有53%得时间处于工作状态,有 32、3%得时间就是处于闲置状态,并且该处理器得准备时间较长,占总时间得14、7%,这些数据表明该处理器得运行速度完全能满足,甚至超过系统得要求,可以适当得选择更处理速度慢一点得处理器来降低系统成本。由实验结果分析可得,处理器二只有 16、9%得时间处于工作状态,有 66%得时间就是处于闲置状态,并且有 17、1%得时间处于准备时间,以上数据说明处理器二闲置时间过长,工作效率低,不能很好地配合物料二得到达速度。由实验结果分析可得,处理器三得只有 16、9%得时间处于工作状态,有 66、1%得时间就是处于闲置状态,并且有16、9%得时间处于准备时间,以上数据说明处理器三得工作效率低,不能很好地配合物料三得到达速度,可以适当得降低处理器三得处理速度。整体来瞧,整个检测流程效率不高,但就是并不存在瓶颈,能够达到系统得要求,但工作效率低,大大浪费了设备得工作能力,可以适当得提高物料得到达速度,或者降低三台处理器得处理速度.《物流系统建模与仿真》实验报告

开 :

开 课 实 验 室 :

年 年

月 月

日 日 学院 自动化 年级、专业、班 12级物流工程2班 姓名 段竞男 成绩

课程 名称 物流系统建模与仿真 实验项目 名

称 多产品多阶段制造系统仿真与分析实验 指导教师 张莹莹 教师评语

成绩

一、实验目得 假定在保持车间逐日连续工作得条件下,对系统进行 365 天得仿真运行(每天按8 小时计算),计算每组机器队列中得平均产品数以及平均等待时间。通过仿真运行,找出影响系统得瓶颈因素,并对模型加以改进。

二、实验原理 某制造车间由 5 组机器组成,第 1,2,3,4,5 组机器分别有3,2,4,3,1 台相同得机器。这个车间需要加工三种原料,三种原料分别要求完成4、3 与5 道工序,而每道工序必须在指定得机器组上处理,按照事先规定好得工艺顺序进行。

概念模型参考如下:

三、使用仪器、材料

一台PC 机,flexsim 软件 四、实验步骤

1)创建模型布局 使用鼠标将需要得对象从对象库中拖放到正视图窗口中,根据需要使用鼠标改变对象位置、大小与转角。

2)连接端口 按下键盘上得“A”键,用鼠标拖放在对象间建立输出端口—输入端口连接;方向为从流出实体得对象到流入实体得对象;模型中得对象发出与接收实体需要这种连接。本实验此步骤为关键环节,连接线较复杂,故连接端口时应注意保持清晰思路.机器 1 机器 1 机器 1 暂存区 机器 2 机器 2 暂存区 机器 3 机器 3 机器 3 机器 3

暂存区 机器 4 机器 4 机器 4 暂存区 机器 5

暂存区 1 2 3

3)定义对象参数(1)定义Source 在模型中,共有 3 个Source 实体,每个Source 对应一类原料,也就就是说,一个 Source 生成一类原料.我们需要设置每个 Source 实体,使得每类原料得到达间隔时间满足系统得要求。

(2)分别按照要求定义机器组1、机器组 2、机器组 3、机器组 4、机器组 5、暂存区参数。

4)模型运行

(1)设置 Experimenter

(2)重置模型并运行 5)观察结果 仿真进行过程中,可以瞧到红、黄、蓝三种不同颜色得原料从系统中流过,经过不同机器组得加工,最后离开系统。

仿真运行到175200 单位时间得时候,自动停止。

五、实验过程原始记录((数据、图表、计算等)

1、运行结果得平面视图: 2、提供运行结果得立体视图:

3、提供运行结果五个暂存区数据分析结果图

由数据图可知第一个暂存区得为 物料输入量为 888 8,平均数量为 0、63, 最大等待时间达到了 241、、94,平均等待时间为 12、5,由此可见暂存区一得货物 状态较为空闲,不就是 系统得瓶颈。

为 由数据图可知第二个暂存区得物料输入量为 1117 3,平均容量为 1 967、0 4, 最大等待时间为 6301 17、14 4为,平均等待时间为 303 3 88、42, 由此可见暂存区二得货物周转率较高, 处于比较忙碌得状态,非常 容易成为系统得瓶颈。

由数据图可知第三个暂存区得物料输入量为5 58 35,平均数量为 0、11,最大等待时间达到了 12 24、25,平均等待时间为 3、40, 由此可见暂存区三得效率较高,较为适应系统得要求。

为 由数据图可知第四个暂存区得物料输入量为 3604,平均数量为 5、62 2,最大等待时间为1 164 2、37,平均等待时间为 273、55,由此可见暂存区四货物周转率高,并且运行效率高, 能够适应系统得要求,安排合理。

由数据图可知第五 个暂存区得物料为 输入量为 7 208,平均数量为2 243、75, 最大等待时间为 1 0936、85,平均等待时间为 5956, 由此可见暂存区五 容易造成货物得堆积与等待,不 能够适应系统得要求,安排 不够 合理, 为该系统得瓶颈.六、实验结果及分析

对得到得数据做简单分析,提出改进措施:

暂存区 1 2 3 4 5平均等待时间 12、50 30388、42 3、40 273、55 5956

平均数量 0、63 1967、04 0、11 5、62 243、75 由数据图可知第一个暂存区得物料输入量为 8888,平均数量为 0、63,最大等待时间达到了241、94,平均等待时间为12、5,由此可见暂存区一得货物状态较为空闲,不就是系统得瓶颈.由数据图可知第二个暂存区得物料输入量为11173,平均容量为 1967、04,最大等待时间为 63017、14,平均等待时间为 30388、42,由此可见暂存区二得货物周转率较高,处于比较忙碌得状态,非常容易成为系统得瓶颈.由数据图可知第三个暂存区得物料输入量为 5835,平均数量为0、11,最大等待时间达到了 124、25,平均等待时间为 3、40,由此可见暂存区三得效率较高,较为适应系统得要求。由数据图可知第四个暂存区得物料输入量为 3604,平均数量为 5、62,最大等待时间为 1642、37,平均等待时间为 273、55,由此可见暂存区四货物周转率高,并且运行效率高,能够适应系

统得要求,安排合理.由数据图可知第五个暂存区得物料输入量为 7208,平均数量为 243、75,最大等待时间为 10936、85,平均等待时间为 5956,由此可见暂存区五容易造成货物得堆积与等待,不能够适应系统得要求,安排不够合理,为该系统得瓶颈.由数据分析可知暂存区二、五就是系统得瓶颈所在,应该提高暂存区二、暂存区五得处理前一道工序速度,即增加工序一与工序二得机器数量,以此来提高工序 1、2 得处理速度,或者调整物料加工得顺序,从而提高整个系统得运营效率。

《物流系统建模与仿真》实验报告

开课实验室:

****年**月**日 日 学院 自动化 年级、专业、班 12 级物流工程 2班 姓名段竞男 成绩

课程 名称 物流系统建模与仿真 实验项目 名

称 混合流水线系统仿真与分析实验 指导教师 张莹莹 教师评语

成绩

一、实验目得 主要掌握单台处理器在处理多种产品时对于处理顺序以及时间参数得设置.熟悉先进先出这种存储模式得控制方法.二、实验原理 多对象流水线生产有两种基本形式。一种就是可变流水线,其特点就是:在计划期内,按照一定得间隔期,成批轮番生产多种产品;在间隔期内,只生产一种产品,在完成规定得批量后,转生产另一种产品。另一种就是混合流水线,其特点就是:在同一时间内,流水线上混合生产多种产品。按固定得混合产品组组织生产,即将不同得产品按固定得比例与生产顺序编成产品组。一个组一个组地在流水线上进行生产。

三、使用仪器、材料

PC 机一台,flexsim 软件 四、实验步骤

1)创建模型布局

从左边得实体库中依次拖拽出所有实体(一个 Source,5个 Queue,12个 Processor,一个Conveyor,一个Sink)放在右边模型视图中,调整至适当得位置,如图所示:

2)连接端口

根据流动实体得路径来连接不同实体得端口.按住键盘上得“A”键,与前面章节得操作一样,按上图中得箭头所指向依次连接各个实体.分别(注意方向)从 Source 连到 GeneralQueue,GeneralQueue 连到GeneralMachine1,GeneralQueue连到 GeneralMachine2, GeneralQueue 连到 GeneralMachine3,GeneralMachine1 连到 DrillingQueue,GeneralMachine2 连到 DrillingQueue,GeneralMachine3 连到 DrillingQueue,DrillingQueue 连到 DrillingMachine1,DrillingQueue连到 DrillingMachine2,DrillingQueue连到DrillingMachine3,DrillingMachine1连到MillingQueue,DrillingMachine2 连到 MillingQueue,DrillingMachine3 连到MillingQueue,MillingQueue 连到 MillingMachine1,MillingQueue连到MillingMachine2,MillingMachine1 连到 GrindingQueue,MillingMachine2连到 GrindingQueue,GrindingQueue连到 GrindingMachine1,GrindingQueue 连到 GrindingMachine2,GrindingQueue 连到GrindingMachine3,GrindingMachine1 连到 T

estingQueue,GrindingMachine2连到TestingQueue,GrindingMachine3连到TestingQueue,TestingQueue 连到 TestingMachine,TestingMachine 连到 Conveyor,Conveyor 连到Sink。完成后,如图所示:

3)定义对象参数

分别按照要求定义 Source、各机器工位、暂存区参数。

4)模型运行

(1)重置模型并运行(2)加快仿真模型运行速度 如果我们只就是关心仿真结果,而对仿真得过程不感兴趣,则我们可以加快仿真速度,迅速得到结果.图 3、1仿真速度控制比例条 如图 3、1,鼠标左键一直按住比例尺,移动到合适得比例位置,以便迅速得到结果。

5)观察结果

仿真进行过程中,可以瞧到红、绿、蓝三种不同颜色得产品从系统中流过,经过不同机器组得加工,最后离开系统,如下图:

6)结果分析

当仿真运行自动结束后,我们打开 Flexsim得工具栏里得 Stats 目录下得Standard Report 选项,如图所示:

我们通过来增加、以及来减少需要输出得报告内容,使得报告包含以上所列得 5 个部分得数据:idle就是空闲时间,processing 就是工作时间,blocked就是产品在设备等待时间,stats_staytimeavg就是平均停留时间,stats_input 就是输入产品数,stats_output 就是输出产品数,设置完成后,如图所示:

点击后生成如图所示表格:

从上表中我们可以很方便得瞧到总运行时间就是 7728min,以及各个设备得输入输出产品数,处理时间等信息.录记始原程过验实、五ﻬ 五、实验过程原始记录((数据、图表、计算等)

1、运行结果得二维平面图

2、运行结果得三维立体图

4、投产按照 1、2、3 得顺序进行得仿真报告 Flexsim Summary Report Time: 7728

Object Class stats_output stats_staytimemin stats_input idle blocked processing

Source1 Source 1700 0 0 0 7720 0 Queue2 Queue 1700 0 1700 0 0 0 Processor3 Processor 500 4 500 594 0 2400 Processor4 Processor 600 4 600 297 0 2700 Processor5 Processor 600 4 600 297 0 2700 ConCon17010 1700 0 0

veyor6 veyor 0 0 Processor7 Processor 600 4 600 203 0 2800 Processor8 Processor 600 4 600 203 0 2800 Processor9 Processor 500 4 500 599 0 2400 Queue10 Queue 1700 0 1700 0 0 0 QueQue1700 1700 0 0

ue11 ue 0 0 Processor12 Processor 850 3 850 10 0 3050 Processor13 Processor 850 3 850 11 0 3050 Processor14 Processor 567 4 567 796 0 2268 ProcessorProcessor 567 4 567 797 0 2268 Processor16 Processor 566 4 566 798 0 2264 Queue17 Queue 1700 0 1700 0 0 0 Queue18 Queue 1700 0 1700 0 0 0 Processor19 Processor 1700 1 1700 18 0 7700 Sink20 Sink 0 0 1700 0 0 0 由报表分析可知,按照 1 1、2 2、3得顺序投产得总得处理时间为77 7 28 8。

投产按照1、3、2 得顺序进行得仿真报告:

Flexsim Summary Report Time: 7728

Object Class stats_input stats_output stats_staytimeavg idle processing blocked Source1 Source 0 1700 0 0 0 7720 Queue2 Queue 1700 1700 4、588235 0 0 0 ProcProc502 502 4、79586 2408 0

essor3 essor 6813 Processor4 Processor 600 600 4、5 298 2700 0 Processor5 Processor 598 598 4、501672 306 2692 0 Queue6 Queue 1700 1700 0、411765 0 0 0 Processor7 Processor 600 600 4、666667 203 2800 0 PrPr60604、20280

ocessor8 ocessor 0 0 666667 3 00 Processor9 Processor 500 500 4、8 599 2400 0 Queue10 Queue 1700 1700 28、32294 0 0 0 Processor11 Processor 850 850 3、588235 10 3050 0 ProcessorProcessor 850 850 3、588235 11 3050 0 Queue13 Queue 1700 1700 0 0 0 0 Processor14 Processor 567 567 4 796 2268 0 Processor15 Processor 567 567 4 797 2268 0 Processor16 Processor 566 566 4 798 2264 0 QueuQueu1700 1700 23290 0 0

e17 e、648 Conveyor19 Conveyor 1700 1700 10 0 0 0 Sink20 Sink 1700 0 0 0 0 0 Processor21 Processor 1700 1700 4、529412 18 7700 0 由报表分析可知,按照 1、3、2 得顺序投产得总得处理时间为 7728.投产按照 2、1、3 得顺序进行得仿真报告:

Flexsim Summary Report Time:

7725 Object Class stats_input stats_output stats_staytimeavg idle processing blocked Source1 Source 0 1700 0 0 0 7720 Queue2 Queue 1700 1700 4、588235 0 0 0 Processor3 Processor 503 503 4、795229 588 2412 0 Processor4 Processor 600 600 4、5 299 2700 0 Processor5 Processor 597 597 4、502513 311 2688 0

Queue6 Queue 1700 1700 0、408824 0 0 0 Processor7 Processor 600 600 4、666667 205 2800 0 Processor8 Processor 600 600 4、666667 205 2800 0 Processor9 Processor 500 500 4、8 605 2400 0 Queue10 Queue 1700 1700 28、16529 0 0 0 Processor11 Processor 851 851 3、587544 11 3053 0 Processor12 Processor 849 849 3、588928 15 3047 0 Queue13 Queue 1700 1700 0 0 0 0 Processor14 Processor 567 567 4 796 2268 0 Processor15 Processor 567 567 4 798 2268 0 Processor16 Processor 566 566 4 804 2264 0 Queue17 Queue 1700 1700 2317、985 0 0 0 Conveyor19 Conveyor 1700 1700 10 0 0 0 Sink20 Sink 1700 0 0 0 0 0 Processor21 Processor 1700 1700 4、529412 15 7700 0 由报表分析可知,按照 2 2、1、3得顺序投产得总得处理时间为 772 5.析分及果结验实、六ﻬ 六、实验结果及分析1)

实验结果: :由以上报表分析可知 6 种投产顺序中,按照 2、1、3 得顺序投产得总得处理时间最短为7725,故以这种投产顺序作为最佳投产方式。

2)讨论: :系统还存在很多可以改善得地方,请指出有哪些地方就是有待改善得,理由就是什么.答:可以适当得降低处理器得运行速度,除了第三组得处理器空闲时间较短外,其余各组处理器得空闲时间过长。尤其就是,其中暂存区 17 得平均等待时间过长,可以适当得调整运行速度,以提高整个系统得运行效率。

实验报告打印格式说明 1.标题:三号加粗黑体 2.开课实验室:5 号加粗宋体 3.表中内容:(1)标题:5号黑体(2)正文:5 号宋体

4.纸张:16 开(20cm×26.5cm)5.版芯 上距:2cm 下距:2cm 左距:2.8cm 右距:2.8cm 说明: 1、“年级专业班”可填写为“00 电子 1 班",表示 2000 级电子工程专业第1班.2、实验成绩可按五级记分制(即优、良、中、及格、不及格),或者百分制记载,若需要将实验成绩加入对应课程总成绩得,则五级记分应转换为百分制。

下载三体问题的仿真与实现5篇word格式文档
下载三体问题的仿真与实现5篇.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    电子仿真与制作心得体会

    注意:本文章适用于非理科专业的同学选修了《电子仿真与制作》课程。 学习心得与总结 大学的选修课是为了丰富大学生的知识、提高大学生的文化、科学、技术、道德等各方面的素......

    电子仿真与制作心得体会

    《电子制作技术与工艺》课程 学习心得与总结 学院:核自 专业:地球化学 班级:一班 学号: 姓名:吴鹏 201006030107 《电子制作技术与工艺》课程 学习心得与总结 大学的选......

    物流建模与仿真(五篇范文)

    一、 请简述对建模与仿真的认知(300字) 通过这学期对物流建模与仿真的学习,让我认识到了物流系统建模与仿真对现实当中物流的重要性。物流系统建模与仿真是现代物流中的助力,能......

    电路设计与仿真课感想

    电路设计与仿真课感想 电路设计与仿真这课程,算下来只是上了几周。可是我却得到了很多。 首先我对电路设计有种天生的喜欢感。小时候就有拆电子物品的爱好。看着电路板上的元......

    信号与系统仿真实验报告

    信号与系统 仿真 实 验 报 告班级: 学号: 姓名: 学院: 实验一 一、实验者姓名:二、实验时间:三、实验地点:四、实验题目: 5(s25s6)求三阶系统H(s)3的单位阶跃响应,并绘制响应波形图......

    MATLAB与控制系统仿真实验报告

    《MATLAB与控制系统仿真》 实验报告 2013- 2014学年 第 1 学期 专业: 班级: 学号: 姓名: 实验三 MATLAB图形系统 一、实验目的: 1.掌握绘制二维图形的常用函数。 2.掌握绘制三维......

    Matlab与Simulink仿真学习心得

    Matlab与Simulink仿真学习心得 班级:07610 学号:072016 姓名:吕天雄 一 Matlab学习心得体会与编程实践 学习Matlab的心得体会 真正开始接触Matlab是大二上就开始了,到现在已经一......

    基于形状特征的图像检索算法仿真实现研究

    本科毕业设计(论文)工 作 手 册(理工类专业适用)学 院 专业班级 姓 名 学 号......