Werken met R bij wiskunde: Differentiaalvergelijkingen in R
Stelsels van differentiaalvergelijkingen oplossen
Je kunt in R ook gemakkelijk stelsels van differentiaalvergelijkingen numeriek oplossen. Onderstaand voorbeeld van een stelsel van lineaire differentiaalvergelijkingen in twee afhankelijke variabelen illustreert hoe, maar het is niet zo veel anders dan bij één afhankelijke variabele. Alleen laten we ook nog zien hoe je kunt inzoomen op een deel van de grafiek.
Stelsel van lineaire GDVs We bekijken het volgende stelsel van differentiaalvergelijkingen \[\left\{\begin{aligned} \frac{\dd x}{\dd t} &= a\cdot x+b\cdot y \\[0.25cm] \frac{\dd y}{\dd t} &=c\cdot x+d\cdot y\end{aligned} \right.\] met \[a=2,\quad b=-4,\quad c=2,\quad d=-3\] en beginwaarden \[x(0)=2,\quad y(0)=3\]
Onderstaand R script
library(deSolve)
model <- function(tijd, begintoestand, parameters) {
with(as.list(c(begintoestand, parameters)), {
dxdt <- a*x + b*y
dydt <- c*x + d*y
return(list(c(dxdt, dydt)))
})
}
params <- c(a = 2, b = -4, c = 2, d = -3) # parameters
xy0 <- c(x = 2, y = 3) # beginwaarden
t <- seq(0, 10, by = 0.1) # tijdsinterval
oplossing <- ode(xy0, t, model, params)
plot(oplossing, main = c("x-t diagram", "y-t diagram"),
xlab = "t", ylab = c("x", "y"), lwd = 2, col = "blue")
plot(oplossing[, "x"], oplossing[, "y"], type = "l",
main = "y versus x", xlab = "x", ylab = "y",
lwd = 2, col = "blue")
xy <- subset(oplossing, select = c("x", "y"),
subset = -1<x & x<1 & -1<y & y<1)
plot(xy, type = "l", main = "y versus x",
xlab = "x", ylab = "y", lwd=2, col = "blue")
levert de volgende figuren op
Ontgrendel volledige toegang