MATLAB: How to solve the below error

reressilator

Undefined function or variable 'm1'.
Error in repressilator (line 7) y = [m1 p1 m2 p2 m3 p3];
in matlab program function ydot=repressilator(t,y,p) alpha0 = 1; n = 2.0; beta = 5; alpha = 1000; % order of species; y = [m1 p1 m2 p2 m3 p3]; m1 = -y(1) + alpha/(1+y(6)^n) + alpha0; p1 = -beta*(y(2) – y(1)); m2 = -y(3) + alpha/(1+y(2)^n) + alpha0; p2 = -beta*(y(4) – y(3)); m3 = -y(5) + alpha/(1+y(4)^n) + alpha0; p3 = -beta*(y(6) – y(5)); ydot = [m1; p1; m2; p2; m3; p3]; timespan=[0 15]; y0 = [0 1 0 1 0 1]; [t,y] = ode45(@repressilator,timespan,y0); figure() plot(t,y) xlabel('Time') ylabel('Amount') legend('m1','p1','m2','p2','m3','p3','Location','SouthEast') figure() plot(y(:,1), y(:,2)) xlabel('Amount m1') ylabel('Amount p1')

Best Answer

function main
timespan=[0 15];
y0 = [0 1 0 1 0 1];
[t,y] = ode45(@repressilator,timespan,y0);
figure()
plot(t,y)
xlabel('Time')
ylabel('Amount')
legend('m1','p1','m2','p2','m3','p3','Location','SouthEast')
figure()
plot(y(:,1), y(:,2))
xlabel('Amount m1')
ylabel('Amount p1')
end
function ydot=repressilator(t,y)
alpha0 = 1;
n = 2.0;
beta = 5;
alpha = 1000;
% order of species;
m1 = -y(1) + alpha/(1+y(6)^n) + alpha0;
p1 = -beta*(y(2) - y(1));
m2 = -y(3) + alpha/(1+y(2)^n) + alpha0;
p2 = -beta*(y(4) - y(3));
m3 = -y(5) + alpha/(1+y(4)^n) + alpha0;
p3 = -beta*(y(6) - y(5));
ydot = [m1; p1; m2; p2; m3; p3];
end