在ODE函数中使用interp1[MATLAB]
我这里有一个要求解的ODE,它有一个测试参数a。 我希望a是温度T的函数(在这个代码中,它被解为X(2),因为它随时间变化) 我想以a和T的实验值为基础 因此,我想按照interp1的思路来做 这是我的测试假人在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
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,其中包含我为学习目的创建的虚拟数据。再次感谢。