File: jacobian01.R

package info (click to toggle)
r-cran-numderiv 2016.8-1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 232 kB
  • sloc: makefile: 2
file content (38 lines) | stat: -rw-r--r-- 1,345 bytes parent folder | download | duplicates (4)
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
#  check jacobian

if(!require("numDeriv"))stop("this test requires numDeriv.")

x <- pi
print(j.calc <- jacobian(sin, x))
cat("error: ", err <- max(abs(j.calc - cos(x))),"\n")
if( err > 1e-11) stop("jacobian matrix test 1 FAILED") # 1e-13 with d=0.01

x <- (1:2)*2*pi/2
print(j.calc <- jacobian(sin, x))
cat("error: ", err <- max(abs(j.calc -  diag(cos(x)))),"\n")
if( err > 1e-11) stop("jacobian matrix test 2 FAILED") # 1e-13 with d=0.01

func2 <- function(x) c(sin(x), cos(x))

x <- (1:2)*2*pi/2
print(j.calc <- jacobian(func2, x))
cat("error: ", err <- max(abs(j.calc - rbind(diag(cos(x)), diag(-sin(x))))),"\n")
if( err > 1e-11) stop("jacobian matrix test 3 FAILED") # 1e-13 with d=0.01

x <- (0:1)*2*pi
print(j.calc <- jacobian(func2, x))
cat("error: ", err <- max(abs(j.calc - rbind(diag(cos(x)), diag(-sin(x))))),"\n")
if( err > 1e-11) stop("jacobian matrix test 4 FAILED") # 1e-13 with d=0.01


x <- (0:10)*2*pi/10
print(j.calc <- jacobian(func2, x))
cat("error: ", err <- max(abs(j.calc - rbind(diag(cos(x)), diag(-sin(x))))),"\n")
if( err > 1e-10) stop("jacobian matrix test 5 FAILED")# 1e-12 with d=0.01

func3 <- function(x) sum(sin(x)) # R^n -> R

x <- (1:2)*2*pi/2
print(j.calc <- jacobian(func3, x))
cat("error: ", err <- max(abs(j.calc - cos(x))),"\n")
if( err > 1e-11) stop("jacobian matrix test 6 FAILED")# 1e-13 with d=0.01