我有一个具有离散值的向量,需要传递到我的ODE系统中,我想使用ode45命令。当我使用这个向量时,它需要在求解器内进行插值。有什么办法可以做到吗?
我有一个线性的耦合系统。
dxdt = f(t)*x + g(t)*y
dydt = g(t)*x + h(t)*y我有三个向量f( t ),g(t)和h(t)作为t的函数,我需要把它们传递给求解者。
我可以用C或C++编写解算器的代码。有人建议,在Matlab中这样做会更快。有人能建议一个办法吗?
发布于 2014-10-29 18:56:47
当然,您可以使用interp1。假设向量fvec、gvec和tvec分别包含f、g的值以及这些值的时间点,则可以将导数函数定义为:
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]);https://stackoverflow.com/questions/26638326
复制相似问题