You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改科学模型初始值,使用Matplotlib绘制第二条卫星轨道曲线

你完全可以保留第一次运行生成的曲线,不需要手动复制粘贴数据,只需要把轨道计算逻辑封装为可传入自定义参数的函数,每次更换基准参数后重新计算数据,再叠加绘图即可。

核心原理

matplotlib的ax.plot()方法默认会在当前坐标系上叠加绘制新曲线,不会覆盖已有内容,只要你没有重新创建fig和ax对象,之前画的曲线都会保留。

完整实现代码

from typing import Any, Union
import matplotlib.pyplot as plt

def calculate_orbit(A:float=10, Cw:float=2.7, init_h:float=300000) -> tuple[list[float], list[float]]:
    data = []
    t = 0
    dt = 10
    h = init_h
    h0 = h
    G = 6.67384 * 10 ** -11
    M = 5.972 * 10 ** 24
    m = 209.4 * A ** (3 / 2)

    r = 6371000 + h
    v: Union[float, Any] = (G * M / r) ** .5

    vx = v
    vy = 0
    Px = 0
    Py = r

    while 0 < h < h0 + 100000:
        t = t + dt

        r = (Px ** 2 + Py ** 2) ** .5
        Fg = G * M * m / r ** 2
        Fgx = -Fg * Px / r
        Fgy = -Fg * Py / r

        h = r - 6371000
        if h > 600000:
            z = 1.607 * 10 ** -11 * 0.991169 ** (h / 1000)
        else:
            if h > 139000:
                z = 3.848 * 10 ** -8 * 0.978294 ** (h / 1000)
            else:
                z = 1.225 * 0.863697 ** (h / 1000)
        v = (vx ** 2 + vy ** 2) ** .5
        Fwl = 0.5 * z * Cw * A * v ** 2
        Fwlx = -Fwl * vx / v
        Fwly = -Fwl * vy / v

        ax = (Fgx + Fwlx) / m
        ay = (Fgy + Fwly) / m
        vx = vx + ax * dt
        vy = vy + ay * dt
        Px = Px + vx * dt
        Py = Py + vy * dt

        data.append([t, h])
    return zip(*data)

# 绘图部分,只创建一次画布和坐标系
fig, ax = plt.subplots()

# 按需更换参数计算并叠加绘图
t1, h1 = calculate_orbit(init_h=300000, A=10)
ax.plot(t1, h1, label='初始高度300km,迎风面积10㎡')

t2, h2 = calculate_orbit(init_h=350000, A=10)
ax.plot(t2, h2, label='初始高度350km,迎风面积10㎡')

t3, h3 = calculate_orbit(init_h=300000, A=12)
ax.plot(t3, h3, label='初始高度300km,迎风面积12㎡')

# 设置坐标轴信息和图例
ax.set_xlabel('时间(秒)')
ax.set_ylabel('高度(米)')
ax.set_title("不同参数下卫星轨道高度变化")
ax.legend()
plt.show()

补充说明

  • 你可以根据自己的对比需求调整calculate_orbit的入参,把需要修改的基准参数都设置为函数入参即可
  • 如需提升不同曲线的区分度,可以在ax.plot中添加c='颜色值'、linestyle='线型'参数自定义样式
  • 如果需要复用之前的计算结果,直接把函数返回的时间、高度数组保存为变量即可,无需手动复制数据

内容的提问来源于stack exchange,提问作者TiemeVDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:09:01