bonjour, me voila heurter depuis des jours et des jours...
je dois resoudre le systeme d'equations suivantes à l'aide du logiciel R,
mais je n'y arrive pas.. je ne vois pas où est l'erreur!!!!!
les hypothèses de departs sont les suivantes:
- 6 espèces de phytoplancton (Ni ), 3 ressources ( Rj).
- dNi/dt = Ni (µi(R1,...,Rk)-mi), i=1,...,n (1)
- dRj/dt = D (Sj-Rj) - ∑ Cji µi (R1,...,Rk) Ni, j=1,...,k (2)
- µi(R1,...Rk) = min ( (riR1 / K1i + R1),...,(riRk / Kki+Rk))
-Valeurs des paramètres :
S1=6, S2=10, S3=14
r=1, D=0.25, m=D
(1 0,9 0,3 1,04 0,34 0,77 )
K=(0,3 1 0,9 0,71 1,02 0,76 )
(0,9 0,3 1 0,46 0,34 1,07 )
(0,04 0,07 0,04 0,1 0,03 0,02 )
C=(0,08 0,08 0,1 0,1 0,05 0,17 )
(0,14 0,1 0,1 0,16 0,06 0,14 )
Les matrices K et C comprennent en ligne les ressources (3 lignes = 3 ressources) et en colonnes les espèces (6 colonnes = 6 espèces).
- Valeurs initiales pour les variables :
R1=S1, R2=S2, R3=S3
Ni=0.1+i/100 pour les trois première espèces présentes à t=0.
N4=0.1
N5=0.1
N6=0.1
- Introduction des espèces dans le système :
Les 3 premières espèces sont présentes dès t0.
La 4ième espèce est introduite à t=1000, la 5ième à t=2000, la 6ième à t=5000.
Pour l'instant, je voudrai juste a reussir avec les trois especes initialements presente (sans se preoccuper du reste).
voici le script sur lequel je bloque :
S<-c(6,10,14)
r<-1 #taux de croissance spécifique maximum
D<-0.25 #taux de renouvellement du système
m<-D #taux de mortalité spécifique
#Création matrice Kij, constante de demie-saturation en ressource j pour l'espèce i
K<-matrix(NA,3,6)
K[1,]<-c(1.00,0.90,0.30,1.04,0.34,0.7 7)
K[2,]<-c(0.30,1.00,0.90,0.71,1.02,0.7 6)
K[3,]<-c(0.90,0.30,1.00,0.46,0.34,1.0 7)
#Création matrice C, teneur en ressource j dans l'espèce i
C<-matrix(NA,3,6)
C[1,]<-c(0.04,0.07,0.04,0.10,0.03,0.0 2)
C[2,]<-c(0.08,0.08,0.10,0.10,0.05,0.1 7)
C[3,]<-c(0.14,0.10,0.10,0.16,0.06,0.1 4)
#valeurs initiales des ressources
R<-S
#valeurs initiales des espèces
N<-c(0.11,0.12,0.13)
#Temps des 3 1ères espèces
Temps<-seq(0,15000,1000)
#equation différentielle
equ<-function(t,y,parms){
for(i in 1:3){
dN1_dt<-y[1]*(min(r*y[4:6]/(K[,1]+y[4:6]))-m)
dN2_dt<-y[2]*(min(r*y[4:6]/(K[,2]+y[4:6]))-m)
dN3_dt<-y[3]*(min(r*y[4:6]/(K[,3]+y[4:6]))-m)
dR1_dt<-D*(S[1]-y[1])-sum(C[1,]*min(r*y[4:6]/(K[,i]+y[4:6]))*y[1:3])
dR2_dt<-D*(S[2]-y[2])-sum(C[2,]*min(r*y[4:6]/(K[,i]+y[4:6]))*y[1:3])
dR3_dt<-D*(S[3]-y[3])-sum(C[3,]*min(r*y[4:6]/(K[,i]+y[4:6]))*y[1:3])
return<-list(c(dN1_dt,dN2_dt,dN3_dt,dR 1_dt,dR2_dt,dR3_dt))}}
#resolution equation differentielle
Res.equ<-lsoda(equ,y=c(N[1],N[2],N[3],R[1],R[2],R[3]),times=Temps,parms=NULL)
Res.equ
-----