Matlab 通过Crank-Nicolson实现Fitzhugh-Nagumo模型
对于一个问题,我需要通过Crank-Nicolson方案实现具有空间扩散的Fitzhugh-Nagumo模型。现在问题在于空间扩散Matlab 通过Crank-Nicolson实现Fitzhugh-Nagumo模型,matlab,model,ode,Matlab,Model,Ode,对于一个问题,我需要通过Crank-Nicolson方案实现具有空间扩散的Fitzhugh-Nagumo模型。现在问题在于空间扩散 (V_{t}) (DV_{xx} + V(V-a)(1-V) - W + I) (W_{t}) (epsilon(V - b*W ) 而DV_{xx}是空间扩散 (V_{t}) (DV_{xx} + V(V-a)(1-V) - W + I) (W_{t}) (epsilon(V - b*W ) 使用Matlab,可以为ODE45解算器提供以下功能。然而,它还没有
(V_{t}) (DV_{xx} + V(V-a)(1-V) - W + I)
(W_{t}) (epsilon(V - b*W )
而DV_{xx}是空间扩散
(V_{t}) (DV_{xx} + V(V-a)(1-V) - W + I)
(W_{t}) (epsilon(V - b*W )
使用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×t]向量。现在V依赖于x和t,所以我希望它是一个[x×y]向量,对吗
谢谢这花了很长时间,但嘿,这不是一个正常的日常问题
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 );
V=0(xend/dx,1);
W=零(xend/dx,1);
%起始边界
%V(x,0)=0.8,对于4