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

MATLAB三维二阶ODE引力方程积分轨道绘制异常排查求助

三维引力ODE积分异常:轨道未呈现预期周期性

问题背景

我需要在MATLAB中积分经典引力方程,求解物体的三维位置(本质是求解三维二阶ODE)。预期得到弹簧状的周期性重复轨道,但实际运行代码后得到的是类似抛射体的开轨迹,自查代码未发现明显错误,希望有人帮忙排查问题。

相关图示说明

  • 引力方程:经典平方反比形式的引力加速度公式
  • 预期正确轨道:呈弹簧状的闭合/周期性三维轨道
  • 当前错误轨道:类似抛射体的非闭合轨迹

完整代码

clc; clear;

%% 参数设置
G = 6.67430e-11;  % J*m/kg^2 引力常数
M = 5.9722e24; % kg, 地球质量

%% 初始条件
% x0 y0 z0 xdot0 ydot0 zdot0
initial_state = [6.0827e6; 3.4907e6; 4.6517e6; -651.3041; 1082.1; 7426.4];  % 示例初始状态

%% 时间区间
n = 0.001078; % rad/s
p = 2*pi/n; % 理论周期
tspan = [0 p];  % 仿真时间范围

%% 求解ODE
[t, result] = ode45(@(t, y) unconstranined_ECI_ode(t, y, G, M), tspan, initial_state);

% 提取ECI坐标系位置分量
X = result(:, 1);
Y = result(:, 2);
Z = result(:, 3);
ECImatrix = [X Y Z];

%% 绘图
figure;

subplot(1, 2, 1);
plot(X, Z);
title('无约束运动xz平面投影');
xlabel('X');
ylabel('Z');
grid on;

subplot(1, 2, 2)
plot(Y, Z);
title('无约束运动yz平面投影');
xlabel('Y');
ylabel('Z');
grid on;

%% ODE定义函数
function state = unconstranined_ECI_ode(t, y, G, M)

    vel = y(4:6); % 速度分量
    r = y(1:3); % 位置分量
    rnorm = norm(r);
    rhat = r/rnorm;
    accel = -(G*M/rnorm^2)*rhat;
    state = [vel;accel];
    
end

补充说明

引力方程核心为平方反比形式:$\boldsymbol{a} = -\frac{GM}{r^2}\hat{\boldsymbol{r}}$,初始状态采用给定的位置与速度值,时间区间设置为一个理论周期,但结果仍未呈现周期性轨道。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:34