Bonjour,
je tente de résoudre un système d'équation différentielle de premier ordre sous Matlab et afficher l'évolution des variables en fonction du temps, mais j'obtient une matrice remplit de 'NaN' et le warning "Matrix is singular, close to singular or badly scaled.Results may be inaccurate. RCOND = NaN.'' Comment faire pour remedier à la situation ?
Voici mon code:
PFE.m:
et mon fichier equation.m contenant la fonction equation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 global t; global y; % Conditions initiales y0=zeros(47,1); y0(1) = 0; %EGFR_EGR y0(2) = 0; %2EGFR_EGF y0(3) = 0; %EGFR_P y0(4) = 0; %Gr_G y0(5) = 0; %PI3K_Gr_G y0(6) = 0; %EGFR_PI3K; y0(7) = 0; %PIP3 y0(8) = 0; %PIP3_Akt_PDK y0(9) = 0; %Akt_P y0(10)= 0; %PIP2 y0(11)= 0; %EGFR_PL y0(12)= 0; %EGFR_PLP y0(13)= 0; %PLCr_P y0(14)= 1.05*10^-7; %PLCr y0(15)= 0; %PKC y0(16)= 0; %Ca2+ y0(17)= 1.5*10^-7; %Shc y0(18)= 0; %ShcP y0(19)= 8.5*10^-7; %Grb2 y0(20)= 0; %PI3K* y0(21)= 3.4*10^-8; %SOS y0(22)= 0; %EGFR_G y0(23)= 0; %EGFR_G_S y0(24)= 0; %G_S y0(25)= 0; %EGFR_Sh y0(26)= 0; %EGFR_Sh_P y0(27)= 0; %EGFR_Sh_G y0(28)= 0; %EGFR_Sh_G_S y0(29)= 0; %Sh_G y0(30)= 0;%Sh_G_S y0(31)= 1*10^-8; %PI3K y0(32)= 1.107*10^-8; %Ras-GDP y0(33)= 0 ;%Ras-GTP y0(34)= 5.531*10^-9; %Raf y0(35)= 0; %RafP y0(36)= 8*10^-7; %PI y0(37)= 1.9926*10^-7; %MEK y0(38)= 0; %MEKP y0(39)= 0; %MEKPP y0(40)= 4.1514*10^-7; %ERK y0(41)= 0; %ERKP y0(42)= 0; %ERKPP y0(43)= 3.33*10^-8; %EGF y0(44)= 8.307*10^-9; %EGFR y0(45)= 1*10^-8; %Akt y0(46)= 4.3*10^-8; %Gab1 y0(47)= 1*10^-8; %Pkt %Plage de temps de simulation tspan=[0, 100]; % Appelle au solveur ode [t, y] = ode23s(@equation, tspan, y0); plot(t,y(:,1)); plot(t,y(:,2));
Tout compile bien orsque je lance PFE.m, mais j'obtiens des NaN comme réponse ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Fonction equation.m %Cette fonction contient l'ensemble des équations différentielles à %résoudre, formé des réactions v1 à v44, déclaré ci-dessous. function dydt=equation(t,y) global t; global y; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Constantes cinétiques % k1=3*10^6;k_1=0.06; k2=1*10^7;k_2=0.1; k3=1;k_3=0.01; Vmax4=4.5*10^-7;Km4=5*10^-8; k5=6*10^7;k_5=0.2; k6=1;k_6=0.05; k7=0.3;k_7=6*10^6; Vmax8=4.5*10^-7;Km8=5*10^-8; k9=3*10^6;k_9=0.05; k10=1*10^7;k_10=0.06; k11=0.03;k_11=6*10^7; k12=0.015;k_12=1*10^5; k13=9*10^7; k_13=0.6; k14=6; k_14=0.06; kcat15=0.2;Km15=8.3333*10^-7; Vmax16=1.7*10^-9;Km16=3.4*10^-7; k17=3*10^6; k_17=0.1; k18=0.3;k_18=9*10^5; k19=1*10^7; k_19=0.0214; k20=0.12;k_20=2.4^5; k21=3*10^6; k_21=0.1; k22=3*10^6; k_22=0.064; k23=01; k_23=2.1*10^7; k24=9*10^6; k_24=0.0429; kcat26=0.222 ;Km26=0.181; Vmax28=0.289; Km28=0.0571; k29=9.85 ;k_29=0.0985; k30=3.6*10^7; k_30=0.05; kcat31=1.53;Km31=11.7; Vmax32=5*10^-6;Km32=3.3*10^-9; kcat33=9*10^-9;Km33=4*10^-9; Vmax35=5*10^-6;Km35=3.3*10^-7; kcat37=0.138; Km37=6*10^-8; Vmax39=6*10^-6;Km39=1*10^-7; kcat41=16.67; Km41=5.54*10^-10; kcat42=0.1667; Km42=5.4*10^-10; k44=0.27; k_44=2; kcat46=16.9; Km46=39.1; k47=509; k_47=234; Vmax48=2*10^4; kcat48=2*10^4; Km48=8*10^5; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Équations de réaction % v1=k1*y(43)*y(44)-k_1*y(1); v2=k2*y(1)*y(1)-k_2*y(2); v3=k3*y(2)- k_3*y(3); v4=Vmax4*((y(3)/(Km4 * y(3)))); v5=k5*y(3)*y(14)-k_5*y(11); v6=k6*y(11)-k_6*y(12); v7=k7*y(12)-k_7*y(3)*y(13); v8=Vmax8 *((y(13)/(Km8+y(13)))); v9=k9*y(3)*y(19)-k_9*y(22); v10=k10*y(22)*y(21)-k_10*y(23); v11=k11*y(23)-k_11*y(3)*y(24); v12=k12*y(24)-k_12*y(19)*y(21); v13=k13*y(3)-k_13*y(25); v14=k14*y(25)-k_14*y(26); v15=(kcat15*y(3)*y(17))/(Km15+y(17)); v16=Vmax16*(y(18)/(Km16+y(18))); v17=k17*y(26)-k_17*y(27); v18=k18*y(27)-k_18*y(3)*y(29); v19=k19*y(27)*y(21)-k_19*y(28); v20=k20*y(28)-k_20*y(3)*y(30); v21=k21*y(18)*y(19)-k_21*y(29); v22=k22*y(29)*y(21)-k_22*y(30); v23=k23*y(30)-k_23*y(18)*y(24); v24=k24*y(26)-k_24*y(28); v26=(kcat26*y(28)*y(32))/(Km26+y(32)); v27=0; v28=Vmax28*(y(33)/(Km28+y(33))); v29=k29*y(6)-k_29*y(3)*y(20); v31=(kcat31*y(33)*y(34))/(Km31+y(34)); v32=Vmax32*(y(35)/(Km32+y(35))); v33=(kcat33*y(35)*y(37))/(Km33+y(37)); v34=(kcat33*y(38)*y(35))/(Km33+y(38)); v35=Vmax35*(y(38)/(Km35+y(38))); v36=Vmax35*(y(39)/(Km35+y(39))); v37=(kcat37*y(39)*y(40))/(Km33+y(40)); v38=(kcat37*y(39)*y(41))/(Km33+y(41)); v39=Vmax39*(y(41)/(Km39+y(41))); v40=Vmax39*(y(42)/(Km39+y(42))); v41=(kcat41*y(23)*y(32))/(Km41+y(32)); v43=0; v44=k44*y(4)*y(31)-k_44*y(5); v46=kcat46*y(20)*y(31)/Km46+y(20); v47=k47*y(7)*y(45)*y(47)-k_47*y(8); v48=Vmax48*y(8)/(Km48*(1+(y(9)/kcat48)+y(8))); v49=0; v50=0; v51=0; v52=v36; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Équations différentielles dydt=zeros(47,1); dydt(1)=v1-v2; dydt(2)=v2+v3-v4; dydt(3)=v4-v3-v5-v9-v13-v27+v7+v11+v15+v18+v20+v29; dydt(4)=v43-v44; dydt(5)=v44-v27; dydt(6)=v27-v46; dydt(7)=v46-v47; dydt(8)=v47-v8; dydt(9)=v8; dydt(10)=-v46-v49; dydt(11)=v5-v6; dydt(12)=v6-v7-v49; dydt(13)=v7-v8; dydt(14)=v8-v5; dydt(15)=v49; dydt(16)=v49; dydt(17)=v16-v13; dydt(18)=v15+v33-v16; dydt(19)=v12-v9-v17-v21; dydt(20)=v29-v46; dydt(21)=v12-v10-v22; dydt(22)=v9-v10; dydt(23)=v10-v11-v41; dydt(24)=v11-v12+v23; dydt(25)=v13-v14; dydt(26)=v14-v17-v15-v24; dydt(27)=v17-v18-v19; dydt(28)=v19+v24-v26-v20-v26; dydt(29)=v21-v18-v22; dydt(30)=v22-v20-v23; dydt(31)=-v44; dydt(32)=v26+v41-v28+v31; dydt(33)=v28-v26; dydt(34)=v31-v32; dydt(35)=v31-v32-v33-v34; dydt(36)=-v46; dydt(37)=v35-v33; dydt(38)=v33-v34-v35; dydt(39)=v34-v36-v37-v38-v50; dydt(40)=v39-v37; dydt(41)=v37-v38-v39-v40; dydt(42)=v38-v40; dydt(43)=-v1; dydt(44)=-v1; dydt(45)=-v47; dydt(46)=-v43; dydt(47)=-v47;
Partager