三体问题Mathematica数值解求解

2023-10-31 14:40

本文主要是介绍三体问题Mathematica数值解求解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文参考百度经验如何用Mathematica计算三体问题?,进行了三体问题在三维空间的数值求解,给出了核心部分的计算代码。

注意我下面这些初值设定来自一篇2013年的一篇论文(感兴趣的可以私信我),在这种设定下能构成闭合的三体周期轨道。
请添加图片描述请添加图片描述
以下这个部分是求解动力学方程的数值计算部分:

{{r1xo,r1yo,r1zo,v1xo,v1yo,v1zo,
r2xo,r2yo,r2zo,v2xo,v2yo,v2zo,
r3xo,r3yo,r3zo,v3xo,v3yo,v3zo}}
=NDSolve[{
(*第一组*)
r1x'[t]==v1x[t],r1y'[t]==v1y[t],r1z'[t]==v1z[t],
m1*v1x'[t]==-G*m2*m1*(r1x[t]-r2x[t])/lowR21[t]-G*m3*m1*(r1x[t]-r3x[t])/lowR31[t],
m1*v1y'[t]==-G*m2*m1*(r1y[t]-r2y[t])/lowR21[t]-G*m3*m1*(r1y[t]-r3y[t])/lowR31[t],
m1*v1z'[t]==-G*m2*m1*(r1z[t]-r2z[t])/lowR21[t]-G*m3*m1*(r1z[t]-r3z[t])/lowR31[t],
(*第二组*)
r2x'[t]==v2x[t],r2y'[t]==v2y[t],r2z'[t]==v2z[t],
m2*v2x'[t]==-G*m3*m2*(r2x[t]-r3x[t])/lowR32[t]-G*m1*m2*(r2x[t]-r1x[t])/lowR21[t],
m2*v2y'[t]==-G*m3*m2*(r2y[t]-r3y[t])/lowR32[t]-G*m1*m2*(r2y[t]-r1y[t])/lowR21[t],
m2*v2z'[t]==-G*m3*m2*(r2z[t]-r3z[t])/lowR32[t]-G*m1*m2*(r2z[t]-r1z[t])/lowR21[t],
(*第三组*)
r3x'[t]==v3x[t],r3y'[t]==v3y[t],r3z'[t]==v3z[t],
m3*v3x'[t]==-G*m3*m1*(r3x[t]-r1x[t])/lowR31[t]-G*m3*m2*(r3x[t]-r2x[t])/lowR32[t],
m3*v3y'[t]==-G*m3*m1*(r3y[t]-r1y[t])/lowR31[t]-G*m3*m2*(r3y[t]-r2y[t])/lowR32[t],
m3*v3z'[t]==-G*m3*m1*(r3z[t]-r1z[t])/lowR31[t]-G*m3*m2*(r3z[t]-r2z[t])/lowR32[t],
(*初值第1组*)
r1x[0]==Part[R10,1],r1y[0]==Part[R10,2],r1z[0]==Part[R10,3],v1x[0]==Part[V10,1],v1y[0]==Part[V10,2],v1z[0]==Part[V10,3],
(*初值第2组*)
r2x[0]==Part[R20,1],r2y[0]==Part[R20,2],r2z[0]==Part[R20,3],v2x[0]==Part[V20,1],v2y[0]==Part[V20,2],v2z[0]==Part[V20,3],
(*初值第3组*)
r3x[0]==Part[R30,1],r3y[0]==Part[R30,2],r3z[0]==Part[R30,3],
v3x[0]==Part[V30,1],v3y[0]==Part[V30,2],v3z[0]==Part[V30,3]},
{r1x,r1y,r1z,v1x,v1y,v1z,r2x,r2y,r2z,v2x,v2y,v2z,r3x,r3y,r3z,v3x,v3y,v3z},
{t,0,30}]

绘图

ParametricPlot3D[
{
{Evaluate[r1x[t] /. r1xo], Evaluate[r1y[t] /. r1yo],    Evaluate[r1z[t] /. r1zo]}, 
{Evaluate[r2x[t] /. r2xo],    Evaluate[r2y[t] /. r2yo],    Evaluate[r2z[t] /. r2zo]}, 
{Evaluate[r3x[t] /. r3xo],    Evaluate[r3y[t] /. r3yo], Evaluate[r3z[t] /. r3zo]}
}, 
{t, 0, 30}, 
PlotStyle -> {Red, Green, Blue}, PlotPoints -> 1000
]

请添加图片描述
下面是我最终导出的动图,如何导出动图仍然参考前面那篇百度经验.

请添加图片描述

这篇关于三体问题Mathematica数值解求解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316061

相关文章

2024 年高教社杯全国大学生数学建模竞赛题目——2024 年高教社杯全国大学生数学建模竞赛题目的求解

2024 年高教社杯全国大学生数学建模竞赛题目 (请先阅读“ 全国大学生数学建模竞赛论文格式规范 ”) 2024 年高教社杯全国大学生数学建模竞赛题目 随着城市化进程的加快、机动车的快速普及, 以及人们活动范围的不断扩大,城市道 路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经 济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。 考虑一个拥有知名景区

交换两个变量数值的3种方法

前言:交换两个数值可不是"a = b,b = a"。这样做的话,a先等于了b的值;当“b = a”后,因为此时a已经等于b的值了,这个语句就相当于执行了b = b。最终的数值关系就成了a == b,b == b。 下面教给大家3种交换变量数值的方法: 目录 1. 中介法 2. 消和法 3. 异或法 4. 总结 1. 中介法 中介法(又称 临时变量法 或 酱油法),其中心

基于SA模拟退火算法的多车辆TSP问题求解matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述        基于SA模拟退火算法的多车辆TSP问题求解matlab仿真,三个车辆分别搜索其对应的最短路径,仿真后得到路线规划图和SA收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 (完整程序运行后无水印)

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.

JD 1147:Jugs(一种用最少步骤求解的方法)

OJ题目:click here~~ 题目分析:九度上这道没有要求最少步数,只要得到最后结果即可AC , bfs , dfs都行。最少步骤的方法肯定也能AC啦,分析如下。 输入的三个数:a,b,n;> 由题不定方程ax+by=n必定有解> 如果b=n,则fill B即可,否则用试探法求出这样的两组解(a1,b1)及(a2,b2),其中a1 >0,b1<0;a1是满足方程的最小正整数;a2

【2024全国大学生数学建模竞赛】B题 模型建立与求解(含代码与论文)

目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明(等四问全部更新完再写)5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成! - 晚上7-8点之前第二问完成 - 明天中文之前全部写完 按照提交论文的格式进行撰写!完整版请看文章最后!

Java 快速求解x的x次幂结果为10

1.问题描述 如果x的x次幂结果为10(如图所示),你能计算出x的近似值吗? 显然,这个值是介于2和3之间的一个数字。 可以使用牛顿迭代公式进行求解,因为是逼近算法可以大大减少运算次数 public static void main(String[] args) {int i = 0;double x1 = 2.5;while (true) {i++;//x^x - 10 = 0//这一步

鸿蒙图表MPChart自定义样式(五)左y轴显示数值,右y轴显示百分比

左y轴数值不变,右y轴改成百分比,需要通过自定义RightAxisFormatter实现IAxisValueFormatter接口,将右y轴的数值改成百分比文本,RightAxisFormatter类如下: class RightAxisFormatter implements IAxisValueFormatter {maxNumber: number = 0;constructor(ma

(转)mysql按字段排序 按照字段的数值大小排序,而非 ascii码排序

参考:http://www.cnblogs.com/codefly-sun/p/5898738.html     如果是varchar类型, 排序后是这样的: 就是对mysql数值字符串类型进行排序,在默认情况下使用order by 字段名称 desc/asc 进行排序的时候,mysql进行的排序规则是按照ASCII码进行排序的,并不会自动的识别出这些数据是数值   ,百度了一下,

牛客《剑指Offer》 -- 数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路 特别注意负数的情况,出现负数,将其转化为正数然后求倒数。 class Solution {public:double Power(double base, int exponent) {double total = 1;bool flag = false