MATLAB: System of ODEs with interdependent variables

nested differential equationsode45

I have to write a function that solves a differential equation which relies on three parameters. Each parameter is also described by a differential equation that calls the result of the first equation. I am unsure how to nest these as they all require each other as an input. I have initial values for each of them, but don't know where to go from there. I had listed all of the equations and called the ode45 function for each individually, which obviously didn't work as they rely on each other's outputs.
I've attached the equations below. The "main" ODE solves for V in terms of m, n, and h. Additionally, m, n, and h all vary with V based on unique exponential functions which I have already defined. All other variables are constants, I apologize for the clutter. How can I combine these?
dVdt = gna.*m^3.*h.*(Vna-V)+gk.*n^4.*(Vk-V)+gl.*(Vl-V)+I; %solve for V based on m, n, h
dndt = HH_an(V).*(1-n)-HH_bn(V).*n; %solve for n based on V
dhdt = HH_hm(V).*(1-h)-HH_bh(V).*h; %solve for h based on V
dmdt = HH_am(V).*(1-m)-HH_bm(V).*m; %solve for m based on V

Best Answer

I would advise writing a derivative function for this. E.g.,
dydt = myderivative(t,y,gna,gk,gl,Vna,Vk,Vl,I)
V = y(1);
n = y(2);
h = y(3);
m = y(4);
dVdt = gna.*m^3.*h.*(Vna-V)+gk.*n^4.*(Vk-V)+gl.*(Vl-V)+I; %solve for V based on m, n, h
dndt = HH_an(V).*(1-n)-HH_bn(V).*n; %solve for n based on V
dhdt = HH_hm(V).*(1-h)-HH_bh(V).*h; %solve for h based on V
dmdt = HH_am(V).*(1-m)-HH_bm(V).*m; %solve for m based on V
dydt = [dVdt;dndt;dhdt;dmdt];
end
Then use your own solver or ode45( ).
Related Question