韦伯望远镜的拉格朗日点计算推导过程,包含MATLAB和python运动轨迹仿真代码

ops/2025/3/15 8:35:09/

研究过程

  1. 起源与提出:1687 年牛顿提出 “三体问题”,旨在研究三个可视为质点的天体在相互之间万有引力作用下的运动规律,但因运动方程过于复杂,难以得到完全解。
  2. 欧拉的贡献1:1767 年,瑞士数学家莱昂哈德・欧拉根据旋转的二体引力场推算出了其中的三个特解,即 L1、L2 和 L3。
  3. 拉格朗日的突破1:1772 年,法国数学家约瑟夫・路易・拉格朗日推算出了剩下的两个特解 L4 和 L5。至此,平面圆型限制性三体问题的五个特解全部被找到,后来人们将这五个点统称为拉格朗日点。
  4. 观测证实1:1906 年,天文学家马克斯・沃尔夫发现一颗位于火星和木星间主带以外的小行星,它与木星、太阳构成等边三角形,位于木星前方的 L4 点。同年还发现 617 号小行星在木星后方的 L5 点。20 世纪 80 年代,在土星和它的大卫星构成的运动系统中也发现类似等边三角形。截至 2009 年,天文学家在木星的 L4 和 L5 周围各发现超过 1000 颗小行星,进一步证实了拉格朗日点的存在。

重要意义

  1. 在天文学领域
    • 解释天体分布:有助于解释为何某些小行星和卫星能稳定存在于行星或太阳的特定轨道上,如木星的特洛伊小行星群位于木星的 L4 和 L5 点。
    • 观测优势1:日地系统的 L1 点能提供不间断的太阳视野,是观测太阳的绝佳位置;L2 点有稳定的热力学环境以及与地球相对固定的构型,利于开展天文观测任务,如詹姆斯・韦伯空间望远镜就位于日地系统的 L2 点。
  2. 在航天领域
    • 节省能源:航天器位于拉格朗日点时,受两个大天体引力作用,可保持相对稳定的轨道,能以最小的能量消耗维持轨道,节省大量燃料,降低航天任务成本。
    • 作为星际探测中转站1:可作为星际探测的理想中转站,如月球 - 地球系统的 L1 点可作为地月转移的中继点,为航天器的轨道转移和姿态调整等提供便利,有助于更深入地开展深空探测任务。
  3. 在天体力学理论方面
    • 推动三体问题研究:是限制性三体问题的重要特解,为三体问题的研究提供了特殊情况和突破口,帮助科学家更好地理解和处理复杂的天体力学问题,推动了天体力学理论的发展。
    • 验证引力理论:对拉格朗日点的研究和观测,是对牛顿万有引力定律等引力理论的有效验证,进一步巩固了引力理论在天体力学中的地位,也为广义相对论等更深入的引力理论研究提供了实践基础。
  4. 在未来太空开发方面
    • 潜在太空殖民地选址:拉格朗日点尤其是 L5 点相对稳定,可作为未来太空殖民地的潜在位置,为人类在太空中长期居住和建设提供可能,为解决地球资源、人口等问题提供新的思路和方向。
    • 资源开发的战略点:未来若对小行星等天体资源进行开发,拉格朗日点可作为资源运输、存储和加工的战略节点,便于对资源进行集中处理和利用,为太空资源开发产业的发展提供支撑。

1、推导过程 

 3. Python 代码实现拉格朗日点计算和运动轨迹仿真

python">import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import newton# 定义常量
G = 6.67430e-11  # 万有引力常数 (m^3 kg^-1 s^-2)
M_sun = 1.989e30  # 太阳质量 (kg)
M_earth = 5.972e24  # 地球质量 (kg)
a = 1.496e11  # 地球到太阳的平均距离 (m)
T = 365.25 * 24 * 3600  # 地球绕太阳的公转周期 (s)
omega = 2 * np.pi / T  # 地球绕太阳的公转角速度 (rad/s)
mu = M_earth / (M_sun + M_earth)# 定义求解 L2 点的方程
def f(x):return -omega**2 * x + G * M_sun / (x + mu * a)**2 + G * M_earth / (x - (1 - mu) * a)**2# 使用牛顿 - 拉夫逊方法求解 L2 点
L2 = newton(f, a + 1e9)print(f"L2 点到太阳的距离: {L2:.2e} m")# 运动轨迹仿真
t = np.linspace(0, T, 1000)
x_sun = -mu * a * np.cos(omega * t)
y_sun = -mu * a * np.sin(omega * t)
x_earth = (1 - mu) * a * np.cos(omega * t)
y_earth = (1 - mu) * a * np.sin(omega * t)
x_L2 = L2 * np.cos(omega * t)
y_L2 = L2 * np.sin(omega * t)# 绘制运动轨迹
plt.figure(figsize=(10, 10))
plt.plot(x_sun, y_sun, label='Sun')
plt.plot(x_earth, y_earth, label='Earth')
plt.plot(x_L2, y_L2, label='L2 Point')
plt.scatter(0, 0, color='black', label='Barycenter')
plt.xlabel('x (m)')
plt.ylabel('y (m)')
plt.title('Sun - Earth - L2 Point Orbits')
plt.legend()
plt.axis('equal')
plt.grid(True)
plt.show()

效果如下

代码解释

  1. 常量定义:定义了万有引力常数、太阳质量、地球质量、地球到太阳的平均距离、地球绕太阳的公转周期和公转角速度等常量。
  2. 求解 L2​ 点:定义了求解 L2​ 点的方程 f(x),并使用 scipy.optimize.newton 函数求解该方程。
  3. 运动轨迹仿真:计算太阳、地球和 L2​ 点在一段时间内的位置,并使用 matplotlib 库绘制它们的运动轨迹。

注意事项

  • 上述代码假设韦伯望远镜精确位于 L2​ 点,实际情况中,望远镜会围绕 L2​ 点进行小幅度的轨道保持操作。
  • 代码中的数值计算是基于简化的二体问题模型,实际的太阳系是一个多体系统,需要考虑更多的因素。

4. MATLAB 代码实现拉格朗日点计算和运动轨迹仿真

 代码如下

G = 6.67430e-11; % 万有引力常数 (m^3 kg^-1 s^-2)
M_sun = 1.989e30; % 太阳质量 (kg)
M_earth = 5.972e24; % 地球质量 (kg)
a = 1.496e11; % 地球到太阳的平均距离 (m)
T = 365.25 * 24 * 3600; % 地球绕太阳的公转周期 (s)
omega = 2 * pi / T; % 地球绕太阳的公转角速度 (rad/s)
mu = M_earth / (M_sun + M_earth);% 定义求解 L2 点的函数
f = @(x) -omega^2 * x + G * M_sun / (x + mu * a)^2 + G * M_earth / (x - (1 - mu) * a)^2;% 使用牛顿 - 拉夫逊方法求解 L2 点
x0 = a + 1e9; % 初始猜测值
L2 = fzero(f, x0); 
% 创建 3D 图形窗口
figure('Position', [100, 100, 800, 600]);
ax = gca;
ax.XLim = [-3, 3];
ax.YLim = [-3, 3];
ax.ZLim = [-1, 1];
xlabel('X');
ylabel('Y');
zlabel('Z');
title('3D Celestial Bodies Animation');
grid on;% 初始化点
x = 0; y = 0; z = 0;
h = plot3(x, y, z, 'ro'); % 'ro' 表示红色圆点
hold on
x2 = 0; y2 = 0; z2 = 0;
m = plot3(x2, y2, z2, 'bo'); 
hold on
x3 = 0; y3 = 0; z3 = 0;
n = plot3(x3, y3, z3, 'yo'); 
hold on
legend('h', 'm', 'n');
grid on% 动画循环% 计算不同时间点的位置
t = linspace(0, T, 1000);
x_sun = -mu * a * cos(omega * t);
y_sun = -mu * a * sin(omega * t);
z_sun = zeros(size(t));x_earth = (1 - mu) * a * cos(omega * t);
y_earth = (1 - mu) * a * sin(omega * t);
z_earth = zeros(size(t));x_L2 = L2 * cos(omega * t);
y_L2 = L2 * sin(omega * t);
z_L2 = zeros(size(t));set(h, 'XData', x_sun, 'YData', y_sun, 'ZData', z_sun); % 更新点的位置
set(m, 'XData', x_earth, 'YData', y_earth, 'ZData', z_earth); % 更新点的位置
set(n, 'XData', x_L2, 'YData', y_L2, 'ZData', z_L2); % 更新点的位置drawnow; % 更新图形
pause(0.1); % 暂停一段时间以观察动画效果

效果如下

代码解释:

  1. 常量定义:定义了仿真所需的各种物理常量,如万有引力常数、太阳和地球的质量、日地距离、公转周期等。
  2. 求解 L2 点:定义了一个匿名函数 f 来表示求解 L2 点的方程,然后使用 fzero 函数求解该方程得到 L2 点的位置。
  3. 位置计算:计算太阳、地球和 L2 点在不同时间点的三维位置,存储在对应的 xyz 数组中。这里假设所有天体都在同一平面(z 坐标为 0)上运动。
  4. 3D 图形初始化:创建一个 3D 图形窗口,设置坐标轴范围、标签和标题,并初始化表示太阳、地球和 L2 点的图形元素。
  5. 动画循环:使用 for 循环遍历所有时间点,在每一帧中更新物体的位置,并使用 drawnow limitrate 函数刷新图形,从而实现动画效果。

运行此代码后,你将看到一个动态的 3D 画面,展示太阳、地球和位于 L2 点的韦伯望远镜的运动过程。

5. 结论

从以上推导和画图结果可以知道L2点的运动轨迹如何,供大家参考分析,文毕。


http://www.ppmy.cn/ops/165892.html

相关文章

笔试刷题专题(一)

文章目录 最小花费爬楼梯(动态规划)题解代码 数组中两个字符串的最小距离(贪心(dp))题解代码 点击消除题解代码 最小花费爬楼梯(动态规划) 题目链接 题解 1. 状态表示&#xff1…

Python数据类型进阶——详解

—— 小 峰 编 程 目录 1.整型 1.1 定义 1.2 独有功能 1.3 公共功能 1.4 转换 1.5 其他 1.5.1 长整型 1.5.2 地板除(除法) 2. 布尔类型 2.1 定义 2.2 独有功能 2.3 公共功能 2.4 转换 2.5 其他 做条件自动转换 3.字符串类型 3.1 定义 3.2 独有功能…

谷歌Chrome或微软Edge浏览器修改网页任意内容

在谷歌或微软浏览器按F12,打开开发者工具,切换到console选项卡: 在下面的输入行输入下面的命令回车: document.body.contentEditable"true"效果如下:

宇树与智元的崛起:机器人“灵魂”注入的技术密码

目录 机器人运动的基石:大扭矩与平衡术 大扭矩:力量的源泉 平衡术:动态平衡的艺术 从运动到智能:AI学习的“灵魂”注入 强化学习:试错中的成长 模仿学习:站在巨人的肩膀上 数据与知识共享&#xff1…

安卓16“毕业季”:最后冲刺,全新体验即将登场

在科技飞速发展的今天,谷歌安卓系统的每一次更新都备受全球用户和开发者的关注。近日,安卓 16 的发展迎来了一个重要的里程碑 ——Beta 3 版本正式上线,同时 API 接口也已锁定 。这一标志性事件意味着安卓 16 已经进入了平台稳定性阶段&#…

设计模式学习笔记——命令模式

2025年3月13日,周四下午 相同的保存逻辑在各个组件中重复出现。 且需要修改保存逻辑时,各个组件的保存逻辑都需要进行相应修改。 使用了命令模式把保存逻辑从三个组件中独立出来后,减少了代码冗余。 可以通过“保存命令”来使用保存逻辑&am…

基于Hadoop的城市道路交通数据的可视化分析-Flask

开发语言:Python框架:flaskPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 数据信息管理 数据信息修改 搜索功能 公告展示界面 公告修改…

【蓝桥杯每日一题】3.8

🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x 抱一丝各位,前面两个月生了一场重病没有更新,懒病太严重了,从现在开始接着这个专题更新 每天刷一题,头发少一根;但若放弃治疗…