【发布时间】:2014-03-26 05:32:08
【问题描述】:
我正在尝试创建一个 SIR 模型(求解具有两个参数的 3 个微分方程)并在 MATLAB 上绘制解决方案,但我不断收到错误“输入参数不足”。我真的看不出我哪里错了。代码如下:
function dx = sir(t,x)
dx=[0; 0; 0];
beta = .003;
delta = 1;
dx(1)= -beta *x(1)*x(2);
dx(2)=beta*x(1)*x(2)-delta*x(2);
dx(3)=delta*x(2);
%options = odeset('RelTol', 1e-4, 'NonNegative', [1 2 3]);
[t,x] = ode45('sir', [0 10], [1000 1 0], options);
plot(t,x);
%legend('S', 'I', 'R');
end
【问题讨论】:
-
首先,您为什么不直接复制问题中的代码?其次,能不能说明一下你是怎么调用函数
sir(t,x);的? -
问题中的代码:
-
函数 dx = sir(t,x) dx=[0; 0; 0];贝塔 = .003;增量 = 1; dx(1)= -beta x(1)*x(2); dx(2)=betax(1)*x(2)-deltax(2); dx(3)=deltax(2); %options = odeset('RelTol', 1e-4, 'NonNegative', [1 2 3]); [t,x] = ode45('sir', [0 10], [1000 1 0], 选项);情节(t,x); %legend('S', 'I', 'R');
-
有人告诉我,我必须在函数外部调用才能绘制我的解决方案 - 我该怎么做?谢谢
-
还要注意 ode45('sir', [0 10], [1000 1 0], options);由于使用的名字是先生,你会无限次回忆你的功能,你需要重命名它。
标签: matlab ode differential-equations