slides simecol
Post on 08-Jul-2015
445 Views
Preview:
TRANSCRIPT
Introduction Modèle Programmation Généralisation
Librairie simecol pour R
Timothée POISOT
3 février 2009
1 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Plan
1 Introduction
2 Modèle
3 Programmation
4 Aller plus loinPlusieurs espècesStochasticité
2 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Objectifs
1 Écrire un modèle simple. . .
Écrire les équations en langage SÉcrire le vecteur de paramètesIntégrer dans les structures de simecol
2 . . . et aller plus loin
Plusieurs espècesStochasticité
3 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Objectifs
1 Écrire un modèle simple. . .
Écrire les équations en langage SÉcrire le vecteur de paramètesIntégrer dans les structures de simecol
2 . . . et aller plus loin
Plusieurs espècesStochasticité
3 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Pré-requis
R http://cran.r-project.org2.7 au moins. . .
simecol Dans R : install.packages(’simecol’)Avec les dépendances !
les fichiers http://homepage.mac.com/tim.poisot/RFichier intro-simecol.rPour le code source commenté !
4 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Le modèle
proie Prédateur
k1
k3
k2
5 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Les équations
dp
dt= p · (k1 − k2P ) (1)
dP
dt= −P · (k3 − k2p) (2)
6 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Écriture du modèle
Vecteur nommé de paramètres
p <- c(’k1’=0.2,’k2’=0.2,’k3’=0.2)
Équations
dx1 <- p["k1"]*x[1] -p["k2"]*x[1]*x[2]dx2 <- - p["k3"]*x[2] +p["k2"]*x[1]*x[2]
Note : x[1] et x[2] contiennent p et P !
7 / 20Librairie simecol pour R
Modèle fonction main
arguments time
parmsinit
solver
Introduction Modèle Programmation Généralisation
Intégrer dans simecol
LVsim <- new("odeModel",main = function(time,init,parms) {# MODELE !list(c(dp,dP))
},parms = c(’alpha’=0.2,
’beta’=0.2,’gamma’=0.2,’sigma’=0.2),
times = c(from=0, to=60, by=1e-1),init = c(0.5,0.5),solver = "lsodar")
9 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Intégrer dans simecol
# MODELEpars <- parmsp <- init[1]P <- init[2]dp <- p*(pars[’alpha’]-pars[’beta’] *P)dP <- -P*(pars[’gamma’]-pars[’sigma’]*p)
10 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Go !
Pour lancer la simulation (sim) :
out(sim(LVsim))
Renvoie (out) le résultat :
time 1 21 0.0 0.5000000 1.00000002 0.5 0.4986641 0.95358093 1.0 0.4981401 0.91077964 1.5 0.4968445 0.87269155 2.0 0.4952770 0.83834056 2.5 0.4939464 0.80688717 3.0 0.4932749 0.77769968 etc...
11 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Résultat
0 20 40 60 80 100
0.6
0.8
1.0
1.2
1.4
1.6
1.8
Temps
Effe
ctif
Prédateurs et proies 12 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Quelques infos sur les vecteurs
Additivité
c + ~V = {c + V1, c + V2, . . . , c + Vn}~U + ~V = {U1 + V1, U2 + V2, . . . , Un + Vn}
Multiplication
c · ~V = {cV1, cV2, . . . , cVn}~U · ~V = {U1V1, U2V2, . . . , UnVn}
Et autres
sum(V)=∑n
i=1 Vi
prod(V)=∏n
i=1 Vi
length(V)= nV[i]= Vi
V[1:4]= {V1, V2, V3, V4}
13 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Les équations du “nouveau” modèle
dpi
dt= pi · (k1i − k2iP ) (3)
dP
dt= −P ·
(k3 −
n∑i=1
k2ipi
)(4)
n = 2, (k1)1 > (k1)2, et (k2)1 > (k2)2
14 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
pars <- parms
p <- init[1:2]P <- init[3]
K1 <- c(pars[’k1a’],pars[’k1b’])K2 <- c(pars[’k2a’],pars[’k2b’])
dp <- p*(K1 - K2*P)dP <- -P*(pars[’k3’] - sum(K2*p))
list(c(dp,dP))
15 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Résultat
0 50 100 150 200
0.0
0.5
1.0
1.5
2.0
2.5
3.0
Temps
Effe
ctif
16 / 20Librairie simecol pour R
Introduction Modèle Programmation Généralisation
Stochasticité
pars <- parms
p <- init[1:2]P <- init[3]
K1 <- c(pars[’k1a’],pars[’k1b’])K2 <- c(pars[’k2a’],pars[’k2b’])
+ runif(length(p),-0.0002,0.0002)
dp <- p*(K1 - K2*P)dP <- -P*(pars[’k3’] - sum(K2*p))
list(c(dp,dP))
17 / 20Librairie simecol pour R
Résultat
0 50 100 150 200
0.0
0.5
1.0
1.5
2.0
2.5
Temps
Effe
ctif
0 50 100 150 200
02
46
8
Temps
Effe
ctif
Introduction Modèle Programmation Généralisation
Merci de votre attention !
R http://cran.r-project.org
simecol http://simecol.sourceforge.net
exemples http://homepage.mac.com/tim.poisot/R/Fichiers : intro-simecol.r, slides-simecol.pdf
19 / 20Librairie simecol pour R
Distribution normale
−4 −3 −2 −1 0 1 2 3
050
100
150
Distribution log−normale
0 10 20 30 40
020
040
060
080
0
Distribution uniforme
0.0 0.2 0.4 0.6 0.8 1.0
020
4060
8010
0
hist(rnorm(1000),col=’lightgrey’,main=’Distribution normale’,xlab=”,ylab=”)
hist(rlnorm(1000),col=’lightgrey’,main=’Distribution log-normale’,xlab=”,ylab=”)
hist(runif(1000),col=’lightgrey’,main=’Distribution uniforme’,xlab=”,ylab=”)
20 / 20Librairie simecol pour R
top related