Runge-Kutta法求解单个Izhikevich神经元动力学
参考文章
- https://zhuanlan.zhihu.com/p/242302501
- https://blog.youkuaiyun.com/qq_34970603/article/details/106364657
1. Izhikevich模型
2. Runge-Kutta方法求解微分方程
2.1 问题定义
2.2 一阶Runge-Kutta方法
2.3 二阶Runge-Kutta方法
2.4 三阶Runge-Kutta方法
2.5 四阶Runge-Kutta方法
3. Runge-Kutta方法求解Izhikevich Model
3.1 写出Izhikevich微分方程组:
import numpy as np
import matplotlib.pyplot as plt
import time
a = 0.02
b = 0.5
c = -65
d = 6
def function(value,I):
'''
求解函数
:param value: 函数变量
:param I: 电流输入
:return: 求解的结果
'''
d1 = 0.04*value[0]**2 + 5*value[0] + 140 - value[1] + I
d2 = a*(b*value[0] - value[1])
return np.array(d1),np.array(d2)
3.2 实现各阶Runge-Kutta方法
def runge_ketta(f,h,y_in,I,method='RK1'):
'''
龙格库塔法求解Izhikevich模型,所有的数据为np.array类型,方便计算
:param f:函数
:param h:步长
:param y_in:初始值
:param I:电流输入
:param method:RK法阶数
:return:函数的结果
'''
h = np.array(h)
if method == 'RK4':
alfa = np.array([1,2,2,1])*(1/6)
theta = np.array