Matlab Matlab ode15i如何在ode15i中设置步长

时间:2019-02-13 14:12:32

标签: matlab

我正在尝试使用ode15i求解隐式方程,该方程使用ode15i生成的时间。例如这样的

options = odeset('RelTol',1e-4,'Stats','on','OutputFcn',@odeplot);
sol = ode15i(@ode15ifun,[0 t_end],wA0,wA0_dot,options);

我想在ode15ifun中调用一个名为calc_length的函数,该函数使用ode15i生成的时间来计算可变长度。

function L = calc_length(t,w,type)   % t is generated by ode15i

问题是我使用的术语t(n) - t(n-1)必须为正。 t(n)是ode15i生成的第n个循环的时间,第n-1个循环的t(n-1)。我将t保存为全局变量,因此我现在意识到ode15i中的t不会连续增加。例如,它可以先是0,然后突然跳到20,然后再返回5。我认为求解器首先只是尝试做一个更大的步骤,这样可以节省计算时间。当公差被打破时,它又回到了较小的一步。

第一个问题:我应该怎么做才能使ode15i生成的时间始终增加,而不会回到较小的值。

第二个:ode15i连续产生许多相同的时间值。例如,工作空间中的t:0 0 0 20 20 5 5 5 ...我如何避免这个问题? 或根本不使用它(由ode生成的时间)。

感谢您的任何建议!

0 个答案:

没有答案