[已解决] 求解微分方程组出现错误,显示在 t=1.369959e-03 处失败。在时间 t 处,步长大小必须降至所允许的最小值(3.469447e-18)以下,才能达到积分容差要求

[复制链接]
pser_l 发表于 2022-1-10 11:13:57

  1. clc; clear;
  2. tspan = [0, 1];
  3. x0=[0;500;0;500;0;500;0;0;0;0];
  4. % opts = odeset('Maxstep',1.75e-18);
  5. tic
  6. [t, x] = ode15s(@f2, tspan, x0);
  7. % [t, x] = ode45(@f2, tspan, x0,opts);
  8. toc
  9. plot(t, x(:, 6),'k--');
  10. function f = f2(t, x)
  11. f = zeros(10, 1);
  12. f(1) = x(2);
  13. f(2) = (13220*x(3))/23 - (13220*x(1))/23 + 4/115;
  14. f(3) = x(4);
  15. f(4) = (679000*x(9))/11 - (24379700*x(3))/209 - (679000*x(7))/11 - (132200*x(1))/209;
  16. f(5) = x(6);
  17. f(6) = (98000000*x(7))/187 - (449500000*x(5))/187;
  18. f(7) = x(8);
  19. f(8) = (1960000000*x(5))/111 - (1290100000*x(3))/111 - (100000*x(8))/111 - (2639000000*x(7))/111 + (679000000*x(9))/111;
  20. f(9) = x(10);
  21. f(10)=(25802000*x(3))/73 - (55*x(10))/2 + (13580000*x(7))/73 - (13580000*x(9))/73 - (5*sign(x(10)))/73 + (563*x(10)^3)/7300;
  22. end
复制代码


警告: 在 t=3.316687e-02 处失败。在时间 t 处,步长大小必须降至所允许的最小值(1.110223e-16)以下,才能达到积分容差要求。
尝试过限制步长,但是出不来结果,请大佬帮忙看看是什么问题,如何才能解决

1 条回复


pser_l 发表于 2022-1-13 22:59:35
本人回答下,经过反复测试,可能是sign和初值的原因,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表