Description Usage Arguments See Also Examples
ODESolverFactory helps to create a solver given only the name as string
ODESolverFactory generic
This is a factory method that creates an ODESolver using a name.
ODESolverFactory constructor
1 2 3 4 5 6 7 8 9 | ODESolverFactory(...)
createODESolver(object, ...)
## S4 method for signature 'ODESolverFactory'
createODESolver(object, ode, solverName, ...)
## S4 method for signature 'ANY'
ODESolverFactory(...)
|
... |
additional parameters |
object |
an solver object |
ode |
an ODE object |
solverName |
the desired solver as a string |
Other ODESolver helpers: ODESolver-class
Other ODESolver helpers: ODESolver-class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | # This example uses ODESolverFactory
importFromExamples("SHO.R")
# SHOApp.R
SHOApp <- function(...) {
x <- 1.0; v <- 0; k <- 1.0; dt <- 0.01; tolerance <- 1e-3
sho <- SHO(x, v, k)
# Use ODESolverFactory
solver_factory <- ODESolverFactory()
solver <- createODESolver(solver_factory, sho, "DormandPrince45")
# solver <- DormandPrince45(sho) # this can also be used
# Two ways of setting the tolerance
# solver <- setTolerance(solver, tolerance) # or this below
setTolerance(solver) <- tolerance
# Two ways of initializing the solver
# solver <- init(solver, dt)
init(solver) <- dt
i <- 1; rowVector <- vector("list")
while (getState(sho)[3] <= 500) {
rowVector[[i]] <- list(x = getState(sho)[1],
v = getState(sho)[2],
t = getState(sho)[3])
solver <- step(solver)
sho <- getODE(solver)
i <- i + 1
}
return(data.table::rbindlist(rowVector))
}
solution <- SHOApp()
plot(solution)
# This example uses ODESolverFactory
importFromExamples("SHO.R")
# SHOApp.R
SHOApp <- function(...) {
x <- 1.0; v <- 0; k <- 1.0; dt <- 0.01; tolerance <- 1e-3
sho <- SHO(x, v, k)
# Use ODESolverFactory
solver_factory <- ODESolverFactory()
solver <- createODESolver(solver_factory, sho, "DormandPrince45")
# solver <- DormandPrince45(sho) # this can also be used
# Two ways of setting the tolerance
# solver <- setTolerance(solver, tolerance) # or this below
setTolerance(solver) <- tolerance
# Two ways of initializing the solver
# solver <- init(solver, dt)
init(solver) <- dt
i <- 1; rowVector <- vector("list")
while (getState(sho)[3] <= 500) {
rowVector[[i]] <- list(x = getState(sho)[1],
v = getState(sho)[2],
t = getState(sho)[3])
solver <- step(solver)
sho <- getODE(solver)
i <- i + 1
}
return(data.table::rbindlist(rowVector))
}
solution <- SHOApp()
plot(solution)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.