Bonjour à tous!
Voilà je réalise un modèle en C que je compile après sous R. Mais voilà, j'ai deux de mes boucles if pour les paramètres gamma et beta qui ne
fonctionne pas car peut importe la valeur que j'attribue à ces deux paramètres, ils sont toujours de 0. Je crois que ça vient de la façon dont je les déclares mais je ne suis pas sûre et de toute façon je ne vois pas d'autre manière de les déclarés ( je suis novice en C).
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 static double parms[9]; #define K parms[0] #define kapa parms[1] #define t0 parms[2] #define alpha parms[3] #define sigma parms[4] #define ts parms[5] #define te parms[6] #define gamma parms[7] #define beta parms[8] /* initializer */ void initmod(void (* odeparms)(int *, double *)) { int N = 9; odeparms(&N, parms); } #define S y[0] #define I y[1] #define R y[2] #define dSdt ydot[0] #define dIdt ydot[1] #define dRdt ydot[2] /* Derivatives and 1 output variable */ void derivs (int *neq, double *t, double *y, double *ydot, double *yout, int *ip) { if (ip[0] < 1) error("nout should be at least 1") ; if (*t<=te) gamma=0* *t; if (*t>te) gamma=gamma; if (*t<=te) beta=0* *t; if (*t>te) beta=beta; double tau ; tau = alpha * exp(-kapa * (*t-t0)); double delta ; if(*t<=ts) delta=0* *t; if(*t>ts) delta=sigma *(1- exp(-kapa * (*t-ts))); dSdt = -beta*S*I + tau * S * (1 - S / K )- delta*S ; dIdt = beta * S * I- (gamma + delta )*I; dRdt= delta*S +(gamma + delta)*I; yout[0] = S + I + R ; }
J'ai essayer d'autre façon de l'écrire avec des accolades pour les if ou encore en faisant:
Mais à chaque fois rien ne marche, gamma et beta reste à 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 double gamma1 ; if(*t<=te) gamma1=0* *t; if(*t>te) gamma1=gamma; double beta1 ; if(*t<=te) beta1=0* *t; if(*t>te) beta1=beta;
Avez vous une idée de ce qu'il conviendrait de faire?
Merci beaucoup pour votre aide.![]()
Partager