基本Matlab:具有返回误差的微分方程

时间:2014-05-03 10:14:15

标签: matlab plot differential-equations

我接到了以下任务并被卡住了。显然我正在返回一个长度为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)只包含两个值,这是不够的? 提前谢谢!

1 个答案:

答案 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')