# getStepSize-method: getStepSize In rODE: Ordinary Differential Equation (ODE) Solvers Written in R Using S4 Classes

## Description

Get the current value of the step size

## Usage

 `1` ```getStepSize(object, ...) ```

## Arguments

 `object` a class object `...` additional parameters

## Examples

 ``` 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``` ```# +++++++++++++++++++++++++++++++++++++++++ Example: ComparisonRK45ODEApp.R # Updates the ODE state instead of using the internal state in the ODE solver # Also plots the solver solution versus the analytical solution at a # tolerance of 1e-6 # Example file: ComparisonRK45ODEApp.R # ODE Solver: Runge-Kutta 45 # ODE class : RK45 # Base class: ODETest library(ggplot2) library(dplyr) library(tidyr) importFromExamples("ODETest.R") ComparisonRK45ODEApp <- function(verbose = FALSE) { ode <- new("ODETest") # new ODE instance ode_solver <- RK45(ode) # select ODE solver ode_solver <- setStepSize(ode_solver, 1) # set the step # two ways to set tolerance # ode_solver <- setTolerance(ode_solver, 1e-6) setTolerance(ode_solver) <- 1e-6 time <- 0 rowVector <- vector("list") # row vector i <- 1 # counter while (time < 50) { # add solution objects to a row vector rowVector[[i]] <- list(t = getState(ode)[2], ODE = getState(ode)[1], s2 = getState(ode)[2], exact = getExactSolution(ode, time), rate.counts = getRateCounts(ode), time = time ) ode_solver <- step(ode_solver) # advance solver one step stepSize <- getStepSize(ode_solver) # get the current step size time <- time + stepSize ode <- getODE(ode_solver) # get updated ODE object state <- getState(ode) # get the `state` vector i <- i + 1 # add a row vector } DT <- data.table::rbindlist(rowVector) # create data table return(DT) } solution <- ComparisonRK45ODEApp() plot(solution) # aditional plot for analytics solution vs. RK45 solver solution.multi <- solution %>% select(t, ODE, exact) plot(solution.multi) # 3x3 plot # plot comparative curves analytical vs ODE solver solution.2x1 <- solution.multi %>% gather(key, value, -t) # make a table of 3 variables. key: ODE/exact g <- ggplot(solution.2x1, mapping = aes(x = t, y = value, color = key)) g <- g + geom_line(size = 1) + labs(title = "ODE vs Exact solution", subtitle = "tolerance = 1E-6") print(g) ```

rODE documentation built on May 1, 2019, 10:17 p.m.