tests/multiStartTroesch.R

if(!require("BB"))stop("this test requires package BB.")
if(!require("setRNG"))stop("this test requires setRNG.")

# Use a preset seed so test values are reproducable. 
test.rng <- list(kind="Mersenne-Twister", normal.kind="Inversion", seed=1234)
old.seed <- setRNG(test.rng)

troesch <- function(x) {
  n <- length(x)
  tnm1 <- 2:(n-1)
  f <- rep(NA, n)
    h <- 1 / (n+1)
    h2 <- 10 * h^2
    f[1] <- 2 * x[1] + h2 * sinh(10 * x[1]) - x[2] 
    f[tnm1] <- 2 * x[tnm1] + h2 * sinh(10 * x[tnm1]) - x[tnm1-1] - x[tnm1+1]    

    f[n] <- 2 * x[n] + h2 * sinh(10* x[n]) - x[n-1] - 1
  f
  }
  

p0 <- matrix(runif(50), 5, 10)  # 5 starting values, each of length 10
#ans <- BBsolve(par=p0, fn=troesch)
ans <- multiStart(par=p0, fn=troesch)
ans$par
ans$info

# ans$convergence
 
z <- sum(ans$par)
good   <-    2.191639378551349
#on Windows 
#on Linux64 
#on Linux32  2.191639378551349
print(z, digits=16)
if(any(abs(good - z) > 5e-9)) stop("BB test BBsolve Troesch FAILED")

Try the BB package in your browser

Any scripts or data that you put into this service are public.

BB documentation built on Sept. 23, 2019, 3:01 a.m.