FitzHugh-Nagumo 방정식을 오일러법으로 수치 계산

FitzHugh-Nagumo 방정식이란?



wiki보다

피츠퓨-남운모델(FitzHugh-Nagumo model)은 신경세포 등 전기적 흥분성 세포의 활동 전위를 표현한 모델로 리처드 피츠퓨와 남운인이치의 이름을 따랐다. 이 모델은 신경 세포의 활동 전위 발화 (스파이크)에서 활성화와 불 활성화를 모델링 한 호지킨 - 헉슬리 모델의 미분 방정식을 단순화합니다. 피츠퓨-남운 모델은 다음과 같이 2개의 미분 방정식으로 표현된다.
htps : // 그럼.ぃきぺぢ아. 오 rg/우키/%에 3% 83% 95% 에 3% 82% 에 3% 에 3% 83% 83% 에 3% 83% 84% 3% 83% BC-% 5% 8D% 97% 9% 9B% B2% 3% 83% 2% 3% 83% 87% 3% 83% AB
\frac{dX}{dt}=c(X-X^3-Y)
\\
\frac{dY}{dt}=X-bY+a

오일러법으로 근사
X(t+Δt)= X(t)+\frac{dX}{dt}Δt
\\
Y(t+Δt)=Y(t)+\frac{dY}{dt}Δt

결과는 다음 이미지와 유사합니다. 초기값(X,Y)=(0,0)을 시작하여 타원형의 어트랙터에 끌려가는 것을 확인할 수 있네요.
(단, a=0.01, b=0.5, c=1.0)


코드 전문 (jupyter 권장)


import numpy as np
import matplotlib.pyplot as plt
import seaborn as sbn
from numpy.random import *
N = 10000
dt = 0.01

def calc(a,b,c, X, Y):
    x.clear()
    y.clear()
    for i in range(N):
        X += (c*(X-X**3-Y))*dt
        Y += (X-b*Y + a)*dt
        x.append(X)
        y.append(Y)
    return x, y

#ここのパラメータをいじって遊ぶ
calc(0.1, 0.3, 0.5, 10*(rand()-0.5), 10*(rand()-0.5))
plt.plot(x,y)
plt.show()
plt.plot(x)
plt.plot(y)

초기값을 변화시켜 수렴성을 확인





좋은 웹페이지 즐겨찾기