https://github.com/cran/pracma
Tip revision: c1688b374d201c13fb40b4dda2d2a89e34b94ec6 authored by Hans W. Borchers on 23 January 2021, 09:10:02 UTC
version 2.3.3
version 2.3.3
Tip revision: c1688b3
deeve.Rd
\name{deeve}
\alias{deeve}
\title{
Event Detection in ODE solution
}
\description{
Detect events in solutions of a differential equation.
}
\usage{
deeve(x, y, yv = 0, idx = NULL)
}
\arguments{
\item{x}{vector of (time) points at which the differential equation
has been solved.}
\item{y}{values of the function(s) that have been computed for the
given (time) points.}
\item{yv}{point or numeric vector at which the solution is wanted.}
\item{idx}{index of functions whose vales shall be returned.}
}
\details{
Determines when (in \code{x} coordinates) the \code{idx}-th solution
function will take on the value \code{yv}.
The interpolation is linear for the moment. For points outside the
\code{x} interval \code{NA} is returned.
}
\value{
A (time) point \code{x0} at which the event happens.
}
\note{
The interpolation is linear only for the moment.
}
\seealso{
\code{\link{deval}}
}
\examples{
## Damped pendulum: y'' = -0.3 y' - sin(y)
# y1 = y, y2 = y': y1' = y2, y2' = -0.3*y2 - sin(y1)
f <- function(t, y) {
dy1 <- y[2]
dy2 <- -0.3*y[2] - sin(y[1])
return(c(dy1, dy2))
}
sol <- rk4sys(f, 0, 10, c(pi/2, 0), 100)
deeve(sol$x, sol$y[,1]) # y1 = 0 : elongation in [sec]
# [1] 2.073507 5.414753 8.650250
# matplot(sol$x, sol$y); grid()
}
\keyword{ ode }