标签: 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中这样做会更快。有人可以建议一种方法吗?
答案 0 :(得分:2)
当然,您可以使用interp1。假设您有向量fvec,gvec和tvec分别包含f,g的值以及获取这些值的时间点,您可以将衍生函数定义为:< / p>
interp1
fvec
gvec
tvec
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中使用它:
ode45
[T,Y] = ode45(dxydt, tspan, [x0; y0]);