【发布时间】:2015-06-16 21:11:59
【问题描述】:
假设我有一个像这样的 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
%%% ODE
a = 10;
dx(1) = (X(1))*(1 - a*X(1) - 3*(X(2))));
dx(2) = sin(t);
%%%%%%%
xprime = [dx(1) dx(2)]';
end
但是,如果我希望参数 a 随着温度 X(2) 的变化而变化,正如 ODE 求解器所计算的那样。
我知道我首先必须在 a 和 X(2) 之间创建一些数据并对其进行插值。但在那之后,我不太确定接下来会发生什么。有人能指出我正确的方向吗?
或者还有其他方法吗?
【问题讨论】:
-
我可以再加两美分吗? 1.你应该预先分配
dx作为xprime中的第一件事,然后你可以简单地返回dx而不是复制到xprime。不需要两个相同的不同变量。 2. 如果您的代码变得更大,请考虑定义索引变量,例如ind.pop_density = 1和ind.temp=2。从长远来看,它将对您有所帮助。
标签: matlab parameter-passing ode