在ODE函数中使用interp1 [MATLAB]

时间:2015-06-16 13:22:38

标签: matlab parameters parameter-passing ode interpolation

我这里有一个要解决的ODE,它有一个测试参数 a 。 我希望 a 是温度 T 的函数(在此代码中它被解析为 X(2) 因为它随时间变化)。

我想基于 a T 的实验值。

因此,我正在考虑按照 interp1 的方式进行。

这是我的测试虚拟ODE。

function xprime = RabbitTemp(t,X) 

% Model of Rabbit Population
% where,
%       Xo = Initial Population of Rabbits
%       X(1) = Population density of Rabbit
%       X(2) = Temperature T (that varies with time) 
%       a = test parameter

% Interpolate here
Texptdata = [1 2 3 4];
aexptdata =[10 14 19 30];
a= interp1(Texptdata,aexptdata,X(2),'spline');

% ODE

dx = [0 0];

dx(1) = (X(1))*(1 - X(1)*a - 3*(X(2))));
dx(2) = sin(t);


xprime = [dx(1) dx(2)]';

end

我已经尝试使用我的解算器运行代码,它编译得很好。 但是我想知道ODE求解器是否正在调用与 X(2)的正确对应值相对应的正确插值 a 即可。我似乎无法弄清楚如何验证这一点。

任何人都可以帮我验证这一点或指出我如何去做吗?非常感谢!

0 个答案:

没有答案