Figuring out the stimulus of FitzHugh Nagumo equations with ode45
1 view (last 30 days)
Show older comments
I am trying to write a program to solve the FitzHugh-Nagumo equations for a single cell with these equations below
du/dt =c1u(u −a)(1−u)−c2uv + stim
dv/dt = b (u − v)
where
a=0.13
b=0.013
c1=0.26
c2=0.1
stim is a stimulus current that can be applied for a short time at the beginning of the simulation.
u represents membrane potential and ranges from 0 (rest) to 1 (excited)
v is a recovery variable in the same range.
t is time in milliseconds.
I'm supposed to use MATLAB's ode45() function to integrate the system of differential equations. My program's input should include the duration of the simulation; initial values for u, v, and t; the strength of the stimulus, and the time for which it is applied (typically a few ms) and its output should include vectors for t, u and v.
function [t,u,v] = fhn0D(tf,u0,v0,t0,stim,tstim)
% Solve the FitzHugh-Nagumo equations for a single cell (i.e., without
% spatial coupling)
% du/dt = (c1*u)*(u - a)*(1 - u) ? (c2*u*v) + stim
% dv/dt = b(u - v)
% stim is a stimulus current that can be applied for a short time at
% the beginning of the simulation
% u represents membrane potential and ranges from 0 (rest) to 1 (excited)
% v is a recovery variable in the same range
% t is time in milliseconds
% INPUT: tf duration of simulation
% u0 initial value of u
% v0 initial value of v
% t0 initial value of t
% stim strength of stimulus
% tstim time of applied stimulus
%
% OUTPUT: t time vector (ms)
% u membrane potential vector
% v recovery vector
[t,U] = ode45(@(t,U)fhn(t,U,stim),[t0 tf],[u0; v0]);
% First and second column of U correspond to u and v respectively
u = U(:,1);
v = U(:,2);
% Plot u and v vs. t
plot(t,u,t,v)
title('Solution of FitzHugh-Nagumo Equations for a Single Cell with ODE45');
xlabel('Time t');
ylabel('Solution U');
legend('u','v');
end
function dUdt = fhn(t,U,stim)
% FitzHugh-Nagumo equations defined to be plugged into ode45
%
% INPUT: t time
% U vector that holds u and v
%
% OUTPUT: dUdt vector containing solutions to derivatives of u and v
% U(1) is u and U(2) is v
% Other needed variables
a = 0.13;
b = 0.013;
c1 = 0.26;
c2 = 0.1;
% Preallocate the output vector
dUdt = zeros(2,1);
% Create a two element vector that holds the derivative equations of u and
% v
dUdt = [(c1*U(1))*(U(1)-a)*(1-U(1))-(c2*U(1)*U(2))+ stim; b*(U(1)-U(2))];
end
I've posted the code I've created so far above, but I am confused on how to incorporate the time of stimulus in order to generate an action potential.
3 Comments
darova
on 24 Feb 2020
Maybe you forgot to assign values to variables in your function fhn0D?
I don't see any value. Where are they?
Answers (1)
Pravin Jagtap
on 27 Feb 2020
Hello Kate,
Refer to the following documentation link to understand how to solve system of differential equations. Also refer to the examples given in the link which will give you better insights.
Hope this will help you.
0 Comments
See Also
Categories
Find more on Partial Differential Equation Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!