Azzera filtri
Azzera filtri

Why is the ODE solver saying not enough input arguments?

1 visualizzazione (ultimi 30 giorni)
In this program I am modeling the cell cycle with three differential equations. I am trying to output all three variables C, M and X to a graph, but I am missing something. Here's the code:
function Cellcycle= Cellcycle (~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~)
K1 = 0.005;
K2 = 0.005;
K3 = 0.005;
K4 = 0.005;
Kc = 0.5;
Kd = 0.02;
kd = 0.01;
V2 = 1.5;
V4 = 0.5;
vd = 0.25;
VM1 = 3;
VM3 = 1;
C = 0.01;
M = 0.01;
X = 0.01;
dC= 0.025-vd*X*(C/(Kd+C)) - kd*C;
dM = VM1*(C/(Kc+C))*((1-M)/(K1+(1-M))) - V2*(M/(K2+M));
dX = M*VM3*((1-X)/(K3+(1-X))) - V4*(X/(K4+X));
Cellcycle= [dC dM dX];
[~,~,~,~,~,~,~,~,~,~,~,~,~,~,~,~] = ode45('Cellcycle',ode45,[0 10],[.01 .01 .01]);
plot(dC,dM,dX);
end

Risposta accettata

Walter Roberson
Walter Roberson il 28 Feb 2016
Note that you are ignoring the ode inputs, so your calls are always going to return the same thing, with a rather boring output as a result. I have taken the liberty of guessing what you are trying to do and changing the code appropriately
function Cellcycle_driver
[t,y] = ode45(@Cellcycle, [0 10], [.01 .01 .01]);
dC = y(:,1);
dM = y(:,2);
dX = y(:,3);
plot(t, dC, 'g', t, dM, 'b', t, dX, 'r');
legend({'dC', 'dM', 'dX'});
function dy = Cellcycle(t, y)
K1 = 0.005;
K2 = 0.005;
K3 = 0.005;
K4 = 0.005;
Kc = 0.5;
Kd = 0.02;
kd = 0.01;
V2 = 1.5;
V4 = 0.5;
vd = 0.25;
VM1 = 3;
VM3 = 1;
% C = 0.01;
% M = 0.01;
% X = 0.01;
C = y(1):
M = y(2);
X = y(3);
dC= 0.025-vd*X*(C/(Kd+C)) - kd*C;
dM = VM1*(C/(Kc+C))*((1-M)/(K1+(1-M))) - V2*(M/(K2+M));
dX = M*VM3*((1-X)/(K3+(1-X))) - V4*(X/(K4+X));
dy = [dC; dM; dX];
  1 Commento
Mohannad Abboushi
Mohannad Abboushi il 28 Feb 2016
Modificato: Mohannad Abboushi il 28 Feb 2016
I made into one function because it was giving some weird error message with cellcycle_driver. It's saying, "Not enough input arguments. Error in Cellcycle (line 17) C= y(1);"
function dy = Cellcycle(t, y)
K1 = 0.005;
K2 = 0.005;
K3 = 0.005;
K4 = 0.005;
Kc = 0.5;
Kd = 0.02;
kd = 0.01;
V2 = 1.5;
V4 = 0.5;
vd = 0.25;
VM1 = 3;
VM3 = 1;
% C = 0.01;
% M = 0.01;
% X = 0.01;
C = y(1);
M = y(2);
X = y(3);
%Differential equations%
dC= 0.025-vd*X*(C/(Kd+C)) - kd*C;
dM = VM1*(C/(Kc+C))*((1-M)/(K1+(1-M))) - V2*(M/(K2+M));
dX = M*VM3*((1-X)/(K3+(1-X))) - V4*(X/(K4+X));
dy = [dC; dM; dX];
%ODE Solver%
[t,y] = ode45(@Cellcycle, [0 10], [.01 .01 .01]);
dC = y(:,1);
dM = y(:,2);
dX = y(:,3);
plot(t, dC, 'g', t, dM, 'b', t, dX, 'r');
legend({'dC', 'dM', 'dX'});
end

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by