【问题标题】:Basic Matlab: differential equations with return error基本 Matlab:具有返回误差的微分方程
【发布时间】:2014-05-03 10:14:14
【问题描述】:

我被分配了以下任务并且卡住了。显然我正在返回一个长度为 4 的向量,而不是它应该是 2 的向量。

我试图绘制的微分方程是: dv/dt=v*(1-v)(v-alpha)-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。但我收到以下错误: 使用 oearguments 时出错(第 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) 只包含两个值,这还不够吗? 提前致谢!

【问题讨论】:

    标签: matlab plot differential-equations


    【解决方案1】:

    您应该阅读如何使用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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2014-11-28
      • 2016-09-20
      相关资源
      最近更新 更多