在ODE函数中使用interp1[MATLAB]

在ODE函数中使用interp1[MATLAB],matlab,parameters,parameter-passing,ode,interpolation,Matlab,Parameters,Parameter Passing,Ode,Interpolation,我这里有一个要求解的ODE,它有一个测试参数a。 我希望a是温度T的函数(在这个代码中,它被解为X(2),因为它随时间变化) 我想以a和T的实验值为基础 因此,我想按照interp1的思路来做 这是我的测试假人 function xprime = RabbitTemp(t,X) % Model of Rabbit Population % where, % Xo = Initial Population of Rabbits % X(1) = Population d

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

我想以a和T的实验值为基础

因此,我想按照interp1的思路来做

这是我的测试假人

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解算器是否调用了正确的插值a,对应于X(2)的正确对应值。我似乎不知道如何验证这一点


谁能帮我核实一下,或者告诉我怎么做?非常感谢

是的,我觉得这是对的。函数中唯一的
变量是插值变量,因此它是唯一可以调用的变量。出于兴趣,您为什么要使用
样条曲线
插值?@am304谢谢!我任意选择了
spline
。我读到也有
pchip
。我肯定有一些不同之处,但我还没来得及去读它到底是什么。如果你有什么见解,可以和我分享一下吗?所有的插值方法都列在列表中。考虑到你的数据,我想知道一个简单的线性插值是否足够。我知道你从现在开始。这是一个虚拟ODE,其中包含我为学习目的创建的虚拟数据。再次感谢。