MATLAB: Solving system of differential equations (28 equations, 75 constants, and 28 initial conditions)

differential equationsdsolve

I'm trying to solve the system of differential equation comprising 28 equations, 75 constants and 28 initial conditions. I'm not a regular user of MATLAB, but tried my best to grasp the things from Help and MATLAB Answers and written the code but still I'm not successful in getting the output. It shows warning followed by three errors as given below
Warning: The number of equations exceeds the number of indeterminates. Trying heuristics to reduce
to square system.
> In symengine
In mupadengine/evalin (line 102)
In mupadengine/feval (line 158)
In dsolve>mupadDsolve (line 336)
In dsolve (line 193)
Error using mupadengine/feval (line 163)
Cannot reduce to the square system because the number of equations differs from the number of
indeterminates.
Error in dsolve>mupadDsolve (line 336)
T = feval(symengine,'symobj::dsolve',sys,x,options);
Error in dsolve (line 193)
sol = mupadDsolve(args, options);
I don't know what to do now in the code. I would be happy if i get some expert advice from anyone in this. Code is given below. Many thanks!
trans=0;
tend=2000;
Data=zeros;
t= 0:2000;
Y0(1)=3e-02;
Y1(1)=1*10^-3;
Y2(1)=4*10^-5;
Y3(1)=5;
Y4(1)=13.5;
Y5(1)=2;
Y6(1)=1*10^-3;
Y7(1)=1*10^-3;
Y8(1)=4*10^-4;
Y9(1)= 1*10^-4;
Y10(1)= 10;
Y11(1)= 1*10^-3;
Y12(1)= 2.9;
Y13(1)= 1*10^-4;
Y14(1)= 0;
Y15(1)= 0;
Y16(1)= 0;
Y17(1)= 0;
Y18(1)= 1*10^-3;
Y19(1)= 1.95;
Y20(1)= 1*10^-3;
Y21(1)= 0;
Y22(1)= 1*10^-2;
Y23(1)= 5*10^-2;
Y24(1)= 2.65*10^-2;
Y25(1)= 2.35*10^-4;
Y26(1)= 1*10^-4;
Y27(1)= 0;
k1 = 5*10^-3;
k2 = 5*10^-4;
k3 = 5*10^-3;
k4 = 2.5*10^-3;
k5 = 7.5*10^-2;
k6 = 2.5*10^-3;
k7 = 1.25*10^-3;
k8 = 2.5*10^-4;
k9 = 8*10^-4;
k10 = 5*10^-4;
k11 = 1*10^-3;
k12 = 2*10^-4;
k13 = 5*10^-4;
k14 = 5*10^-4;
k15 = 5*10^-4;
k16 = 5*10^-4;
k17 = 2*10^-3;
k18 = 5*10^-4;
k19 = 5*10^-3;
k20 = 5*10^-4;
k21 = 5*10^-5;
k22 = 2.5*10^-2;
k23 = 1.75*10^-3;
k24 = 2.25*10^-2;
k25 = 1.75*10^-4;
k26 = 2.25*10^-2;
k27 = 1.75*10^-4;
k28 = 1.9*10^-2;
k29 = 5*10^-4;
k30 = 2.5*10^-3;
k31 = 1.75*10^-4;
k32 = 2.5*10^-3;
k33 = 1.75*10^-4;
k34 = 5*10^-8;
k35 = 1*10^-2;
k36 = 1.5*10^-3;
k37 = 5*10^-5;
k38 = 1*10^-2;
k39 = 5*10^-3;
k40 = 2*10^-3;
k41 = 5*10^-5;
k42 = 1*10^-4;
k43 = 5*10^-4;
k44 = 5*10^-4;
k45 = 5*10^-5;
k46 = 2.5*10^-3;
k47 = 2.5*10^-3;
k48 = 2.5*10^-3;
k49 = 4*10^-2;
k50 = 2.5*10^-3;
k51 = 5*10^-8;
k52 = 5*10^-7;
k53 = 5*10^-5;
k54 = 1*10^-2;
k55 = 5*10^-8;
k56 = 5*10^-5;
k57 = 5*10^-3;
k58 = 5*10^-5;
k59 = 5*10^-4;
k60 = 1*10^-4;
k61 = 1.5;
k62 = 1*10^-3;
k63 = 9.4*10^-4;
k64 = 2*10^-2;
k65 = 9.5;
k66 = 10;
k67 = 5*10^-3;
k68 = 5*10^-2;
k69 = 8*10^-4;
k70 = 6;
k71 = 4*10^-3;
k72 = 1*10^-8;
k73 = 7.72*10^-1;
k74 = 5.56*10^-2;
k75 = 2*10^-2;
DDS = 0;
signal = DDS*exp(-k72*t);
degradation = k74 - k73.*(signal.*DDS.*exp(-k75*t));
syms Y0(t) Y1(t) Y2(t) Y3(t) Y4(t) Y5(t) Y6(t) Y7(t) Y8(t) Y9(t) Y10(t) Y11(t) Y12(t) Y13(t) Y14(t) Y15(t) Y16(t) Y17(t) Y18(t) Y19(t) Y20(t) Y21(t) Y22(t) Y23(t) Y24(t) Y25(t) Y26(t) Y27(t)
eqns = [diff(Y0,t)==k1 + k4*Y5(t) - (k2*Y0(t) + k3*Y0(t)*Y3(t)),diff(Y1,t)==k5*Y21(t) + k8*Y6(t) - (k6*Y1(t) + k7*Y1(t)*Y4(t)),diff(Y2,t)==k9*Y26(t) + k12*Y8(t) - (k10*Y2(t) + k11*Y2(t)*Y4(t)),diff(Y3,t)==k4*Y5(t) + k13*Y5(t) - k3*Y0(t)*Y3(t),diff(Y4,t)==k8*Y6(t) + k12*Y8(t) + k14*Y9(t) + k15*Y8(t) + k16*Y6(t) + k17*Y7(t)*Y7(t) - (k7*Y1(t)*Y4(t) + k11*Y2(t)*Y4(t)),diff(Y5,t)==k3*Y0(t)*Y3(t) + k19*Y15(t) + k21*Y11(t) - (k4*Y5(t) + k13*Y5(t) + k18*Y5(t)*Y14(t) + k20*Y5(t)*Y10(t) + k44*Y5(t)*Y18(t)),diff(Y6,t)==k7*Y1(t)*Y4(t) + k23*Y7(t) - (k8*Y6(t) + k22*Y6(t)*Y7(t) + k16*Y6(t)),diff(Y7,t)==k22*Y6(t)*Y7(t) + k25*Y12(t) + k27*Y16(t) - (k23*Y7(t) + k24*Y7(t)*Y10(t) + k26*Y7(t)*Y14(t) + k17*Y7(t)*Y7(t)),diff(Y8,t)==k11*Y2(t)*Y4(t) + k29*Y9(t) - (k12*Y8(t) + k28*Y8(t)*Y9(t) + k15*Y8(t)),diff(Y9,t)==k28*Y8(t)*Y9(t) + k31*Y13(t) + k33*Y17(t) - (k29*Y9(t) + k30*Y9(t)*Y10(t) + k32*Y9(t)*Y14(t) + k14*Y9(t)),diff(Y10,t)==k34 + k21*Y11(t) + k25*Y12(t) + k31*Y13(t) -(k35*Y7(t)*Y10(t) + k36*Y9(t)*Y10(t) + k20*Y5(t)*Y10(t) + k24*Y7(t)*Y10(t) + k30*Y9(t)*Y10(t)),diff(Y11,t)==k20*Y5(t)*Y10(t) - k21*Y11(t),diff(Y12,t)==k24*Y7(t)*Y10(t) - k25*Y12(t),diff(Y13,t)==k30*Y9(t)*Y10(t) - k31*Y13(t),diff(Y14,t)==k37 + k38*Y24(t) + k19*Y15(t) + k27*Y16(t) + k33*Y17(t) - (k39*Y14(t) + k18*Y5(t)*Y14(t) + k26*Y7(t)*Y14(t) + k32*Y9(t)*Y14(t)),diff(Y15,t)==k18*Y5(t)*Y14(t) - k19*Y15(t),diff(Y16,t)==k26*Y7(t)*Y14(t) - k27*Y16(t),diff(Y17,t)==k32*Y9(t)*Y14(t) - k33*Y17(t),diff(Y18,t)==k40 + k41/(1 + k42*Y23(t)) - (k43*Y18(t) + k44*Y5(t)*Y18(t)),diff(Y19,t)==k45*Y21(t)*Y23(t) - (k46*Y5(t)*Y19(t) + k47*Y11(t)*Y19(t) + k48*Y15(t)*Y19(t)),diff(Y20,t)==k46*Y5(t)*Y19(t) + k47*Y11(t)*Y19(t) + k48*Y15(t)*Y19(t) - (k49*Y7(t)*Y20(t) + k50*Y9(t)*Y20(t)),diff(Y21,t)==k49*Y7(t)*Y20(t) + k50*Y9(t)*Y20(t) + k51*Y21(t) + k52 - (k45*Y21(t)*Y23(t) + k53*Y21(t) + k54*Y9(t)*Y21(t)),diff(Y22,t)==k49*Y7(t)*Y20(t) + k50*Y9(t)*Y20(t) - k55*Y22(t),diff(Y23,t)==k56 +k58/(1 + k59*Y18(t)) +k55*Y22(t) -(k57*Y23(t) + k45*Y21(t)*Y23(t)),diff(Y24,t)==k60 + k61*signal - (degradation*Y24(t)*Y25(t) + k62*Y24(t)),diff(Y25,t)==k63 + k66*(Y27(t))^9/((k65)^9 + (Y27(t))^9) - k64*Y25(t),diff(Y26,t)==k68*Y21(t) - k69*Y26(t),diff(Y27,t)==(k70*Y24(t)*signal)/(1 + k71*Y24(t)*Y25(t)) - k67*Y27(t)];
cond = [Y0(0) == 3e-02, Y1(0)==1*10^-3, Y2(0)==4*10^-5, Y3(0)==5, Y4(0)==13.5, Y5(0)==2, Y6(0)==1*10^-3, Y7(0)==1*10^-3, Y8(0)==4*10^-4, Y9(0)== 1*10^-4, Y10(0)== 10, Y11(0)== 1*10^-3, Y12(0)== 2.9, Y13(0)== 1*10^-4, Y14(0)== 0, Y15(0)== 0, Y16(0)== 0, Y17(0)== 0, Y18(0)== 1*10^-3, Y19(0)== 1.95, Y20(0)== 1*10^-3, Y21(0)== 0, Y22(0)== 1*10^-2, Y23(0)== 5*10^-2, Y24(0)== 2.65*10^-2, Y25(0)== 2.35*10^-4, Y26(0)== 1*10^-4, Y27(0)== 0];
[sol(t)] = dsolve(eqns,cond);
A(1) = Table(Y1(t)/sol,{t,0,2000,1});
A(2) = Table(Y2(t)/sol,{t,0,2000,1});
A(3) = Table(Y3(t)/sol,{t,0,2000,1});
A(4) = Table(Y4(t)/sol,{t,0,2000,1});
A(5) = Table(Y5(t)/sol,{t,0,2000,1});
A(6) = Table(Y6(t)/sol,{t,0,2000,1});
A(7) = Table(Y7(t)/sol,{t,0,2000,1});
A(8) = Table(Y8(t)/sol,{t,0,2000,1});
A(9) = Table(Y9(t)/sol,{t,0,2000,1});
A(10) = Table(Y10(t)/sol,{t,0,2000,1});
A(11) = Table(Y11(t)/sol,{t,0,2000,1});
A(12) = Table(Y12(t)/sol,{t,0,2000,1});
A(13) = Table(Y13(t)/sol,{t,0,2000,1});
A(14) = Table(Y14(t)/sol,{t,0,2000,1});
A(15) = Table(Y15(t)/sol,{t,0,2000,1});
A(16) = Table(Y16(t)/sol,{t,0,2000,1});
A(17) = Table(Y17(t)/sol,{t,0,2000,1});
A(18) = Table(Y18(t)/sol,{t,0,2000,1});
A(19) = Table(Y19(t)/sol,{t,0,2000,1});
A(20) = Table(Y20(t)/sol,{t,0,2000,1});
A(21) = Table(Y21(t)/sol,{t,0,2000,1});
A(22) = Table(Y22(t)/sol,{t,0,2000,1});
A(23) = Table(Y23(t)/sol,{t,0,2000,1});
A(24) = Table(Y24(t)/sol,{t,0,2000,1});
A(25) = Table(Y25(t)/sol,{t,0,2000,1});
A(26) = Table(Y26(t)/sol,{t,0,2000,1});
A(27) = Table(Y27(t)/sol,{t,0,2000,1});
A(28) = Table(Y0(t)/sol,{t,0,2000,1});
Do i=1
while (i < 29)
Data(i) = Flatten(A(i));
i=i+1;
end
figure(1) % plot time series
plot(Data(19),'blue',Data(21),'red',Data(23),'pink',Data(5),'black',Data(11),'yellow',Data(15),'green');
xlabel('Timestep'), ylabel('Rb/E2F (blue), E2F (red), Rb (pink), CycD/CDK4/6 (black), p27/CycD/CDK4/6 (yellow), p21/CycD/CDK4/6 (green)')

Best Answer

It's very unlikely that an analytical solution exists for a system of 28 differential equations.
So use a numerical solver, e.g. "ODE15S", instead of the symbolic solver "dsolve".
Best wishes
Torsten.