|
2 | 2 | # Derivatives of f: R -> R
|
3 | 3 | #
|
4 | 4 |
|
5 |
| -@assert norm(Calculus.finite_difference(x -> x^2, 1.0, :forward) - 2.0) < 10e-4 |
6 |
| -@assert norm(Calculus.finite_difference(x -> x^2, 1.0, :central) - 2.0) < 10e-4 |
7 |
| -@assert norm(Calculus.finite_difference(x -> x^2, 1.0) - 2.0) < 10e-4 |
| 5 | +@test norm(Calculus.finite_difference(x -> x^2, 1.0, :forward) - 2.0) < 10e-4 |
| 6 | +@test norm(Calculus.finite_difference(x -> x^2, 1.0, :central) - 2.0) < 10e-4 |
| 7 | +@test norm(Calculus.finite_difference(x -> x^2, 1.0) - 2.0) < 10e-4 |
8 | 8 |
|
9 |
| -@assert norm(Calculus.finite_difference(x -> sin(x), 1.0, :forward) - cos(1.0)) < 10e-4 |
10 |
| -@assert norm(Calculus.finite_difference(x -> sin(x), 1.0, :central) - cos(1.0)) < 10e-4 |
11 |
| -@assert norm(Calculus.finite_difference(x -> sin(x), 1.0) - cos(1.0)) < 10e-4 |
| 9 | +@test norm(Calculus.finite_difference(x -> sin(x), 1.0, :forward) - cos(1.0)) < 10e-4 |
| 10 | +@test norm(Calculus.finite_difference(x -> sin(x), 1.0, :central) - cos(1.0)) < 10e-4 |
| 11 | +@test norm(Calculus.finite_difference(x -> sin(x), 1.0) - cos(1.0)) < 10e-4 |
12 | 12 |
|
13 |
| -@assert norm(Calculus.finite_difference(x -> exp(-x), 1.0, :forward) - (-exp(-1.0))) < 10e-4 |
14 |
| -@assert norm(Calculus.finite_difference(x -> exp(-x), 1.0, :central) - (-exp(-1.0))) < 10e-4 |
15 |
| -@assert norm(Calculus.finite_difference(x -> exp(-x), 1.0) - (-exp(-1.0))) < 10e-4 |
| 13 | +@test norm(Calculus.finite_difference(x -> exp(-x), 1.0, :forward) - (-exp(-1.0))) < 10e-4 |
| 14 | +@test norm(Calculus.finite_difference(x -> exp(-x), 1.0, :central) - (-exp(-1.0))) < 10e-4 |
| 15 | +@test norm(Calculus.finite_difference(x -> exp(-x), 1.0) - (-exp(-1.0))) < 10e-4 |
16 | 16 |
|
17 | 17 | #
|
18 | 18 | # Gradients of f: R^n -> R
|
19 | 19 | #
|
20 | 20 |
|
21 |
| -@assert norm(Calculus.finite_difference(x -> x[1]^2, [1.0], :forward) - [2.0]) < 10e-4 |
22 |
| -@assert norm(Calculus.finite_difference(x -> x[1]^2, [1.0], :central) - [2.0]) < 10e-4 |
23 |
| -@assert norm(Calculus.finite_difference(x -> x[1]^2, [1.0]) - [2.0]) < 10e-4 |
| 21 | +@test norm(Calculus.finite_difference(x -> x[1]^2, [1.0], :forward) - [2.0]) < 10e-4 |
| 22 | +@test norm(Calculus.finite_difference(x -> x[1]^2, [1.0], :central) - [2.0]) < 10e-4 |
| 23 | +@test norm(Calculus.finite_difference(x -> x[1]^2, [1.0]) - [2.0]) < 10e-4 |
24 | 24 |
|
25 |
| -@assert norm(Calculus.finite_difference(x -> sin(x[1]), [1.0], :forward) - [cos(1.0)]) < 10e-4 |
26 |
| -@assert norm(Calculus.finite_difference(x -> sin(x[1]), [1.0], :central) - [cos(1.0)]) < 10e-4 |
27 |
| -@assert norm(Calculus.finite_difference(x -> sin(x[1]), [1.0]) - [cos(1.0)]) < 10e-4 |
| 25 | +@test norm(Calculus.finite_difference(x -> sin(x[1]), [1.0], :forward) - [cos(1.0)]) < 10e-4 |
| 26 | +@test norm(Calculus.finite_difference(x -> sin(x[1]), [1.0], :central) - [cos(1.0)]) < 10e-4 |
| 27 | +@test norm(Calculus.finite_difference(x -> sin(x[1]), [1.0]) - [cos(1.0)]) < 10e-4 |
28 | 28 |
|
29 |
| -@assert norm(Calculus.finite_difference(x -> exp(-x[1]), [1.0], :forward) - [-exp(-1.0)]) < 10e-4 |
30 |
| -@assert norm(Calculus.finite_difference(x -> exp(-x[1]), [1.0], :central) - [-exp(-1.0)]) < 10e-4 |
31 |
| -@assert norm(Calculus.finite_difference(x -> exp(-x[1]), [1.0]) - [-exp(-1.0)]) < 10e-4 |
| 29 | +@test norm(Calculus.finite_difference(x -> exp(-x[1]), [1.0], :forward) - [-exp(-1.0)]) < 10e-4 |
| 30 | +@test norm(Calculus.finite_difference(x -> exp(-x[1]), [1.0], :central) - [-exp(-1.0)]) < 10e-4 |
| 31 | +@test norm(Calculus.finite_difference(x -> exp(-x[1]), [1.0]) - [-exp(-1.0)]) < 10e-4 |
32 | 32 |
|
33 | 33 | #
|
34 | 34 | # Second derivatives of f: R -> R
|
35 | 35 | #
|
36 | 36 |
|
37 |
| -@assert norm(Calculus.finite_difference_hessian(x -> x^2, x -> 2 * x, 1.0) - 2.0) < 10e-4 |
38 |
| -@assert norm(Calculus.finite_difference_hessian(x -> x^2, x -> 2 * x, 10.0) - 2.0) < 10e-4 |
39 |
| -@assert norm(Calculus.finite_difference_hessian(x -> x^2, x -> 2 * x, 100.0) - 2.0) < 10e-4 |
| 37 | +@test norm(Calculus.finite_difference_hessian(x -> x^2, x -> 2 * x, 1.0) - 2.0) < 10e-4 |
| 38 | +@test norm(Calculus.finite_difference_hessian(x -> x^2, x -> 2 * x, 10.0) - 2.0) < 10e-4 |
| 39 | +@test norm(Calculus.finite_difference_hessian(x -> x^2, x -> 2 * x, 100.0) - 2.0) < 10e-4 |
40 | 40 |
|
41 |
| -@assert norm(Calculus.finite_difference_hessian(x -> x^2, 1.0) - 2.0) < 10e-4 |
42 |
| -@assert norm(Calculus.finite_difference_hessian(x -> x^2, 10.0) - 2.0) < 10e-4 |
43 |
| -@assert norm(Calculus.finite_difference_hessian(x -> x^2, 100.0) - 2.0) < 10e-4 |
| 41 | +@test norm(Calculus.finite_difference_hessian(x -> x^2, 1.0) - 2.0) < 10e-4 |
| 42 | +@test norm(Calculus.finite_difference_hessian(x -> x^2, 10.0) - 2.0) < 10e-4 |
| 43 | +@test norm(Calculus.finite_difference_hessian(x -> x^2, 100.0) - 2.0) < 10e-4 |
44 | 44 |
|
45 | 45 | #
|
46 | 46 | # Hessians of f: R^n -> R
|
47 | 47 | #
|
48 | 48 |
|
49 | 49 | fx(x) = sin(x[1]) + cos(x[2])
|
50 | 50 | gx = gradient(fx)
|
51 |
| -@assert norm(gx([0.0, 0.0]) - [cos(0.0), -sin(0.0)]) < 10e-4 |
52 |
| -@assert norm(Calculus.finite_difference_hessian(fx, gx, [0.0, 0.0], :central) - [-sin(0.0) 0.0; 0.0 -cos(0.0)]) < 10e-4 |
53 |
| -@assert norm(Calculus.finite_difference_hessian(fx, [0.0, 0.0]) - [-sin(0.0) 0.0; 0.0 -cos(0.0)]) < 10e-4 |
| 51 | +@test norm(gx([0.0, 0.0]) - [cos(0.0), -sin(0.0)]) < 10e-4 |
| 52 | +@test norm(Calculus.finite_difference_hessian(fx, gx, [0.0, 0.0], :central) - [-sin(0.0) 0.0; 0.0 -cos(0.0)]) < 10e-4 |
| 53 | +@test norm(Calculus.finite_difference_hessian(fx, [0.0, 0.0]) - [-sin(0.0) 0.0; 0.0 -cos(0.0)]) < 10e-4 |
54 | 54 |
|
55 | 55 | #
|
56 | 56 | # Taylor Series first derivatives
|
57 | 57 | #
|
58 | 58 |
|
59 |
| -@assert norm(Calculus.taylor_finite_difference(x -> x^2, 1.0, :forward) - 2.0) < 10e-4 |
60 |
| -@assert norm(Calculus.taylor_finite_difference(x -> x^2, 1.0, :central) - 2.0) < 10e-4 |
| 59 | +@test norm(Calculus.taylor_finite_difference(x -> x^2, 1.0, :forward) - 2.0) < 10e-4 |
| 60 | +@test norm(Calculus.taylor_finite_difference(x -> x^2, 1.0, :central) - 2.0) < 10e-4 |
61 | 61 |
|
62 | 62 | #
|
63 | 63 | # Taylor Series second derivatives
|
|
0 commit comments