插入ode45内

时间:2014-10-29 18:47:51

标签: matlab ode

我有一个带有离散值的向量,我需要传递到我的ODE系统,我想使用ode45命令。当我使用它时,该向量需要在求解器中进行插值。有没有办法可以做到这一点?

我有一个线性ODE耦合系统。

dxdt = f(t)*x + g(t)*y
dydt = g(t)*x + h(t)*y

我有三个向量f(t),g(t)和h(t)作为t的函数。我需要将它们传递给求解器。

我可以用C或C ++编写Runge-Kutta求解器。我被建议在Matlab中这样做会更快。有人可以建议一种方法吗?

1 个答案:

答案 0 :(得分:2)

当然,您可以使用interp1。假设您有向量fvecgvectvec分别包含f,g的值以及获取这些值的时间点,您可以将衍生函数定义为:< / p>

dxydt = @(t,x) [interp1(tvec, fvec, t) * x(1) + interp1(tvec, gvec, t) * x(2)
                interp1(tvec, gvec, t) * x(1) + interp1(tvec, hvec, t) * x(2)];

并在ode45中使用它:

[T,Y] = ode45(dxydt, tspan, [x0; y0]);