当前位置: 首页 > news >正文

imresize函数matlab_如何写出三体的MATLAB程序-代码篇

c3031907592b0f3327229d8e33310fdd.png

如何写出三体的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)

计算速度的函数,这个就很简单了,简单的速度与加速度公式。

% 计算小球的速度变化

计算当前坐标,方法同公式。

% 计算小球的位移变化

作图-代码

作图的话就没有这么简单了,因为还需要设置一大堆比较麻烦的图像参数。

对于做轨迹图,可以通过以下代码实现

% 做轨迹图像

对于做时间随速度大小与角度的图像,可以由以下函数实现,这个就比较简单了。

% 做速度随时间图像

做出来的图的趋势还是比较有趣的

d9bb8d0272ce93d7a47ef83090d740a2.png
时间与速度的关系图

7903d4de0edebe094cc8d129f49d8cc4.png
时间与角度的关系图

最后

以上就是全部内容,我将会全部放在我的Github中,地址在文章开头有。

如果你学到了一些东西的话,麻烦点个赞,加个收藏来个关注噢。

相关文章:

  • python决策树算法_决策树算法(python)
  • cas无法使用_并发编程中cas的这三大问题你知道吗?
  • python写微信小程序商城_Python(Django 2.x)+Vue+Uniapp微信小程序商城开发视频教程
  • python中如何将两个列表进行合并_Python中如何把两个list合并,并按从小到大顺序排列?...
  • ctf xss利用_从xss挑战之旅来重读xss(一)
  • python考研参考书目_Python自学日记28——如何选择学习资料
  • 无法应用转换程序_电脑硬盘无法安装应用程序怎么办?
  • educoder实训平台python入门之运算符的使用_Python入门教程-运算符
  • docker rabbitmq_docker快速部署rabbitmq多机集群
  • python程序设计学生的自我总结_《Python程序设计》学生答疑【20200227】
  • ssl 接收到一个超出最大准许长度的记录_从零编写一个自己的蜜罐系统
  • pythondocumentation_python官方文档
  • python怎么突然这么火_为什么python突然变得这么火了?
  • gdb 条件断点_蜂鸟E203系列——Linux调试(GDB+Openocd)
  • gif分解工具_搞笑 GIF 制作工具
  • C++入门教程(10):for 语句
  • Cookie 在前端中的实践
  • JavaScript 一些 DOM 的知识点
  • laravel5.5 视图共享数据
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • python大佬养成计划----difflib模块
  • React16时代,该用什么姿势写 React ?
  • spring + angular 实现导出excel
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vuex 笔记整理
  • WebSocket使用
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 记一次删除Git记录中的大文件的过程
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 力扣(LeetCode)56
  • 力扣(LeetCode)965
  • 驱动程序原理
  • 如何利用MongoDB打造TOP榜小程序
  • 删除表内多余的重复数据
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • (03)光刻——半导体电路的绘制
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (五)Python 垃圾回收机制
  • (一)Neo4j下载安装以及初次使用
  • (转)http-server应用
  • (转)jQuery 基础
  • (转)linux下的时间函数使用
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .Net MVC + EF搭建学生管理系统
  • .NET 设计模式初探
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • []串口通信 零星笔记
  • [BSGS算法]纯水斐波那契数列
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [CISCN2019 华东北赛区]Web2
  • [codeforces]Recover the String