Gewone differentiaalvergelijkingen: Lijnelementveld en oplossingskrommen met R
Tekenen van een lijnelementenveld [R uitwerking]
We bekijken de differentiaalvergelijking \[\frac{\dd y}{\dd t}=1-2\,t\, y\]
Part 1
In het eerste deel van de opdracht moeten we het lijnelementenveld van de bovenstaande differentiaalvergelijking plotten door gebruik te maken van grafische elementen zoals lijnen.
xp <- seq(from=0, to=2, length=10)
yp <- seq(from=0, to=2, length=10)
plot(c(0,2),c(0,2), main="lijnelementenveld bij y'1 - 2ty", ylab = "y", xlab = "t", pch = ".")
for(x in xp){
for(y in yp){
u <- 1.0
v <- 1.0 - 2.0*x*y
L <- sqrt(u*u+v*v)
u <- u/L
v <- v/L
segments(x-0.05*u,y-0.05*v,x+0.05*u,y+0.05*v, col="blue")
}
}
Het resultaat is de volgende figuur:
Deel 2
In het tweede deel van de opdracht passen we het programma zo aan dat er \(2000\) willekeurige coördinaten worden gerandomiseerd op het gebied \(0\le t\le 2, 0\le y\le 2, \). Daarna tekenen we op dezelfde manier als hiervoor de lijnen op deze coördinaten. Hieronder staat een voorbeeld van de code:
xp <- runif(2000, min=0, max=2)
yp <- runif(2000, min=0, max=2)
plot(c(0,2),c(0,2), main="lijnelementenveld by y'= 1 - 2ty", ylab = "y", xlab = "t", pch = ".")
for(k in 1:2000){
x <- xp[k]
y <- yp[k]
u <- 1.0
v <- 1.0 - 2.0*x*y
L <- sqrt(u*u+v*v)
u <- u/L
v <- v/L
segments(x-0.05*u,y-0.05*v,x+0.05*u,y+0.05*v, col="gray")
}
Het resultaat is de volgende figuur:
Ontgrendel volledige toegang