1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.hipparchus.optim.nonlinear.vector.constrained;
18
19 import org.hipparchus.linear.MatrixUtils;
20 import org.hipparchus.linear.RealMatrix;
21 import org.hipparchus.linear.RealVector;
22 import org.junit.jupiter.api.Test;
23
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25
26 class VectorDifferentiableFunctionTest {
27
28 @Test
29 void testValue() {
30
31 final double[] x = new double[] { 2. };
32 final TestVectorDifferentiableFunction function = new TestVectorDifferentiableFunction();
33
34 final double[] actualValue = function.value(x);
35
36 final double expectedValueElement = x[0];
37 assertEquals(expectedValueElement, actualValue[0], 0);
38 }
39
40 @Test
41 void testGradient() {
42
43 final double[] x = new double[] { 2. };
44 final TestVectorDifferentiableFunction function = new TestVectorDifferentiableFunction();
45
46 final RealMatrix actualGradient = function.gradient(x);
47
48 final double expectedValueElement = 1.;
49 assertEquals(expectedValueElement, actualGradient.getEntry(0, 0), 0);
50 }
51
52 private static class TestVectorDifferentiableFunction implements VectorDifferentiableFunction {
53
54 @Override
55 public int dim() {
56 return 1;
57 }
58
59 @Override
60 public int dimY() {
61 return 1;
62 }
63
64 @Override
65 public RealVector value(RealVector x) {
66 return x;
67 }
68
69 @Override
70 public RealMatrix jacobian(RealVector x) {
71 return MatrixUtils.createRealIdentityMatrix(x.getDimension());
72 }
73 }
74
75 }