tests/testthat/test-hessian.R

test_that("202012131431", {
  x <- hessian(f = "sin(x)", var = "x")
  y <- matrix("-sin(x)")
  expect_equal(x,y)
})

test_that("202012131536", {
  x <- hessian(f = "sin(x)", var = "x", drop = FALSE)
  y <- array("-sin(x)", dim = c(1,1,1))
  expect_equal(x,y)
})

test_that("202012131432", {
  x <- hessian(f = "x^2*y^2", var = c("x","y"))
  y <- matrix(c("2 * y^2", "2 * x * (2 * y)", "2 * x * (2 * y)", "x^2 * 2"), nrow = 2)
  expect_equal(x,y)
})

test_that("202012131433", {
  f <- c("sin(x)*y", "cos(y)*x")
  x <- hessian(f = f, var = c("x","y","z"))
  y <- array(c("-(sin(x) * y)","0","cos(x)","-sin(y)","0","0","cos(x)","-sin(y)","0","-(cos(y) * x)","0","0","0","0","0","0","0","0"), dim = c(2,3,3))
  expect_equal(x,y)
})

test_that("202012131846", {
  f.num <- function(x, y) array(c(x^2*y^2, x, x^2, y), dim = c(2,2))
  f.sym <- array(c('x^2*y^2', 'x', 'x^2', 'y'), dim = c(2,2))
  x <- hessian(f.num, var = c('x' = 2,'y' = 3))
  y <- hessian(f.sym, var = c('x' = 2,'y' = 3))
  expect_equal(x,y)
})

test_that("202012131847", {
  f.num <- function(x, y) array(c(x^2*y^2, x*cos(y), x^2, sin(y)*x), dim = c(1,2,2))
  f.sym <- array(c('x^2*y^2', 'x*cos(y)', 'x^2', 'sin(y)*x'), dim = c(1,2,2))
  x <- hessian(f.num, var = c('x' = 2,'y' = 3), drop = FALSE, accuracy = 4)
  y <- hessian(f.sym, var = c('x' = 2,'y' = 3), drop = FALSE)
  expect_equal(x,y)
})

test_that("202012131847", {
  f.num <- function(x, y) array(c(x^2*y^2, exp(x)*y^2, sqrt(y)*x^2, sin(y)*x), dim = c(1,2,2))
  f.sym <- array(c('x^2*y^2', 'exp(x)*y^2', 'sqrt(y)*x^2', 'sin(y)*x'), dim = c(1,2,2))
  x <- hessian(f.num, var = c('x' = 2,'y' = 3), accuracy = 4)
  y <- hessian(f.sym, var = c('x' = 2,'y' = 3))
  expect_equal(x,y)
})

test_that("202012131910", {
  f.num <- function(x, y) x^2*y^2
  f.sym <- 'x^2*y^2'
  x <- hessian(f.num, var = c('x' = 2,'y' = 3))
  y <- hessian(f.sym, var = c('x' = 2,'y' = 3))
  expect_equal(x,y)
})

test_that("202012131915", {
  f <- function(x, y) array(x^2*y^2, dim = c(1,1,1))
  x <- hessian(f, var = c('x' = 2,'y' = 3))
  y <- matrix(c(18,24,24,8), nrow = 2)
  expect_equal(x,y)
})

test_that("202012131917", {
  f <- function(x, y) array(x^2*y^2, dim = c(1,1,1))
  x <- hessian(f, var = c('x' = 2,'y' = 3), drop = FALSE)
  y <- array(c(18,24,24,8), dim = c(1,1,1,2,2))
  expect_equal(x,y)
})

# test_that("202012131926", {
#   f.num <- function(x, y, z) x^2*y^2*z^2
#   f.sym <- 'x^2*y^2*z^2'
#   x <- hessian(f.num, var = c('x' = 2,'y' = 3, 'z' = 45), accuracy = 4, coordinates = 'spherical')
#   y <- hessian(f.sym, var = c('x' = 2,'y' = 3, 'z' = 45), coordinates = 'spherical')
#   expect_equal(x,y)
# })

# test_that("202012131931", {
#   f.num <- function(x, y, z) c(x^2*y^2*z^2, x^2*y^2*z^2)
#   f.sym <- 'x^2*y^2*z^2'
#   x <- hessian(f.num, var = c('x' = 2,'y' = 3, 'z' = 45), accuracy = 4, coordinates = 'spherical')
#   y <- hessian(f.sym, var = c('x' = 2,'y' = 3, 'z' = 45), coordinates = 'spherical')
#   expect_equal(x[1,,],y) & expect_equal(x[2,,],y)
# })

# test_that("202012131941", {
#   f.num <- function(x) x[1]^1*x[2]^2*x[3]^3
#   f.sym <- 'x^1*y^2*z^3'
#   x <- hessian(f.num, var = c(2, 3, 45), accuracy = 4, coordinates = 'spherical')
#   y <- hessian(f.sym, var = c('x' = 2,'y' = 3, 'z' = 45), coordinates = 'spherical')
#   expect_equal(x,y)
# })

test_that("202012132005", {
  f <- function(x) x
  x <- hessian(f, 1)
  y <- matrix(0)
  expect_equal(x,y)
})

test_that("202012141710", {
  f <- function(x, extra) if(extra) x
  x <- hessian(f, 1, params = list(extra = TRUE))
  y <- matrix(0)
  expect_equal(x,y)
})

test_that("202012302350", {
  f.num <- function(x, y) array(c(x^2*y^2, x, x^2, y), dim = c(2,2))
  f.sym <- array(c('a*x^2*y^2', 'b*x', 'x^2', 'y'), dim = c(2,2))
  x <- hessian(f.num, var = c('x' = 2,'y' = 3))
  y <- hessian(f.sym, var = c('x' = 2,'y' = 3), params = list(a = 1, b = 1))
  expect_equal(x,y)
})

Try the calculus package in your browser

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

calculus documentation built on March 31, 2023, 11:03 p.m.