matlab ode45内部步骤

时间:2016-05-31 17:21:04

标签: matlab solver ode45

我对如何使用ode45有疑问,因为我知道它使用内部变量步长。例如,在我的特定情况下,我有一个ODE模型,我使用5分钟的采样时间。因此,在我的主模拟循环中,我有以下行来通过使用ode45解决它来获得模型的输出:

[T,X] = ode45(@(t,x) model(t,x,u,data),[t t+scenario.Ts],x0);

u是模型的输入,data是带参数的结构,x0是当前时间步的初始条件,[t t+scenario.Ts]是初始条件最后一次。我怀疑在tt+scenario.Ts之间ode45 - 解算器使用可变时间步长,因此我引入输入操作u的方式可能会受到影响。因此,我了解特定输入u的值通过[t t+scenario.Ts]之间的内部时间步长保持不变。然后,如果我有一个助焊剂,即水进入水箱,时间步骤对此u有直接影响。

让我用一个例子来解释一下。如果超过[t t+scenario.Ts]我知道u(1) = 10。那么我应该使用的实际输入是u(1)=10/(# of time steps between [t0 tend])。但是,由于内部步骤是可变的,我必须使用哪个输入?

我希望你能理解我的问题并帮助我。

1 个答案:

答案 0 :(得分:0)

您应该制定输入,使其独立于时间离散化。如果你的方程是在连续时间内制定的,这应该不是问题。如果控制变量不是常量,那么你应该明确地依赖t并写一个函数u(t)

如果我的答案不足以帮助您,请添加有关您的应用程序的更多详细信息,尤其是您正在模拟的动态模型。然后我们可以帮助你。