public void InfiniteGaussKronrodTest() { for (int i = -10; i < 10; i++) { Func <double, double> pdf = (x) => Normal.Derivative(x - i); Func <double, double> E = (x) => x *pdf(x); UFunction UE = (x) => x *pdf(x); double expected = Quadpack.Integrate(UE, Double.NegativeInfinity, Double.PositiveInfinity); double actual = InfiniteAdaptiveGaussKronrod.Integrate(E, Double.NegativeInfinity, Double.PositiveInfinity); Assert.AreEqual(expected, actual, 1e-3); Assert.AreEqual(i, actual, 1e-3); } }
public void InfiniteGaussKronrodTest() { NormalDistribution norm; for (int i = -10; i < 10; i++) { norm = new NormalDistribution(i, 1); Func <double, double> E = (x) => x *norm.ProbabilityDensityFunction(x); UFunction UE = (x) => x *norm.ProbabilityDensityFunction(x); double expected = Quadpack.Integrate(UE, Double.NegativeInfinity, Double.PositiveInfinity); double actual = InfiniteAdaptiveGaussKronrod.Integrate(E, Double.NegativeInfinity, Double.PositiveInfinity); Assert.AreEqual(expected, actual, 1e-3); Assert.AreEqual(norm.Mean, actual, 1e-3); } }