三体问题的仿真与实现毕业34页word.docx
- 文档编号:16600579
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:47
- 大小:70.29KB
三体问题的仿真与实现毕业34页word.docx
《三体问题的仿真与实现毕业34页word.docx》由会员分享,可在线阅读,更多相关《三体问题的仿真与实现毕业34页word.docx(47页珍藏版)》请在冰点文库上搜索。
三体问题的仿真与实现毕业34页word
1前言
与当今“教师”一称最接近的“老师”概念,最早也要追溯至宋元时期。
金代元好问《示侄孙伯安》诗云:
“伯安入小学,颖悟非凡貌,属句有夙性,说字惊老师。
”于是看,宋元时期小学教师被称为“老师”有案可稽。
清代称主考官也为“老师”,而一般学堂里的先生则称为“教师”或“教习”。
可见,“教师”一说是比较晚的事了。
如今体会,“教师”的含义比之“老师”一说,具有资历和学识程度上较低一些的差别。
辛亥革命后,教师与其他官员一样依法令任命,故又称“教师”为“教员”。
1.1论文的背景
我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。
为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?
吕叔湘先生早在1978年就尖锐地提出:
“中小学语文教学效果差,中学语文毕业生语文水平低,……十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!
”寻根究底,其主要原因就是腹中无物。
特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:
提出问题――分析问题――解决问题,但真正动起笔来就犯难了。
知道“是这样”,就是讲不出“为什么”。
根本原因还是无“米”下“锅”。
于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。
所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。
要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。
在太阳系内的天体都可以近似看做球形,并且与他们之间的距离相比,他们的的大小就可以忽略不计,因而他们能被看做质点。
因此,可以用现代动力天文学的基础理论来研究这个问题。
这部分的天体力学以牛顿的万有引力理论开始。
从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界面,可以让用户在不必了解程序内部实现的情况下,给出三个天体的初始条件,包括三个天体的质量、初始位置和初始速度,就可以知道随着时间的推移其宏观的位置和速度以及运动的宏观规律和全局性质。
同时,还可以在不同的观察角度了解它们的运动过程。
2模型假设
1)忽略相对论效应的影响;
2)不考虑其它天体对系统的作用,所处宇宙空间是各向同性的;
3)忽略宇宙空间粒子、潮汐力的影响;
4)假设运动过程中没有能量损失;
5)将天体视为质点,不考虑它们在运动的过程中彼此之间的相互碰撞;
3模型建立
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模型求解与系统仿真
4.1编码与运行
(1)系统所需的软、硬件
系统所用的硬件是普通的PC机。
本程序的编码和界面设计部分用MATLAB进行开发。
(2)三体问题的编码
1o三个天体各个参数的初始化部分。
函数ThreeBodyProblem_OpeningFcn(hObject,eventdata,handles,varargin)是该程序的启动函数。
初始化各个天体参数的部分已在程序代码中标注:
functionThreeBodyProblem_OpeningFcn(hObject,eventdata,handles,varargin)
ThreeBodyProblem的创建函数,此函数没有返回值,详情请参见OutputFcn
hObject图形句柄
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,可以通过它获取整个界面的信息
vararginThreeBodyProblem的启动参数(详情请参见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);
默认值按钮的回调函数,用于设置三个天体的默认参数值,并且将设置的默认参数值显示到图形界面上:
functiondefault_Callback(hObject,eventdata,handles)
hObjectdefault控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,可以通过它获取整个界面的信息(详情请参见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从文本输入框中按顺序输入三个天体的各个参数。
第一个天体的各个文本输入框的回调函数,用于获得文本输入框内输入的值,代码的具体解释已在程序中给出:
functionFirstBodyX_Callback(hObject,eventdata,handles)
hObjectFirstBodyX控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)
获得当前输入框的输入字符
tempData=get(hObject,'String');
将字符转换为双精度数
handles.FirstBodyXData=str2double(tempData)*10^10;
此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用
guidata(hObject,handles);
设置完所有属性后,在对象的创建过程中执行以下代码
functionFirstBodyX_CreateFcn(hObject,eventdata,handles)
hObjectFirstBodyX控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,它会在调用完所有的CreateFcn函数后创建
提示:
可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC和COMPUTER.
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functionFirstBodyY_Callback(hObject,eventdata,handles)
hObjectFirstBodyY控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)
获得当前输入框的输入字符
tempData=get(hObject,'String');
将字符转换为双精度数
handles.FirstBodyYData=str2double(tempData)*10^10;
此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用
guidata(hObject,handles);
设置完所有属性后,在对象的创建过程中执行以下代码
functionFirstBodyY_CreateFcn(hObject,eventdata,handles)
hObjectFirstBodyY控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,它会在调用完所有的CreateFcn函数后创建
提示:
可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC和COMPUTER.
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functionFirstBodyZ_Callback(hObject,eventdata,handles)
hObjectFirstBodyZ控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)
获得当前输入框的输入字符
tempData=get(hObject,'String');
将字符转换为双精度数
handles.FirstBodyZData=str2double(tempData)*10^10;
此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用
guidata(hObject,handles);
设置完所有属性后,在对象的创建过程中执行以下代码
functionFirstBodyZ_CreateFcn(hObject,eventdata,handles)
hObjectFirstBodyZ控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,它会在调用完所有的CreateFcn函数后创建
提示:
可编辑文本框控件通常在窗口上有一个白色的背景,更多详情请参见ISPC和COMPUTER.
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
functionFirstBodyU_Callback(hObject,eventdata,handles)
hObject控件的句柄(详情请参见GCBO)FirstBodyU
eventdata保留在MATLAB里面的参数,它的作用是方便后面的程序使用
handlesGUI界面的句柄,可以通过它获取整个界面的信息(详情请参见GUIDATA)
获得当前输入框的输入字符
tempData=get(hObject,'String');
将字符转换为双精度数
handles.FirstBodyUData=str2double(tempData)*10^3;
此前指令更改了handles,必须靠guidata指令才能把更新了的handles加以保存,以供后续使用
guidata(hObject,handles);
设置完所有属性后,在对象的创建过程中执行以下代码
functionFirstBodyU_CreateFcn(hObject,eventdata,handles)
设置完所有属性后,在对象的创建过程中执行以下代码
functionFirstBodyX_CreateFcn(hObject,eventdata,handles)
hObjectFirstBodyU控件的句柄(详情请参见GCBO)
eventdata保留在MATLAB里面的参数,它的作用是方便后面的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三体问题 仿真 实现 毕业 34 word