imresize函数matlab_如何写出三体的MATLAB程序-代码篇
如何写出三体的MATLAB程序-代码篇
写在前面
在上文当中我们已经对三个物体之间的受力进行了分析,也说明了在时间$t$下的加速度、速度和位移的计算方式。
本篇中将根据上一篇的公式来写出对应的代码,并且详细说明一下如何去构建一个程序的框架。
本文所有代码均在我的Github中存有备份,可下载后直接运行,点击Github: HanpuLiang/Three-Body-by-MATLAB即可进入。
构建框架
基本变量
我们首先要确定,物体本身具有哪些物理量?
质量、加速度、速度、坐标。
其中加速度和坐标为矢量,当在计算过程当中可以将其正交分解为x与y轴的标量。
其余的量我们还可以设置一下,诸如:物体运动的时间长度、我们计算所需要的时间间隔、万有引力常数等。
对于我们要做出的图像大小也需要设置一下,比如说x轴范围,y轴范围等。
程序流程
初始化
首先需要初始化,确定三个物体在初始状态的情况:初始坐标、初始速度(大小与方向)。所以一共需要三个量:坐标、速度大小、速度相对x轴角度。
物体的加速度可以直接由万有引力公式计算出来,为了计算方便,需要将其正交分解与叠加。
随着时间演变
物体开始运动了,但是因为我们无法给出一段连续的时间,只能计算在极小的时间间隔
所以在$tto t+Delta t$时间,首先计算出当前位置的加速度,然后根据这个加速度算出当前的速度,再根据这个速度算出经历过$Delta t$时间后的位移变化量,再将这个位移变化量叠加到$t$的位置上。
这样子就完成了一个循环。
之前按道理,我们应该将每一个时间点的值放在一个矩阵内,这样子我们就可以得到随之间变化的所有物理量。
这样子我们就可以直接做出随着时间变化的各个物理量的图,如t-v和t-a以及t-
如果我们想要做出小球的运动图,那就需要t时刻及其之前(做出尾迹)的数据进行作图。
实际代码
基本变量-代码
首先是初始化
%% 初始条件
初始化-代码
然后是将我们的初始值放入矩阵中,因为我们初始值设定的是角度与速度大小,所以首先要把$v$给分解为$xy$轴上的。
%% 初始设置
迭代开始
迭代的话这一步其实就和我们的逻辑很像了,不过之所以主代码这么简介,是因为我把一大堆复杂的内容全部放到了函数里面,只留个接口调用,这样子可以让主代码更加简洁明了。
%% 迭代开始
对于计算加速度的函数,主要的原理还是和上一篇讲的一样,通过万有引力公式求解,然后正交分解并叠加。
% 计算x与y轴加速度变化量da(3x2)
计算速度的函数,这个就很简单了,简单的速度与加速度公式。
% 计算小球的速度变化
计算当前坐标,方法同公式。
% 计算小球的位移变化
作图-代码
作图的话就没有这么简单了,因为还需要设置一大堆比较麻烦的图像参数。
对于做轨迹图,可以通过以下代码实现
% 做轨迹图像
对于做时间随速度大小与角度的图像,可以由以下函数实现,这个就比较简单了。
% 做速度随时间图像
做出来的图的趋势还是比较有趣的
最后
以上就是全部内容,我将会全部放在我的Github中,地址在文章开头有。
如果你学到了一些东西的话,麻烦点个赞,加个收藏来个关注噢。