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

Octave求解非线性ODE系统绘图与论文结果不符的技术求助

非线性ODE系统求解结果与论文不符的排查建议

我在Octave环境中使用lsode求解一组非线性常微分方程系统,但运行代码后生成的绘图与目标论文第66页的结果不一致。我的代码如下:

function main
    t=linspace(0, 4000, 8000);
    x0 = [1;5*3.14/360;5*3.14/360;0.175;0;0];
    x = lsode (@f, x0, t);
    subplot(2,2,1);plot(t,x(:,1));title("l");legend("fgo")
    subplot(2,2,2);plot(t,x(:,2));title("theta")
    subplot(2,2,3);plot(t,x(:,3));title("phi")
    subplot(2,2,4);plot(t,x(:,4));title("dl")
endfunction;
function xdot = f(x,t);
    T=0.000644;
    O=0.001049;
    xdot=zeros(6,1);
    xdot(1)=x(4);
    xdot(2)=x(5);
    xdot(3)=x(6);
    xdot(4)=T+x(1)*(x(5)+O)^2*cos(x(3))^2+x(1)*x(6)^2-O^2*x(1)*(1-3*cos(x(2))^2*cos(x(3))^2);
    xdot(5)=-2*x(4)/x(1)*(x(5)+O)+2*x(6)*(x(5)+O)*tan(x(3))-3*O^2*cos(x(2))*sin(x(2));
    xdot(6)=-2*x(4)/x(1)*x(6)-(x(5)+O)^2*cos(x(3))*sin(x(3))-3*O^2*cos(x(2))^2*cos(x(3))*sin(x(3));
endfunction;

以下是针对性的排查方向:

  • ODE方程实现核对
    逐行对比论文第66页的原始方程,重点检查:

    • xdot(4)中各项的符号、系数(比如-O^2*x(1)*(1-3*cos(x(2))^2*cos(x(3))^2)是否和论文的引力/离心项一致)
    • xdot(5)中的2*x(6)*(x(5)+O)*tan(x(3))项,确认系数与符号是否匹配论文推导
    • xdot(6)中的耦合项-(x(5)+O)^2*cos(x(3))*sin(x(3)),检查三角函数组合是否正确
    • 确认论文中所有角度运算均为弧度制(Octave三角函数默认弧度,与你的初始条件转换一致)
  • 参数与初始条件验证

    • 确认参数T、O的数值、物理意义、单位完全匹配论文定义
    • 核对初始条件x0的每个分量(l, theta, phi, dl, dtheta, dphi)是否与论文第66页的设定完全一致,比如dl初始值0.175是否符合要求
  • 求解器精度调整
    若系统存在刚性,lsode默认精度可能不足,尝试提高求解精度:

    options = odeset('RelTol', 1e-8, 'AbsTol', 1e-10);
    x = lsode (@f, x0, t, options);
    

    同时检查时间区间linspace(0, 4000, 8000)是否与论文的仿真时长、采样密度一致

  • 可视化匹配修正

    • 论文绘图可能将弧度转换为角度显示,可修改绘图代码验证:
      subplot(2,2,2);plot(t,x(:,2)*360/(2*pi));title("theta (deg)")
      subplot(2,2,3);plot(t,x(:,3)*360/(2*pi));title("phi (deg)")
      
    • 检查坐标轴范围是否与论文一致,避免因绘图缩放导致趋势误判

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:25:26