-
Notifications
You must be signed in to change notification settings - Fork 77
/
Copy pathcheck_derivative.jl
29 lines (25 loc) · 1.96 KB
/
check_derivative.jl
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
@test check_derivative(x -> sin(x), x -> cos(x), 0.0) < 10e-4
@test check_derivative(x -> sin(x), x -> cos(x), 1.0) < 10e-4
@test check_derivative(x -> sin(x), x -> cos(x), 10.0) < 10e-4
@test check_derivative(x -> sin(x), x -> cos(x), 100.0) < 10e-4
@test check_derivative(x -> sin(x), x -> cos(x), 1000.0) < 10e-4
@test check_gradient(x -> sin(x[1]) + cos(x[2]), x -> [cos(x[1]), -sin(x[2])], [0.0, 0.0]) < 10e-4
@test check_gradient(x -> sin(x[1]) + cos(x[2]), x -> [cos(x[1]), -sin(x[2])], [1.0, 1.0]) < 10e-4
@test check_gradient(x -> sin(x[1]) + cos(x[2]), x -> [cos(x[1]), -sin(x[2])], [10.0, 10.0]) < 10e-4
@test check_gradient(x -> sin(x[1]) + cos(x[2]), x -> [cos(x[1]), -sin(x[2])], [100.0, 100.0]) < 10e-4
@test check_gradient(x -> sin(x[1]) + cos(x[2]), x -> [cos(x[1]), -sin(x[2])], [1000.0, 1000.0]) < 10e-4
@test check_second_derivative(x -> sin(x), x -> -sin(x), 0.0) < 10e-4
@test check_second_derivative(x -> sin(x), x -> -sin(x), 1.0) < 10e-4
@test check_second_derivative(x -> sin(x), x -> -sin(x), 10.0) < 10e-4
@test check_second_derivative(x -> sin(x), x -> -sin(x), 100.0) < 10e-4
@test check_second_derivative(x -> sin(x), x -> -sin(x), 1000.0) < 10e-4
@test check_hessian(x -> sin(x[1]) + cos(x[2]), x -> [-sin(x[1]) 0.0; 0.0 -cos(x[2])], [0.0, 0.0]) < 10e-4
@test check_hessian(x -> sin(x[1]) + cos(x[2]), x -> [-sin(x[1]) 0.0; 0.0 -cos(x[2])], [1.0, 1.0]) < 10e-4
@test check_hessian(x -> sin(x[1]) + cos(x[2]), x -> [-sin(x[1]) 0.0; 0.0 -cos(x[2])], [10.0, 10.0]) < 10e-4
@test check_hessian(x -> sin(x[1]) + cos(x[2]), x -> [-sin(x[1]) 0.0; 0.0 -cos(x[2])], [100.0, 100.0]) < 10e-4
@test check_hessian(x -> sin(x[1]) + cos(x[2]), x -> [-sin(x[1]) 0.0; 0.0 -cos(x[2])], [1000.0, 1000.0]) < 10e-4
# Test functionality for other AbstractArray types
@test check_gradient(x -> sin(x[1]) + cos(x[2]), x -> [cos(x[1]), -sin(x[2])],
sub([0.0, 0.0],:)) < 10e-4
@test check_hessian(x -> sin(x[1]) + cos(x[2]), x -> [-sin(x[1]) 0.0; 0.0 -cos(x[2])],
sub([0.0, 0.0],:)) < 10e-4