在月球上看地球和太阳是怎么转的?

news2025/2/24 2:11:56

文章目录

    • 参数初始化
    • 运动模型
    • 绝对坐标系
    • 以太阳和地球为中心
    • 以月球为坐标原点

参数初始化

众所周知,地球围绕太阳转,月球围绕地球转。但在地球上看,月亮和太阳都绕着地球转,那么如果我们是土生土长的月球人,我们看到的是谁绕着谁转呢?

日地月就是典型的三体系统,其中太阳质量为 1.989 × 1 0 30 k g 1.989×10^{30}kg 1.989×1030kg,地球质量为 5.965 × 1 0 24 k g 5.965×10^{24}kg 5.965×1024kg,月球质量为 7.342 ✕ 1 0 22 k g 7.342✕10^{22}kg 7.342✕1022kg,万有引力常数为 G = 6.67 × 1 0 − 11 N ⋅ m 2 / k g 2 G=6.67×10^{-11}N·m2/kg^2 G=6.67×1011Nm2/kg2。地月距离为 3.8 × 1 0 8 m 3.8\times10^8m 3.8×108m;日地距离为 1.5 × 1 0 11 m 1.5\times10^{11}m 1.5×1011m;地球公转速度为 28.8 k m / s 28.8km/s 28.8km/s;月球公转速度为 1 k m / s 1km/s 1km/s,则各参数初始化为

import numpy as np
#后续代码主要更改这里的参数
m = [1.33e20,3.98e14,4.9e12]
x = np.array([0, 1.5e11, 1.5e11+3.8e8])
y = np.array([0.0, 0, 0])
u = np.array([0.0, 0, 0])
v = np.array([0,2.88e4,2.88e4+1.02e3])

运动模型

日地月的运动遵循古老而经典的万有引力

F ⃗ = G m i m j r 2 e ⃗ r \vec F=\frac{Gm_im_j}{r^2}\vec e_r F =r2Gmimje r

然后根据牛顿运动定律

m i d v ⃗ i d t = G m i m j r i j 3 r ⃗ i j , v ⃗ i = d r ⃗ i d t m_i\frac{\text d\vec v_i}{\text dt}=\frac{Gm_im_j}{r_{ij}^3}\vec r_{ij},\quad\vec v_i=\frac{\text d\vec r_i}{\text dt} midtdv i=rij3Gmimjr ij,v i=dtdr i

写为差分形式

v ⃗ i = ∑ j ≠ i G m j r i j 3 r ⃗ i j d t r ⃗ i = v ⃗ i d t \begin{aligned} \vec v_i&=\sum_{j\not=i}\frac{Gm_j}{r_{ij}^3}\vec r_{ij}\text dt\\ \vec r_i&= \vec v_i\text dt \end{aligned} v ir i=j=irij3Gmjr ijdt=v idt

将其在二维平面坐标系中拆分,令 v ⃗ = ( u , v ) \vec v=(u,v) v =(u,v),则短时间内其变化规则可写为

u i + = ∑ j ≠ i G m j ( x j − x i ) d t ( x i − x j ) 2 + ( y i − y j ) 2 3 v i + = ∑ j ≠ i G m j ( y j − y i ) d t ( x i − x j ) 2 + ( y i − y j ) 2 3 x i + = u ⃗ i d t y i + = v ⃗ i d t \begin{aligned} u_i&+=\sum_{j\not=i}\frac{Gm_j(x_j-x_i)\text dt}{\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}^3}\\ v_i&+=\sum_{j\not=i}\frac{Gm_j(y_j-y_i)\text dt}{\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}^3}\\ x_i&+= \vec u_i\text dt\\ y_i&+= \vec v_i\text dt \end{aligned} uivixiyi+=j=i(xixj)2+(yiyj)2 3Gmj(xjxi)dt+=j=i(xixj)2+(yiyj)2 3Gmj(yjyi)dt+=u idt+=v idt

接下来,以太阳为坐标系,做出月亮和地球的运动轨迹

from itertools import product
N = 1000
dt = 36000
ts =  np.arange(0,N*dt,dt)/3600/24
xs,ys = [],[]
for _ in ts:
    x_ij = (x-x.reshape(3,1))
    y_ij = (y-y.reshape(3,1))
    r_ij = np.sqrt(x_ij**2+y_ij**2)
    for i,j in product(range(3), range(3)):
        if i==j : continue
        u[i] += (m[j]*x_ij[i,j]*dt/r_ij[i,j]**3)
        v[i] += (m[j]*y_ij[i,j]*dt/r_ij[i,j]**3)
    x,y = x+u*dt, y+v*dt
    xs.append(x.tolist())
    ys.append(y.tolist())

xs = np.array(xs)
ys = np.array(ys)

其中,xs和ys都是 N × 3 N\times3 N×3的矩阵,其三列分别代表太阳、地球以及月球的坐标,但地月之间的距离远小于日地间的距离,为了在画图的时候可以看清,所以扩大一百倍

xS, yS = xs[:,0], ys[:,0]
xE, yE = xs[:,1], ys[:,1]
xM = xE + 100*(xs[:,2]-xE)
yM = yE + 100*(ys[:,2]-yE)

绝对坐标系

接下来就是激动人心的时刻,先画出三者在绝对空间中的运动情况

import matplotlib.pyplot as plt

def drawSystem(xS, yS, xE, yE, xM, yM, ax):
    ax.plot(xS, yS, marker='o', color='red', label='sun')
    ax.plot(xE, yE, color='blue', label='earth')
    ax.plot(xM, yM, color='cyan', ls='--', lw=1, label='moon')
    plt.legend()
    plt.grid()
    plt.tight_layout()

ax = plt.subplot()
drawSystem(xS, yS, xE, yE, xM, yM, ax)
plt.show()

在这里插入图片描述

以太阳和地球为中心

接下来分别以太阳和地球为坐标原点,绘制其变化

fig = plt.figure()
ax = fig.add_subplot(1,2,1)
drawSystem(xS-xS, yS-yS, xE-xS, yE-yS, xM-xS, yM-yS, ax)
ax = fig.add_subplot(1,2,2)
drawSystem(xS-xE, yS-yE, xE-xE, yE-yE, xM-xE, yM-yE, ax)
plt.show()

在这里插入图片描述

左边是以太阳为原点,右边是以地球为原点,所以在地球上看,月亮和太阳都是绕着我们旋转的。

以月球为坐标原点

最后,来看看月球人怎么看这个问题吧

plt.plot(xS-xM, yS-yM, color='red', label='sun')
plt.plot(xE-xM, yE-yM, color='blue', label='earth')
plt.plot(xM-xM, yM-yM, marker='o', color='cyan', label='moon')
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()

在这里插入图片描述

可以看到,地球是绕着月球转的,而太阳就比较无语了,不知道在外面画什么圈圈。当然,这个图是放大之后的结果,而且月球人需要意识到月亮在自转,否则被地球潮汐锁定的月球,是看不出地球的位置变化的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记-数据库事务隔离级别

记-数据库事务隔离级别 一、MySQL数据库默认隔离级别二、JDBC连接的事务隔离级别1. 查看JDBC连接的事务隔离级别2. JDBC连接的事务隔离级别设置过程 三、修改JDBC连接的事务隔离级别1. 全局修改2. 局部修改 一、MySQL数据库默认隔离级别 MySQL数据库默认事务隔离级别为REPEATAB…

微服务生态系统:使用Spring Cloud构建分布式系统

文章目录 什么是微服务?为什么选择Spring Cloud?Spring Cloud的关键组件示例:构建一个简单的微服务步骤1:创建Spring Boot项目步骤2:配置Eureka服务发现步骤3:创建REST控制器步骤4:运行项目步骤…

【R语言】完美解决devtools安装GitHub包失败的问题(以gwasglue为例)

Rstudio,R4.3.1,命令在Rstudio的命令行即console中运行。 文章目录 一、问题复述二、分析三、解决四、安装示例:gwasglue 一、问题复述 使用devtools安装一个github的包。 devtools: devtools 是 R 语言中一个非常有用的包&…

netty之数据读写源码阅读

数据读写 write 从client端的写开始看 client与服务端建立完connect后可以从future里拿到连接的channel对象。这里的channel是io.netty.channel.Channel对象。 调用其channel.writeAndFlush(msg);方法可以进行数据发送。 writeAndFlush会调用pipeline的writeAndFlush方法 …

目标检测算法改进系列之Neck添加渐近特征金字塔网络(AFPN模块)

渐近特征金字塔网络(AFPN模块) 在目标检测任务中,多尺度特征对具有尺度差异的目标进行编码具有重要意义。多尺度特征提取的常用策略是采用经典的自顶向下和自底向上的特征金字塔网络。 然而,这些方法存在特征信息丢失或退化的问…

【音视频】ffplay源码解析-FrameQueue队列

帧队列架构位置 结构体源码 FrameQueue结构体 /* 这是一个循环队列,windex是指其中的首元素,rindex是指其中的尾部元素. */ typedef struct FrameQueue {Frame queue[FRAME_QUEUE_SIZE]; // FRAME_QUEUE_SIZE 最大size, 数字太大时会占用大量的…

第二证券:什么是a股b股?

在我国的股市中,我们经常会听到“A股”和“B股”这两个名词。那么,终究什么是A股和B股呢? 首先,A股全称为“A股票”,是指在我国境内上市的以人民币计价的股票。A股首要面向国内出资者,只要具有必定条件的内…

如何快速检测代理IP质量?方法与工具全干货

一直以来,IP代理都是出海跨境业务的刚需。质量好的IP代理,除了在跨境业务产生巨大作用,在SEO监控、爬虫抓取、市场研究等领域也发挥着很大的作用。但是,对于IP代理的质量检测是我们选择高标准IP代理的一句,我们一般都会…

美国零售电商平台Target,值得入驻吗?如何入驻?

Target 是美国最大的零售商之一,在品牌出海为大势所趋的背景下,它在北美电商中的地位节节攀升。Target 商店在众多垂直领域提供各种价格实惠的自有品牌,吸引越来越多的跨境商家入驻,如美妆、家居、鞋服、日用百货等,随…

Mybatis学习笔记12 分页插件

Mybatis学习笔记11 缓存相关_biubiubiu0706的博客-CSDN博客 (5) select distinct top(<取数说明>) <选择 列表> (1) from <表1> <连接类型> join <表2> ON <连接条件> (2) where <筛选条件> (3) group by <分组条件> (4) havi…

linux下链接

linux下链接用法 ln链接格式与介绍 linux下链接用法一、链接的使用格式二、链接的介绍 一、链接的使用格式 链接&#xff1a; 格式&#xff1a; ln 源文件 链接文件 硬链接 ln -s 源文件 链接文件 软连接 硬链接文件占磁盘空间 但是删除源文件不会影响硬链接文件 软链接文件不…

秒杀场景设计

1.活动页面静态化处理 没有到活动时间页面静态化处理避免访问服务端 2.使用cdn让用户可以获取就近的所需静态页面内容 3.限制用户同一时间点击次数 4.把商品库存提前放入redis&#xff0c;秒杀请求直接操作redis防止操作直接落库打崩数据库 5.使用lua脚本操作redis保证操作…

transformer系列2---transformer架构详细解析

transformer详细解析 Encoder1 输入1.1 Embedding 词嵌入1.1.1 Embedding 定义1.1.2 几种编码方式对比1.1.3 实现代码 1.2 位置编码1.2.1 使用位置编码原因1.2.2 位置编码方式1.2.3 位置编码代码 2 注意力 Attention2.1 自注意力self-attention2.1.1 QKV含义2.1.2 自注意力公式…

微信图文如何替换成自己的二维码?

二维码样式中的二维码目前都是小蚂蚁的二维码&#xff0c;如何替换成自己的二维码&#xff0c;其实也很简单&#xff0c;就像替换样式中的图片一样&#xff0c;首先点击二维码&#xff0c;选择工具条中的“换图”&#xff0c;然后在弹出来的框中填入二维码图片的链接地址或者直…

招股书更新9版终上市,飞沃科技能否躲过风电红利后的黯淡?

文丨熔财经 作者丨文泽 碳达峰、碳中和成为主旋律目标下&#xff0c;作为可再生能源主力的风电产业迎来了发展的“黄金时代”。与新能源相关的上下游企业也赚的“盆满钵满”。 在此背景下&#xff0c;飞沃科技(301232.SZ)历经4轮问询&#xff0c;更新9版招股书终于登陆资本市…

Command not found 解决方法

前言&#xff1a;要更新code上服务器用GUI失败&#xff0c;$ patch_delivery_gui&#xff0c;报错&#xff1a;patch_delivery_gui: command not found&#xff0c;上次编TA也是这个问题 写了个脚本&#xff1a;这个脚本会先检查ifconfig、firewall-cmd和vim命令是否可用&#…

ExcelServer EXCEL服务器使用- 用户、角色权限配置

Excel文件服务器搭建 搭建Excel服务器 1、登录 默认 用户名 Admin 密码 3 2、角色管理 添加修改角色 角色配置在 系统管理->角色.fexm文件夹下 可以像修改excel文件一样 修改角色 3、用户管理 添加修改用户 用户的修改在 系统管理->用户.fexm 可以像excel一样编辑用户…

27、Flink 的SQL之SELECT (窗口聚合)介绍及详细示例(4)

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

机器人中的数值优化(十七)—— 锥与对称锥

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

http的网站进行访问时候自动跳转至https

通常情况下我们是用的都是http的路径&#xff0c;对于https的使用也很少&#xff0c;但是随着https的普及越来越多的域名访问需要用到https的&#xff0c;这个我们就演示怎么设置在我们对一个http的网站进行访问时候自动跳转至https下。 用到的工具及软件: 系统&#xff1a;wi…