0

問題として、Crank-Nicolson のスキームによる空間拡散を使用して Fitzhugh-Nagumo モデルを実装する必要があります。ここで、問題は空間拡散にあります。

(V_{t}) (DV_{xx} + V(V-a)(1-V) - W + I)
(W_{t}) (epsilon(V - b*W )

一方、DV_{xx} は空間拡散です。

Matlab を使用すると、次の関数を ODE45 ソルバーに与えることができます。ただし、空間拡散はまだ実装されていません...

function dy = FHN( t, Y, D, a, b, eps, I )
    V  = Y(1);
    W  = Y(2);

    dY = zeros(2,1);

    % FHN-model w/o spatial diffusion
    Vxx = 0;
    dY(0) = D .* Vxx + V .* (V-a) .* (1-V) - W + I;
    dY(1) = eps .* (V-b .* W);

質問: V_{xx} を実装する方法は?

また、V はどのような行列の形状である必要がありますか? 通常、V は t のみに依存するため、[1 x t] ベクトルです。現在、V は x と t の両方に依存しているため、[x by y] ベクトルであると予想されますよね?

ありがとうございました

4

1 に答える 1

0

時間がかかりましたが、普通の日常の問題ではありません。

function f = FN( t, Y, dx, xend, D, a, b, eps, I )
% Fitzhug-Nagumo model with spatial diffusion.
%       t  = Tijd
%       X  = [V; W]
%       dx = stepsize
%       xend = Size van x

% Get the column vectors dV and dW from Y
    V = Y( 1:xend/dx );
    W = Y( xend/dx+1:end );

% Function
    Vxx = (V([2:end 1])+V([end 1:end-1])-2*V)/dx^2;
    dVdt = D*Vxx + V .* (V-a) .* (1-V) - W + I ;
    dWdt = epsilon .* (V-b*W);

    f = [dVdt ; dWdt];

V と W は両方とも、サイズが 1:(xend/dx) の列ベクトルです。

呼び出し方法:

V = zeros(xend/dx,1);
W = zeros(xend/dx,1);

% Start Boundaries
% V(x, 0) = 0.8 for 4 < x < 5
% V(x, 0) = 0.1 for 3 < x < 4
V( (4/dx+1):(5/dx-1) ) = 0.8;
V( (3/dx+1):(4/dx-1) ) = 0.1;

Y0 = [V; W];
t = 0:0.1:400;
options = '';
[T, Y] = ode45( @FN, t, Y0, options, dx, xend, D, a, b, eps, I );
于 2013-02-17T14:42:02.157 に答える