EDO - NEURO - SEANCE 2 - Modeles Integre-et-Tire et Modeles de Phase
Contents
Modele d'Izhikevich, methode d'Euler
Les equations:
C*dv/dt = k*( v - vr )*( v - vt ) - u + I du/dt = a*( b*( v - vr ) - u )
Si v>=vpeak alors v=c, u=u+d
% parametres du modele C=100; vr=-60; vt=-40; k=0.7; a=0.03; b=-2; c=-50; d=100; vpeak=35; % parametres d'integration T=1000; dt=1; n=round(T/dt); v=vr*ones(1,n); u=0*v; I=[zeros(1,0.1*n),70*ones(1,0.9*n)]; % boucle principale: methode d'Euler for i=1:n-1 % Integre (etape Euler) v(i+1) = v(i) + dt * (k*(v(i)-vr)*(v(i)-vt)-u(i)+I(i))/C; u(i+1) = u(i) + dt * a*(b*(v(i)-vr)-u(i)); % Tire (reinitialisation) if v(i+1) >= vpeak v(i) = vpeak; v(i+1) = c; u(i+1) = u(i+1)+d; end end plot(dt*(1:n),v,'g');

Modele d'Izhikevich, methode 'Event Locator'
La fonction izhikevich implemente le modele integre-et-tire d'Izhikevich.
sol = izhikevich;

Le code de la fonction izhikevich est
function sol = izhikevich % IZHIKEVICH modele neurone integre-et-tire
% parametres des equations
C=100;
vr=-60;
vt=-40;
k=0.7;
a=0.03;
b=-2;
intensite = 70;
vpeak=35; c=-50; d=100;
% options de ode % l'option 'Events' permet de gerer des evenements % les ... permettent de continuer l'expression sur la ligne suivante options = odeset('Events',@it_event, ... 'AbsTol',1e-6, ... 'RelTol',1e-3);
% conditions initiales
CI = [vr; 0];
% parametres de simulation
tfinal = 1000;
t0 = 0;
tout = t0;
xout = CI';
teout = [];
xeout = [];
while t0<tfinal
[t,x,te,xe] = ode45(@it,[t0 tfinal],CI,options);
nt = length(t);
% on accumule les solutions tout = [tout; t(2:nt)]; xout = [xout; x(2:nt,:)]; teout = [teout; te]; xeout = [xeout; xe];
% on met a jour t0 t0 = t(nt);
% on met a jour les CI CI = [c; x(nt,2)+d]; end
% on affiche la solution pour v [x(1)] plot(tout,xout(:,1),'r')
% on met la solution dans une structure de sortie
sol.t = tout;
sol.x = xout;
sol.te = teout;
sol.xe = xeout;
%-------------------------------------------------------- % Fonctions imbriquees %--------------------------------------------------------
function dxdt = it(t,x) % IZ equations EDO
v=x(1); u=x(2); dxdt = [(k*(v-vr).*(v-vt)-u+input_current(t))/C; a*(b*(v-vr)-u)]; end
function I = input_current(t) % INPUT_CURRENT courant applique a la membrane
I = intensite * ( t>=(0.1*tfinal) );
end
function [value,isterminal,direction] = it_event(~,x) % IZ_EVENT detecte les evenements
value = x(1)-vpeak; isterminal = 1; direction = 1;
end
end
Modele de phase
On peut identifier un point sur un cycle limite avec une phase, entre 0 et .
Le modele de phase le plus simple, represente en coordonnees polaires est
dphi/dt = f(phi);
si phi>=2*pi, alors phi = 0
avec f(phi) (strictement) positive.
La phase est discontinue, mais, representee en coordonnees cartesiennes, on obtient une hauteur y = sin(phi) continue. Pour completer, on peut tracer le portrait de phase avec x = cos(phi) et y = sin(phi).
Modele de phase avec relaxation
En plus de la phase, on peut inclure l'amplitude comme variable dynamique. Cette deuxieme variable, r, est positive et est regie par l'equation
dr/dt = g(r,p)
L'equation de phase devient dependante de l'amplitude
dp/dt = f(r,p);
si p>=2*pi, alors p = 0
On obtient alors, en coordonnees cartesiennes, x = r*cos(p) et y = r*sin(p).
Exercice 1
Comparez les solutions du modele d'Izhikevich obtenues avec la methode d'Euler et la methode 'Event Locator'. Quelle methode est la plus precise? Comment s'assurer que la solution obtenue est precise? Comparez les temps d'execution de chaque methode. Variez le pas de temps dt et les les parametres AbsTol et RelTol.
Exercice 2
En utilisant la methode de resolution de votre choix, tracez le portrait de phase du modele d'Izhikevich (tracez u contre v). Localisez les points de discontinuite.
Exercice 3
Codez une methode pour resoudre l'equation de phase suivante:
dp/dt = w*(1.01+sin(phi))
Utilisez le parametre w=1.0, la condition initiale CI = 0.0, pour des temps entre 0 et 200. Pour la methode numerique, inspirez-vous, c.-a-d. copiez et modifiez, une des deux methode pour le modele d'Izhikevich. Tracer la solution en coordonnees cartesiennes. Utilisez la fonction comet pour tracer la trajectoire dans le plan de phase (x,y).
Exercice 4
a) Codez une methode pour resoudre l'equation de phase suivante:
dr/dt = - lambda*(r-A)
dphi/dt = omega
avec les parametres lambda = 0.001, 0.01, 0.1, A = 1, et omega = 2*pi/100. entre t = 0 et t = 1000. Resolvez pour des conditions initiales phi0 = 0, r0 = 0.1, 1.0, 2.0. Tracer les solutions en coordonnees cartesiennes.
b) Modifiez les equations pour inclure un terme de forcage dans la direction des x en coordonnees cartesiennes:
dr/dt = - lambda*(r-A) + F*cos(phi)*cos(2*pi/T*t)
dphi/dt = omega - 1/r*F*sin(phi)*cos(2*pi/T*t)
avec T = 50, 100, 200, et F assez petit.