我接到了以下任务并被卡住了。显然我正在返回一个长度为4的向量,而不是应该是2的向量。
我想绘制的微分方程是: 的dv / dt = V *(1-v)中的(V-α)-w + C 和dw / dt = varepsilon (v-gamma * w)
function dydt = fun (v, alpha, w, C, gamma, varepsilon)
dydt = [v*(1-v)*(v-alpha)-w+C;varepsilon*(v-gamma*w)]
end
这是Fitzhugh-Nagumo模型(http://en.wikipedia.org/wiki/FitzHugh-Nagumo_model)
现在我想通过以下脚本中的ode45(这是先决条件)来解决这个等式:
tspan = [0, 6]; y0 = [1; 1];
alpha = 0.7;
gamma = 0.8;
varepsilon = 12.5;
C = 0.5;
ode = @(v,w) fun (v, alpha, w, C, gamma, varepsilon);
[v,w] = ode45(ode, tspan, y0);
plot(t,v(:,1),'r')
xlabel ('t')
ylabel('solution v & w')
title ('opdracht 1, name')
hold on
plot(t,w(:,1),'b')
shg
目标是在t(时间,由tspan定义)的函数中绘制v和w。但是我收到以下错误: 使用odearguments时出错(第92行) @(V,W)OPDRACHT1FUNCTIEV(V,ALPHA,W,C,GAMMA,VAREPSILON)返回长度为4的向量,但初始条件向量的长度为 2. @(V,W)OPDRACHT1FUNCTIEV(V,ALPHA,W,C,GAMMA,VAREPSILON)返回的向量和初始条件向量必须相同 元素数量。
有谁能告诉我这4种解决方案来自哪里,而应该只有2?句柄@(v,w)只包含两个值,这是不够的? 提前谢谢!
答案 0 :(得分:0)
您应该阅读如何使用ode45
。请尝试以下方法:
tspan = [0, 6];
v0 = [1; 1];
w0 = [1; 1];
alpha = 0.7;
gamma = 0.8;
varepsilon = 12.5;
C = 0.5;
fun = @(v, alpha, w, C, gamma, varepsilon) ...
[v.*(1-v).*(v-alpha)-w+C;varepsilon*(v-gamma*w)]
ode = @(t, y) fun (y(1:2), alpha, y(3:4), C, gamma, varepsilon);
[tt,yy] = ode45(ode, tspan, [v0;w0]);
plot(tt, yy(:,1:2),'r')
xlabel ('t')
ylabel('solution v & w')
title ('opdracht 1, name')
hold all
plot(tt, yy(:,3:4),'b')