使用八度在Odeset中设置InitialStep和/或MaxStep

问题描述

我正在Octave中使用ode45,在我解决了几个问题之后,尽管如此,我似乎仍想使用odeset命令修复InitialStep和/或MaxStep,但是在ode45中使用它似乎无法正常工作。有想法吗?

参数

ks27=9.2730e+03; % [pmol/cell.h]
phi27=3.977e+03; % [pmol/cell.h]

ks28=0.537;
phi28=6.697e-06;

ks29=6.683e+05;
phi29=6.697e-06;  % X<- a(1) /S2<-(a2)

功能

a(1)*phi29*a(2)/(ks29+a(2))];
f = @(t,a)[a(1)*phi27*a(2)/(ks27+a(2)); a(1)*phi28*a(2)/(ks28+a(2)) ];

初始条件

a0=[0.09;2.85];
T= [0    28    54    76   101   124   147]';
t0= [0 :147];
options = odeset('InitialStep',1,'MaxStep',10,'RelTol',1e-10,'AbsTol',1e-10);
[tspan,a]=ode45(f,t0,a0);

错误

[tspan,a] 警告:解决不成功。在到达tend = 147.000000的端点之前,迭代积分循环在时间t = 13.000000退出。如果步长变得太小,可能会发生这种情况。尝试使用命令“ odeset”减小“ InitialStep”和/或“ MaxStep”的值。 警告:来自 第312行第7列的Integrated_adaptive ode45在232行第12列 ans =

     0.00000         0.09000         2.85000
     1.00000         0.30544         2.85000
     2.00000         1.03653         2.85000
     3.00000         3.51786         2.85002
     4.00000        11.93926         2.85005
     5.00000        40.52089         2.85019
     6.00000       137.53848         2.85063
     7.00000       467.01498         2.85215
     8.00000      1587.77954         2.85731
     9.00000      5421.66890         2.87491
    10.00000     18790.36941         2.93558
    11.00000     68629.03195         3.15295
    12.00000    306808.87116         4.05108
    13.00000   4471512.33678        11.76504

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)