Can*_*Man 1 matlab for-loop ode
让我们说我有一个简单的逻辑方程
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
Run Code Online (Sandbox Code Playgroud)
接下来是我的解算器
% 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.
Run Code Online (Sandbox Code Playgroud)
所以我真正的问题是,如何在两个函数之间放置一个for循环,这允许我改变a和N,这样我就可以绘制出a和N以及我的固定点x*的3D图形.
我尝试将两个函数合并到一个.m文件中,但它似乎不起作用
您需要将参数传递给您的函数:
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
Run Code Online (Sandbox Code Playgroud)
然后当你调用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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1879 次 |
最近记录: |