Werken met R bij wiskunde: Differentiaalvergelijkingen in R
Stabiliteitsonderzoek bij een autonome, eerste-orde differentiaalvergelijking
Het phaseR
pakket heeft de commando's stability
en phasePortrait
om bij een autonome, eerste-orde differentiaalvergelijking de stabiliteit van evenwicht te bepalen en een faseportret te construeren. Maar wat in dit pakket faseportret genoemd wordt, heet in de literatuur ook wel faselijn. We illustreren het gebruik van het phaseR
pakket aan de hand van de differentiaalvergelijking \[\frac{\dd y}{\dd t}=y\cdot (1-y/2)\] Deze differentiaalvergelijking heeft een aantrekkend evenwicht \(y=2\) en een afstotend evenwicht \(y=0\). In onderstaand R script wordt dit bevestigd. Ook wordtde faselijn getekend. We verwijzen naar de phaseR handleiding voor meer details over de verschillende opties in de stability
en phasePortrait
commando's.
library(phaseR)
model <- function(t, begintoestand, parameters){
with(as.list(c(begintoestand, parameters)), {
dydt <- r*y*(1-y/K)
return(list(dydt))
})
}
params <- c(r = 1, K = 2)
cat("\nStabiliteit y = 0:\n")
stability(model, ystar = 0, parameters = params,
system = "one.dim", state.names = c("y"))
cat("\n\nStabiliteit y = 2:\n")
stability(model, ystar = 2, parameters = params,
system = "one.dim", state.names = c("y"))
phasePortrait(model, ylim = c(-1,3), ystep = 0.01,
parameters = params, state.names = c("y"),
points = 11, frac = 0.5, arrow.head = 0.1,
col = "blue", lwd = "2", xlab = "t", ylab = "y",
main = "faselijn van dy/dt = y*(1-y/2)",
add.grid = TRUE)
In het console venster staat dan
Stabiliteit y = 0:
Discriminant: 1 Classification: Unstable
Stabiliteit y = 2:
Discriminant: -1 Classification: Stable
en het volgende diagram wordt getekend: