1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.math4.legacy.analysis.integration.gauss;
18
19 import org.apache.commons.math4.legacy.analysis.UnivariateFunction;
20 import org.apache.commons.math4.core.jdkmath.JdkMath;
21 import org.junit.Test;
22 import org.junit.Assert;
23
24
25
26
27
28 public class HermiteTest {
29 private static final GaussIntegratorFactory factory = new GaussIntegratorFactory();
30
31 @Test
32 public void testNormalDistribution() {
33 final double oneOverSqrtPi = 1 / JdkMath.sqrt(Math.PI);
34
35
36
37 final int numPoints = 1;
38
39
40
41
42
43
44
45 final UnivariateFunction f = new UnivariateFunction() {
46 @Override
47 public double value(double y) {
48 return oneOverSqrtPi;
49 }
50 };
51
52 final GaussIntegrator integrator = factory.hermite(numPoints);
53 final double result = integrator.integrate(f);
54 final double expected = 1;
55 Assert.assertEquals(expected, result, Math.ulp(expected));
56 }
57
58 @Test
59 public void testNormalMean() {
60 final double sqrtTwo = JdkMath.sqrt(2);
61 final double oneOverSqrtPi = 1 / JdkMath.sqrt(Math.PI);
62
63 final double mu = 12345.6789;
64 final double sigma = 987.654321;
65 final int numPoints = 5;
66
67
68
69
70
71
72
73 final UnivariateFunction f = new UnivariateFunction() {
74 @Override
75 public double value(double y) {
76 return oneOverSqrtPi * (sqrtTwo * sigma * y + mu);
77 }
78 };
79
80 final GaussIntegrator integrator = factory.hermite(numPoints);
81 final double result = integrator.integrate(f);
82 final double expected = mu;
83 Assert.assertEquals(expected, result, Math.ulp(expected));
84 }
85
86 @Test
87 public void testNormalVariance() {
88 final double twoOverSqrtPi = 2 / JdkMath.sqrt(Math.PI);
89
90 final double sigma = 987.654321;
91 final double sigma2 = sigma * sigma;
92 final int numPoints = 5;
93
94
95
96
97
98
99
100 final UnivariateFunction f = new UnivariateFunction() {
101 @Override
102 public double value(double y) {
103 return twoOverSqrtPi * sigma2 * y * y;
104 }
105 };
106
107 final GaussIntegrator integrator = factory.hermite(numPoints);
108 final double result = integrator.integrate(f);
109 final double expected = sigma2;
110 Assert.assertEquals(expected, result, 10 * Math.ulp(expected));
111 }
112 }