如何使用matlab ode求解器作为端点(上限)在TR-BDF2中实现时间步长?

计算科学 matlab
2021-12-09 23:32:12

尽管我知道我无法在一个时间步内推进使用 TR-BDF2 本身的求解器 ode23tb,但我想设置积分周期的上限,之后我会做一些事情来输出并将修改后的输出馈送到 ode 求解器再次。上限用于将积分区间tspan = [t_prev ti[j]](见下文)中的时间步长限制为尽可能低,希望只有一个。为了实现它,我尝试这样做:

    y_prev = rho0;
    t_prev = 0
    ti = [list of timestep in  TR-BDF2]
    j = 1;
    while t_prev < tf          
         #do something to the output
          ...
         # integrate up to adaptive ti in  TR-BDF2 even though inside the interval ode45 has its own timestep
         tspan = [t_prev ti[j]]
         j = j + 1;
         [T, Y] = ode23tb(dydt, tspan, y_prev);
         t_prev = T(end,:)
         y_prev = Y(end,:) 
         ....
    end

ti但是,我怎么能事先知道是什么?我查看https://math.la.asu.edu/~gardner/TRBDF.pdf ,但不知道如何执行此操作。

0个回答
没有发现任何回复~