首页 文章

MATLAB ODE45:仅保存最后的解决方案

提问于
浏览
0

我想只让ODE45保留最后的解决方案 . 而是从tspan = [t0 tf]返回所有解决方案;我只希望返回的矢量是tf的解决方案 .

我之所以这样做是为了避免以下错误:

使用horzcat时出错请求442368x1828(6.0GB)数组超出了最大数组大小首选项 . 创建大于此限制的数组可能需要很长时间并导致MATLAB无响应 . 有关更多信息,请参阅数组大小限制或首选项面板ode45中的错误(第428行)yout = [yout,zeros(neq,chunk,dataType)];

1 回答

  • 2

    从文档:

    tspan - 积分向量的间隔积分的间隔,指定为向量 . 至少,tspan必须是指定初始和最终时间的双元素向量[t0 tf] . 要在t0和tf之间的特定时间获得解,请使用[t0,t1,t2,...,tf]形式的较长向量 . tspan中的元素必须全部增加或全部减少 . 求解器在tspan(1)处施加初始条件y0,然后从tspan(1)到tspan(end)进行积分:如果tspan有两个元素[t0 tf],则求解器返回在每个内部积分处求解的解区间内的步骤 . 如果tspan包含两个以上的元素[t0,t1,t2,...,tf],则求解器返回在给定点处求值的解 . 这不会影响求解程序用于从tspan(1)遍历到tspan(end)的内部步骤 . 因此,求解器不一定精确地步进到tspan中指定的每个点 . 但是,在指定点生成的解决方案与在每个内部步骤计算的解决方案具有相同的准确度 . 指定几个中间点对计算效率几乎没有影响,但对于大型系统,它可能会影响内存管理 . 解算器获得的解决方案可能会有所不同,具体取决于您是将tspan指定为双元素向量还是指定具有中间点的向量 . 如果tspan包含多个中间点,则它们会指示问题的比例,这可能会影响求解器所采用的初始步长 .

    所以只需指定三点 . [t0 (t0+tf)/2 tf]

相关问题