在Python中绘制轨道轨迹

2023-12-04

如何在Python中设置三体问题?如何定义求解 ODE 的函数?

这三个方程是
x'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x,
y'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y, and
z'' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z.

写成 6 一阶我们有

x' = x2,

y' = y2,

z' = z2,

x2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x,

y2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y, and

z2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z

我还想添加地球轨道和火星的路径图,我们可以假设它是圆形的。 地球是149.6 * 10 ** 6距太阳和火星公里227.9 * 10 ** 6 km.

#!/usr/bin/env python                                                             
#  This program solves the 3 Body Problem numerically and plots the trajectories      

import pylab
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from numpy import linspace

mu = 132712000000  #gravitational parameter
r0 = [-149.6 * 10 ** 6, 0.0, 0.0]
v0 = [29.0, -5.0, 0.0]
dt = np.linspace(0.0, 86400 * 700, 5000)  # time is seconds

正如您所展示的,您可以将其写为六个一阶颂歌的系统:

x' = x2
y' = y2
z' = z2
x2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * x
y2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * y
z2' = -mu / np.sqrt(x ** 2 + y ** 2 + z ** 2) * z

您可以将其另存为向量:

u = (x, y, z, x2, y2, z2)

从而创建一个返回其导数的函数:

def deriv(u, t):
    n = -mu / np.sqrt(u[0]**2 + u[1]**2 + u[2]**2)
    return [u[3],      # u[0]' = u[3]
            u[4],      # u[1]' = u[4]
            u[5],      # u[2]' = u[5]
            u[0] * n,  # u[3]' = u[0] * n
            u[1] * n,  # u[4]' = u[1] * n
            u[2] * n]  # u[5]' = u[2] * n

给定初始状态u0 = (x0, y0, z0, x20, y20, z20),以及时间变量t,这可以输入scipy.integrate.odeint像这样:

u = odeint(deriv, u0, t)

where u将是上面的列表。或者你可以解压u从一开始就忽略这些值x2, y2, and z2(您必须先将输出转置为.T)

x, y, z, _, _, _ = odeint(deriv, u0, t).T
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中绘制轨道轨迹 的相关文章

随机推荐

  • cloudsim中的分时在cloudsim中如何工作?

    cloudsim中的分时是如何工作的 没有代表时间片或量子的变量 那么round robin的概念在cloudsim中是如何验证的呢 如果我们有 50 个 cloudlet 10 个虚拟机 其实CloudletSchedulerTimeSh
  • WebForm_DoPostBackWithOptions 未定义

    我下载并设置了 MS 的 Stock Trader 应用程序 我正在运行 Vista Ultimate IIS7 VS 2008 NET 3 5 整个应用程序大约有 120 MB 所以相当复杂 但一切似乎都通过 msi 设置得很好 当我运行
  • 如何在单个 iOS 应用程序中使用多个 Facebook 应用程序 ID?

    我想要一个 iOS 应用程序在运行时在多个 Facebook 应用程序之间切换 我希望用户能够在不同的 Facebook 应用程序 ID 下登录和发帖 具体取决于他们使用的是 iOS 应用程序的哪个部分 Facebook iOS SDK 从
  • CUDA:避免分支发散时的串行执行

    假设由单个 warp 执行的 CUDA 内核 为简单起见 达到if else语句 其中经纱内的 20 个线程满足condition而 32 20 12 线程则不会 if condition statement1 executed by 20
  • Android 中 FaceBook ShareLinkContent setImageUrl 被 ContentUrl 元数据取代

    我在我的应用程序中使用 facebook 版本 4 14 以便使用 ShareLinkConent 共享 Hashtag 以及 Imageurl 和 Contenturl 现在标签已成功发布到Facbook 中 但不幸的是 在 Facebo
  • Java String.split() 上逗号后跟非空格

    我正在解析一个数据集 该数据集烦人地决定在 TSV 中以逗号分隔项目 PharmGKB 路径 我正在看着你 但允许在每个逻辑元素中使用逗号 基本上 逗号后跟空格意味着没有分隔符 而逗号后跟字符意味着新元素 这是一 元素 二元素 三元素 应该
  • SqlDataAdapter 未更新

    我正在尝试更新TableTwo用一个DataTable建造使用TableOne 表之间的关系是一个称为外部列TableOneId inside TableTwo 我使用以下代码示例来完成这项工作 使用 DataAdapter 执行批量操作
  • 自动将所有网站链接更改为附属链接

    我希望能够在我的网站上自动将链接更改为附属链接媒体维基安装 这将有助于减少管理链接的时间 以防将来需要更改代码 这是我的 GOG com 联盟计划的设置 我需要将此密钥附加到每个 GOG com 链接的末尾 pp 708a77db476d7
  • xp主题控件透明背景

    我在位图上以及对话框的彩色背景上绘制了一些窗口控件 是否有某种可能的方法使窗口控件的背景透明 目前它们显示对话框的默认彩色背景 示例 我尝试粘贴纯蓝色位图 并且两个按钮控件具有明显的默认彩色矩形背景 通过为 Windows 提供您希望它用来
  • 在父 xml 中添加复选框时,expandablelistview 未展开

    I have developed the sample code of ExpandableListView in android Data is being populated in Adapter and displaying in t
  • 通过 SSL/TLS 下载 Apache CXF wsdl

    我有一个 cxf 服务运行在 https localhost 8443 services MyService wsdl 需要客户证书 WSDL 在这里并不重要 当我删除客户端证书或 https 要求时 我可以调用该服务 服务和客户端类是使用
  • django - 将列表转换回查询集[重复]

    这个问题在这里已经有答案了 我有一些记录想根据计算值进行排序 得到了答案在这里 就像这样 sorted Profile objects all key lambda p p reputation 在这样的 Profile 类上 class
  • Python ctypesgen/ctypes:如何以单字节对齐方式将结构字段写入文件

    使用 ctypesgen 我生成了一个结构体 我们称之为 mystruct 其字段定义如下 somelong ctypes c long somebyte ctypes c ubyte anotherlong ctypes c long s
  • 实例化点和名称绑定

    我对以下示例的实例化点感到困惑 include
  • 如何使用自动工具更改包含文件路径?

    我正在 ubuntu 中开发一个简单的聊天应用程序 它使用 crypto crypto 头文件的文件夹是 usr include crypto 当我将源标签栏上传到CentOS 我发现crypto 的头文件的文件夹是 usr include
  • 如何使用 npm 安装甚至不在 Node 应用程序中使用的全局包?

    我的知识npm这是 它是一个包管理器Node js应用程序 这意味着当您的节点应用程序需要其他人的库 包时 您可以方便地使用npm获取这些依赖项 但我最近遇到了这个命令 npm install g cca 然后我输入cca在我的终端中 现在
  • 在不循环的情况下连接单列中的记录?

    我有一个包含 1 列 varchar 值的表 如果可能的话 我正在寻找一种无需循环即可将这些值连接成单个值的方法 如果循环是解决此问题的最有效方法 那么我会采用这种方法 但我认为在默认使用该方法之前我会要求其他选项 我还想将其保留在 SQL
  • 在 Scala 中对数据库游标进行功能处理

    当我需要使用 JDBC 驱动程序从 PostgreSQL 数据库读取数百万个数据库行时 我总是使用游标 否则我将收到 OutOfMemoryError 这是我使用的模式 伪代码 begin transaction execute decla
  • Javascript 正则表达式允许阿拉伯语中的特定字符

    如何编写正则表达式以允许阿拉伯语中的特定字符或数字 我有这个正则表达式 但它确实匹配所有阿拉伯语和英语 sa zA Z u0600 u06FF 我想限制它只写arabic letters with space s 和破折号 对于将来的使用
  • 在Python中绘制轨道轨迹

    如何在Python中设置三体问题 如何定义求解 ODE 的函数 这三个方程是 x mu np sqrt x 2 y 2 z 2 x y mu np sqrt x 2 y 2 z 2 y and z mu np sqrt x 2 y 2 z