【问题标题】:Implementing Numerical Solution to Fitzhugh-Nagumo Model With Spatial Diffusion Factor用空间扩散因子对 Fitzhugh-Nagumo 模型进行数值求解
【发布时间】:2019-12-16 20:43:00
【问题描述】:

我正在尝试为 Fitzhugh-Nagumo 模型提出一个 python 实现。

V_t = V_xx + V(V - a)(1 - V) - W + I
W_t = eps(beta*V - W)

使用eps = 0.05, a = 0.2, beta = 5, I = .1 的基本代码我可以对系统进行数值求解(没有V_xx),但我似乎无法弄清楚如何实现空间扩散。

def func_v(v, w):
    return v * (1 - v) * (v - .2) - w + .1


def func_w(v, w):
    return .05 * (5 * v - w)


def get_yn(t0, v, w, h, t):
    while t0 < t:
        w += h * func_w(v, w)
        v += h * func_v(v, w)
        t0 += h
    return v, w

我知道二阶导数的中心差分公式是

V_xx(x_i, t) = (V(x_i+1, t) - 2*V(x_i, t) + V(x_i-1, t)) / dx^2

但是我将如何实现x_i 的不同值(假设从x=010)以使波沿x 轴传播?

结果应该给出一个像这样传播的波。

【问题讨论】:

  • 您有任何测试数据或测试样本我们可以使用吗?
  • @wundermahn 测试数据是什么意思?就像我用来解决它的时间间隔和初始条件一样,没有 V_xx?
  • 您如何看待之前关于该主题的问题,例如stackoverflow.com/q/14915398/3088138stackoverflow.com/q/38116507/3088138
  • @Dr.LutzLehmann 我在 MATLAB 中看到了这个问题,当我将代码翻译成 python 时,它对我不起作用。

标签: python differential-equations pde


【解决方案1】:

ODE 求解器(实际上是任何计算机程序)只能处理具有有限维状态的问题。此 PDE 中的状态是 x 的一对函数 v,w。在必要的一般情况下,这些不能在计算机中表示。因此,您需要使用有限近似值。在许多情况下被认为足够的第一个是简单函数表。然后使用有限差分公式计算x 导数。

x = np.linspace(0,L,N+1);
dx = x[1]-x[0];
v0,w0 = initial_functions(x);

def func_v(v, w):
    d2v = -2*v;
    d2v[0] += v[-1]+v[1];
    d2v[1:-1] += v[:-2] + v[2:]
    d2v[-1] += v[-2]+v[0];
    return d2v/dx**2 + v * (1 - v) * (v - .2) - w + .1

等等

对于概念验证,欧拉方法可能就足够了,但获得的值将是有问题的。使用更高阶的方法来获得可用的结果,而无需使用非常小的时间步。

【讨论】:

  • 要将新的func_v 与初始的v0w0 一起使用,我会像v0 += func_v(v0, w0) ; w0 += func_w(v0, w0) 那样进行迭代吗?因为当我使用它时,新图只是沿 v 轴平移而不是遍历 x 轴。
  • 你可以调用你不变的欧拉方法vn, wn = get_yn(t0, v0, w0, h, t)。然后使用plot(x,vn,x,wn)。你得到什么取决于初始条件(例如,围绕半径为 4 的圆的循环,x=linspace(0,2*pi,N+1)[:-1]; v0=4*np.cos(x); w0=4*sin(x) 或类似的,最关键的是,步长 h。你将需要一些稳定时间,使解决方案收敛到VanderPol 方程的极限环。
  • 我不知道为什么它仍然不起作用。可能是因为我的get_yn 原本应该采用浮点数而不是数组吗?现在发生的事情是我得到了与我想要的相似的东西,但它是向左移动而不是向右移动。
  • “不工作”是什么意思?如果我没看错,那么代码会运行但会产生意想不到的结果?请注意,行波解的 ODE 的阶数为 2+1,因此其一阶系统的维数为 3。gif 动画在该 3D 空间中显示同宿轨道,这是一种非常特殊的情况,我不确定如果它在扰动下是稳定的。确定静止点的位置很容易,但之后的一切都是数学问题,这里跑题了。
  • plots 是“扩散”的,但不是沿 x 轴移动,它们的行为更像是从头部方程而不是行波中得到的。
猜你喜欢
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
相关资源
最近更新 更多