1 Le modèle de Monod

\[r\left( S \right) = \frac{{{r_{\max }}S}}{{{K_s} + S}}\]

rmax <- 0.85
Ks <- 2
par(mar = c(4, 5, 0.2, 0.2))
curve(rmax*x/(Ks+x), from=0, to=10, ylim=c(0,rmax), xlab="S", ylab=expression(r(S)), las=1)
abline(h=rmax, lty=2)
segments(-1,rmax/2,Ks,rmax/2, lty=2)
segments(Ks,-1,Ks,rmax/2, lty=2)
text(Ks,rmax, labels=expression(r[max]), pos=1)
text(Ks,0, labels=expression(K[s]), pos=4)

\(r_\max\) correspond au taux de croissance bactérien lorsque la concentration en substrat est infinie, c’est-à-dire non limitante :

\[\mathop {\lim }\limits_{S \to + \infty } r\left( S \right) = {r_{\max }}\]

Par ailleurs, si la quantité de nutriment est illimitée et si on néglige le flux sortant, alors on peut considérer que \(\frac{dN}{dt} \sim r_\max N\). Ainsi \(N(t) = N_0 e^{r_\max t}\).

De plus, si on se rappelle que \(\tau_d = \frac{\ln 2}{r_\max}\), alors on dira que la quantité \(1/r_\max\) est proportionnelle au temps de doublement \(\tau_d\) de la population bactérienne lorsque l’apport en substrat est illimité.

\(K_s\) est la constante de “demie-saturation” :

\[r\left( {{K_s}} \right) = \frac{{{r_{\max }}}}{2}\]

2 Interprétation des paramètres

2.1 Paramètre \(\tau\)

Le paramètre \(\tau=\frac{V}{F}\) est homogène à un temps. On peut l’interpréter de trois manières différentes. Il s’agit du temps nécessaire pour :

  1. remplacer la totalité du volume de la chambre de culture par du milieu propre ;

  2. vidanger complètement la chambre de culture si on arrète de l’approvisionner en substrat ;

  3. éliminer (on dit “lessiver”) la population bactérienne de la chambre de culture.

2.2 Paramètre \(\alpha_2\)

\[\alpha_2 = \frac{S_0}{K_s}\]

Si on considère le modèle du chémostat en l’absence de bactéries (\(N(t) = 0\)), alors il se réduit à la seule deuxième équation qui devient :

\[\frac{{d{S}}}{{d{t}}} = - {S} + {\alpha _2}\]

Cette équation admet \(S_{eq} = \alpha_2\) comme point d’équilibre. Ainsi, on peut interpréter le paramètre \(\alpha_2\) comme la concentration en substrat à l’intérieur de la chambre de culture lorsqu’il n’y a pas de bactéries.

3 Points d’équilibre du modèle du chémostat

On rappelle que le modèle du chémostat reparamétré s’écrit : \[\left\{ {\begin{array}{*{20}{l}} {\frac{{d{N}}}{{d{t}}} = {\alpha _1}\left( {\frac{{{S}}}{{1 + {S}}}} \right){N} - {N}}\\ {\frac{{d{S}}}{{d{t}}} = - \left( {\frac{{{S}}}{{1 + {S}}}} \right){N} - {S} + {\alpha _2}} \end{array}} \right.\]

3.1 Point d’équilibre \((0, \alpha_2)\)

Ce point d’équilibre correspond à une situation dans laquelle on n’aurait pas de bactéries, \(N_{eq} = 0\), et la concentration en substrat à l’équilibre \(S_{eq} = \alpha_2\).

3.2 Point d’équilibre \(\left(\alpha_1\left( \alpha_2-\frac{1}{\alpha_1-1}\right), \frac{1}{\alpha_1-1}\right)\)

L’existence mathématique de ce point d’équilibre nécessite que \(\alpha_1 \neq 1\).

Si on avait \(\alpha_1 = 1\), on aurait \(\tau = \frac{1}{r_\max}\), soit \(\tau < \tau_d\), c’est-à-dire que la cuve se viderait de son contenu plus vite que la population bactérienne n’aurait le temps de doubler sa population. A terme, la population bactérienne serait entièrement lessivée.

On rappelle que \(\tau_d = \frac{\ln 2}{r_{max}}\).

Biologiquement, ce deuxième point d’équilibre a du sens si \(N_{eq} > 0\) et \(S_{eq} > 0\), ce qui impose :

\[\left\{ \begin{array}{l} {\alpha _1} > 1\\ {\alpha _2}\left( {{\alpha _1} - 1} \right) > 1 \end{array} \right.\]

Cet équilibre correspond à une situation dans laquelle on a à la fois des bactéries et une concentration en substrat inférieure à \(\alpha_2\) (car \(S_2 = \frac{1}{\alpha_1 - 1} < \alpha_2\)), c’est-à-dire inférieure à celle qu’on aurait en l’absence de bactéries.

Le fait que le point d’équilibre \(\left(\alpha_1\left( \alpha_2-\frac{1}{\alpha_1-1}\right), \frac{1}{\alpha_1-1}\right)\) soit asymptotiquement stable, indique que, pour une condition initiale non nulle et différente de l’autre point d’équilibre, le modèle prédit ce qu’on attend de lui : permettre un état d’équilibre avec à la fois des bactéries et du sustrat.

4 Portrait de phase

library(phaseR)
m <- function(t,y,parameters){   
  dy <- numeric(2)
  dy[1] <- parameters[1]*(y[2]/(1+y[2]))*y[1] - y[1]
  dy[2] <- -(y[2]/(1+y[2]))*y[1] - y[2] + parameters[2]
  list(dy)
}
# Paramètres
a1 <- 2
a2 <- 2
# Point d'équilibre (N2,S2)
N2 <- a1*(a2-1/(a1-1))
S2 <- 1/(a1-1)
par(mar=c(4,4,0.5,0.5))
VectField <- flowField(m, xlim=c(0,4), ylim=c(0,2.5),
                       parameters=c(a1,a2), points=20, add=FALSE,
                       xlab=expression(N(t)), ylab=expression(S(t)),
                       las=1, col="gray")
grid()
isocline <- nullclines(m, xlim=c(-0.1,4), ylim=c(-0.1,3),
                       parameters=c(a1,a2), points=300,
                       col=c("darkgreen","blue"), add=TRUE, lwd=2)
points(c(0,a2), c(N2,S2), pch=19)
init <- matrix(c(0.5,1,1.5,2,2.5,3,3.5,0.5,1,1.5,2,2.5,3,3.5,
                 0.1,0.1,0.1,0.1,0.1,0.1,0.1,2.25,2.25,2.25,
                 2.25,2.25,2.25,2.25), nrow=14,ncol=2)
trajectoire <- trajectory(m, y=init, tlim=c(0,30),
                          parameters=c(a1,a2), add=TRUE,
                          col=rep(1, nrow(init)))

5 Chroniques

par(mar=c(4,4,0.5,0.5))
myinit=c(3,2)
chronique <- numericalSolution(m, y=myinit, tlim=c(0,30),
                               parameters=c(a1,a2), type="one",
                               col=c("orange","gray"), las=1,
                               lwd=2, ylim=c(0,4),
                               ylab="Chroniques", xlab="Temps (t)",
                               add.legend = FALSE)
legend("topright", legend=c(expression(N(t)), expression(S(t))),
       col=c("orange","gray"), lwd=2, bty="n")

6 Retour au paramétrage initial

\[\left\{ \begin{array}{l} \frac{{dN\left( t \right)}}{{dt}} = \left( {\frac{{{r_{\max }}S\left( t \right)}}{{{K_s} + S\left( t \right)}}} \right)N\left( t \right) - \frac{F}{V}N\left( t \right)\\ \frac{{dS\left( t \right)}}{{dt}} = - \alpha \left( {\frac{{{r_{\max }}S\left( t \right)}}{{{K_s} + S\left( t \right)}}} \right)N\left( t \right) - \frac{F}{V}S\left( t \right) + \frac{F}{V}{S_0} \end{array} \right.\]

6.1 Portrait de phase et points d’équilibre

library(phaseR)
m <- function(t,y,parameters){
  dy <- numeric(2)
  dy[1] <- parameters[1]*y[1]*y[2]/(parameters[2]+y[2]) - parameters[3]*y[1]/parameters[4]
  dy[2] <- -parameters[5]*parameters[1]*y[1]*y[2]/(parameters[2]+y[2]) - parameters[3]*y[2]/parameters[4] + parameters[3]*parameters[6]/parameters[4]
  list(dy)
}
# Paramètres initiaux
rmax <- 0.85;Ks <- 5;F <- 0.425;V <- 1;alpha <- 0.1;S0 <- 10;
# Nouveaux paramètres
alpha1 <- rmax*V/F
alpha2 <- S0/Ks
# Points d'équilibre sans dimension
N2 <- alpha1*(alpha2-(1/(alpha1-1)))
S2 <- 1/(alpha1-1)
# Paramètres d'échelle
Nc <- Ks/(alpha*alpha1)
Sc <- Ks
# Points d'équilibre dans leur dimension initiale 
N2star <- N2*Nc
S2star <- S2*Sc
par(mar=c(4,4,0.5,0.5))
VectField <- flowField(m, xlim=c(0,100), ylim=c(0,10),
                       parameters=c(rmax,Ks,F,V,alpha,S0), points=20,
                       add=FALSE, xlab=expression(N(t)),
                       ylab=expression(S(t)), las=1, col="gray")
isocline <- nullclines(m, xlim=c(-0.1,100), ylim=c(-0.1,10),
                       parameters=c(rmax,Ks,F,V,alpha,S0),
                       points=300, col=c("darkgreen","blue"),
                       add=TRUE, lwd=2)
points(c(0,N2star), c(S0,S2star), pch=19)
init <- c(10,1)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(30,1)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(60,1)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(80,1)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(10,10)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(30,10)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(60,10)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)
init <- c(80,10)
traj <- trajectory(m, y=init, tlim=c(0,30), parameters=c(rmax,Ks,F,V,alpha,S0), add=TRUE)

6.2 Influence des paramètres initiaux

Les points d’équilibre dans la paramétrisation initiale ont pour coordonnées :

\[(N_1,S_1) = \left( {0,{S_0}} \right)\]

d’une part, et \(\left( {{N_2},{S_2}} \right)\) d’autre part, avec :

\[{S_2} = \frac{{{K_s}}}{{V{r_{\max }}/F - 1}}\] et \[{N_2} = \frac{1}{\alpha }\left( {{S_0} - {S_2}} \right)\]

  • Si on augmente \(r_\max\), la concentration en substrat à l’équilibre \(S_2\) diminue tandis que la concentration bactérienne \(N_2\) augmente ;

  • Si \(r_\max\) est trop petit et conduit à \(\tau_d > \tau\), alors les bactéries seront lessivées ; il faut respecter la condition \(r_\max V/F > 1\) ;

  • Si \(K_s\) augmente (resp. diminue), le taux de croissance \(r(S)\) sera plus petit (resp. grand) pour une même quantité de substrat, ce qui entraînera une diminution (resp. augmentation) de \(N_2\) et donc une augmentation (resp. diminution) de \(S_2\) ;

  • Si le flux \(F\) augmente, le temps \(\tau = V/F\) diminue ce qui risque d’entraîner le lessivage des bactéries ; par ailleurs, \(S_2\) augmente et \(N_2\) diminue. Les conclusions sont inversées si \(F\) diminue ;

  • Si \(S_0\) augmente, alors \(N_2\) augmente ;

  • Concernant le volume \(V\), les conclusions sont inverses de celles avec \(F\) puisque c’est le rapport \(V/F\) qui intervient dans le modèle ;

  • Le rendement \(\alpha\) n’influence que le rapport entre \(S_2\) et \(N_2\).