假设我有一个简单的逻辑方程
dx / dt = 2ax(1 - x / N) 其中 N 是承载能力, a 是一些增长率,而 a 和 N 是我想要改变的参数。
所以我想做的是绘制我的固定点和两个参数的3D图。
我理解如何找到单个参数的固定点。
这是我的示例代码
function xprime = MyLogisticFunction(t,X) %% The ODE
% Parameters
N = 10 % Carrying Capacity
a = 0.5 % Growth Rate
x1prime = 2*a*X(1)*(1 - X(1)/N );
xprime = [x1prime ]';
end
接下来是我的解算器
% Initial Number
x0 = 0.4;
%Time Window
tspan=[0 100];
[t,x]=ode45(@MyLogisticFunction,tspan,x0);
clf
x(end,1) % This gives me the fixed point for the parameters above.
所以我真正的问题是,如何在两个函数中放置 for循环,这样我就可以改变 a 和 N ,这样我就可以绘制 a 和 N 和我的固定点x *。
我尝试将这两个函数合并到一个.m文件中,但它似乎无法正常工作
答案 0 :(得分:5)
您需要将参数传递给您的函数:
function xprime = MyLogisticFunction(t,X,a,N) %% The ODE
% Parameters (passed as function arguments)
% N = 10 % Carrying Capacity
% a = 0.5 % Growth Rate
x1prime = 2*a*X(1)*(1 - X(1)/N );
xprime = [x1prime ]';
end
然后当你调用ode
求解器时:
% Initial Number
x0 = 0.4;
%Time Window
tspan=[0 100];
a = 0.1:0.1:1; % or whatever
N = 1:10; % or whatever
x_end = zeros(length(a),length(N));
for ii = 1:length(a)
for jj = 1:length(N)
[t,x]=ode45(@(t,X)MyLogisticFunction(t,X,a(ii),N(jj)),tspan,x0);
x_end(ii,jj) = x(end,1);
end
end