File: grad01.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 (51 lines) | stat: -rw-r--r-- 1,727 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
39
40
41
42
43
44
45
46
47
48
49
50
51
if(!require("numDeriv"))stop("this test requires numDeriv.")

###################################################################
#  sin test. scalar valued function with scalar arg
###################################################################

print(g.anal  <-  cos(pi))

print(g.calcR <-  grad(sin, pi, method="Richardson"))
cat("error: ", err <- max(abs(g.calcR - g.anal)),"\n")
if(err > 1e-11) stop("grad01 test 1 FAILED") # 1e-13 with d=0.01

print(g.calcS <-   grad(sin, pi, method="simple"))
cat("error: ", err <- max(abs(g.calcS - g.anal)),"\n")
if(err > 1e-8) stop("grad01 test 2 FAILED")


###################################################################
#  sin test. vector argument, scalar result
###################################################################

func2a <- function(x) sum(sin(x))

x <- (0:10)*2*pi/10
print(g.anal  <- cos(x))

print(g.calcR <- grad(func2a, x, method="Richardson"))
cat("error: ", err <- max(abs(g.calcR - g.anal)),"\n")
if(err > 1e-10) stop("grad01 test 3 FAILED")

print(g.calcS <- grad(func2a, x, method="simple"))
cat("error: ", err <- max(abs(g.calcS - g.anal)),"\n")
if(err > 1e-4) stop("grad01 test 4 FAILED")


###################################################################
#  sin test. vector argument, vector result
###################################################################

x <- (0:10)*2*pi/10
print(g.anal <-  cos(x))

print(g.calcR <-  grad(sin, x, method="Richardson"))
cat("error: ", err <- max(abs(g.calcR - g.anal)),"\n")
if(err > 1e-10) stop("grad01 test 5 FAILED")# 1e-12 with d=0.01

print(g.calcS <-   grad(sin, x, method="simple"))
cat("error: ", err <- max(abs(g.calcS - g.anal)),"\n")
if(err > 1e-4) stop("grad01 test 6 FAILED")