Filter löschen
Filter löschen

Why is the ODE solver saying not enough input arguments?

1 Ansicht (letzte 30 Tage)
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

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 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 Kommentar
Mohannad Abboushi
Mohannad Abboushi am 28 Feb. 2016
Bearbeitet: Mohannad Abboushi am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by