Izhikevich нейрон є простим , але досить ефективною моделлю біологічного нейрона, призначеним для використання в дискретний час покрокового моделювання. У цьому виклику з гольфу ви будете реалізовувати цю модель.
Параметри
Ця модель включає лише 7 змінних, організованих у 2 диференціальних рівняння, порівняно з десятками параметрів фізіологічно точної моделі.
v
іu
є двома змінними стану нейрона. Тутv
є "швидка" змінна, що представляє потенціал клітини в часі, іu
"повільна" змінна, що представляє певні властивості мембрани.v
Змінна є найбільш важливим, так як це вихід моделювання.a
,b
,c
, Іd
є фіксованими константами , які описують властивості нейрона. Різні типи нейронів мають різні константи, залежно від бажаної поведінки. Зокрема,c
є потенціал скидання, який є мембранним потенціалом, до якого повертається клітина після шипування.I
являє вхідний струм до нейрона. У моделюваннях мережі це зміниться з часом, але для наших цілей ми будемо розглядатисьI
як фіксовану константу.
Модель
Ця модель має дуже простий псевдокод. Спочатку ми беремо постійні значення abcd
і використовуємо їх для ініціалізації v
та u
:
v = c
u = b * c
Далі ми прокручуємо через симуляційний код стільки разів, скільки потрібно. Кожна ітерація становить 1 мілісекунд часу.
for 1..t:
if v >= 30: # reset after a spike
v = c
u = u + d
v += 0.04*v^2 + 5*v + 140 - u + I
u += a * (b*v - u)
print v
Деякі реальні реалізації включають додаткові кроки для чисельної точності, але ми не включаємо сюди.
Вхідні дані
Як вхід, ваша програма / функція повинна приймати значення a
, b
, c
, d
, I
, і t
(число кроків по часу для імітації). Після встановлення жоден із цих параметрів не зміниться під час нашого простого моделювання. Порядок введення не має значення: ви можете вказати порядок, у якому ваша програма приймає ці параметри.
Вихідні дані
Вихідним буде перелік чисел, що представляють мембранний потенціал клітини (заданий змінною v
) протягом моделювання. Список може бути у будь-якому відповідному форматі.
Ви можете вибрати, чи включити 0-е значення моделювання (початкова конфігурація до того, як пройде будь-який час) у свій висновок. Наприклад, для введення 0.02 0.2 -50 2 10 6
(для a b c d I t
), виводу будь-якого
-50
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
або
-40
-16.04
73.876224
-42.667044096
-25.8262335380956
29.0355029192068
є прийнятним.
Ваші значення не повинні бути такими ж, як наведені вище, залежно від того, як ваша мова обробляє плавання.
Довідкова реалізація
Ось реалізація TIO, яку я написав у Perl, щоб продемонструвати модель. Параметри - параметр нейтрону "балакання" нейрону з паперу, зв'язаного вище, і це демонструє, наскільки ця модель здатна відтворити деякі більш складні властивості нейронів, такі як чергування станів високої та низької активності. Якщо ви подивитеся на вихід, ви можете побачити, де нейрон одразу кілька разів вискакує, але потім чекає деякого часу, перш ніж вискочити ще кілька разів (незважаючи на те, що вхідна напруга клітини I
постійно є постійним).
t
колись негативним?