public void TestMethod()
        {
            /*
             * Exponential distribution.
             */

            PIDebug.TitleBig("Exponential distribution (1)");

            PIExponentialDistribution distribution = new PIExponentialDistribution();

            /* -- 1) Get probability */

            PIDebug.Title("1) Get probability for X");

            /* lambda=1 */
            PIDebug.Title("..lambda=1");

            Console.WriteLine("Probability for x=0.0 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(0.0, distribution.GetProbability(0.0), 0.001);
            Console.WriteLine("Probability for x=1.0 : " + distribution.GetProbability(1.0));
            Assert.AreEqual(0.632, distribution.GetProbability(1.0), 0.001);
            Console.WriteLine("Probability for x=2.0 : " + distribution.GetProbability(2.0));
            Assert.AreEqual(0.864, distribution.GetProbability(2.0), 0.001);
            Console.WriteLine("Probability for x=3.0 : " + distribution.GetProbability(3.0));
            Assert.AreEqual(0.950, distribution.GetProbability(3.0), 0.001);
            Console.WriteLine("Probability for x=5.0 : " + distribution.GetProbability(5.0));
            Assert.AreEqual(0.9932, distribution.GetProbability(5.0), 0.001);

            /* -- 2) Get T for probability */

            PIDebug.Title("2) Get X for probability", true);

            /* lambda=1  */
            PIDebug.Title("..lambda=1");

            Console.WriteLine("X value for probability for prob=0.0 : " + distribution.GetXForProbability(0.0));
            Assert.AreEqual(0.0, distribution.GetXForProbability(0.0), 0.001);
            Console.WriteLine("X value for probability for prob=0.632 : " + distribution.GetXForProbability(0.632));
            Assert.AreEqual(1.0, distribution.GetXForProbability(0.632), 0.001);
            Console.WriteLine("X value for probability for prob=0.864 : " + distribution.GetXForProbability(0.864));
            Assert.AreEqual(2.0, distribution.GetXForProbability(0.864), 0.01);
            Console.WriteLine("X value for probability for prob=0.950 : " + distribution.GetXForProbability(0.950));
            Assert.AreEqual(3.0, distribution.GetXForProbability(0.950), 0.01);
            Console.WriteLine("X value for probability for prob=0.9932 : " + distribution.GetXForProbability(0.9932));
            Assert.AreEqual(5.0, distribution.GetXForProbability(0.9932), 0.01);

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density, lambda=1", true);

            Console.WriteLine("x=0.1 : " + distribution.GetPDF(0.1));
            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=1.0 : " + distribution.GetPDF(1.0));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=5.0 : " + distribution.GetPDF(5.0));
        }
示例#2
0
        public void TestMethod()
        {
            /* -- source 3f */

            PIDebug.TitleBig("Power regression");

            /* change decimal places count in formulas */
            PIConfiguration.REGRESSION_DECIMAL_PLACES = 6;

            /* - prepare X data for regression */

            PIVariable X = new PIVariable();

            Assert.IsNotNull(X);

            X.AddValues(new double[] { 17.6, 26.0, 31.9, 38.9, 45.8 });
            X.AddValues(new double[] { 51.2, 58.1, 64.7, 66.7, 80.8, 82.9 });

            /* - prepare Y data for regression */

            PIVariable Y = new PIVariable();

            Assert.IsNotNull(Y);

            Y.AddValues(new double[] { 159.9, 206.9, 236.8, 269.9, 300.6 });
            Y.AddValues(new double[] { 323.6, 351.7, 377.6, 384.1, 437.2, 444.7 });

            /* - create and compute regression */

            PIPowerRegression regression = new PIPowerRegression(X, Y);

            Assert.IsNotNull(regression);

            regression.Calc();

            Console.WriteLine(regression.GetTextFormula());
            Console.WriteLine(regression.GetTextFormulaFilled());

            Assert.AreEqual((double)24.129, (double)regression.Get_A(), 0.001);
            Assert.AreEqual((double)0.659, (double)regression.Get_B(), 0.001);

            /* - calc prediction for X = 3.5 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=40 : " + regression.CalcPredictedY(40.0));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(regression.GetErrors().AsString(5));

            PIDebug.Blank();
            Console.WriteLine("R2 = " + regression.GetXYR2());
        }
示例#3
0
        public void TestMethod()
        {
            /* Source 6I. */

            PIDebug.TitleBig("Prime factorization - Fermat algorithm");

            FactorizeItem(123);
            FactorizeItem(501);
            Assert.AreEqual(3, factorization.Result.GetValue(0));
            Assert.AreEqual(167, factorization.Result.GetValue(1));
            FactorizeItem(54869);
            FactorizeItem(45486857);
            FactorizeItem(454868571);
        }
示例#4
0
        public void TestMethod()
        {
            /* -- source 3d/19 */

            PIDebug.TitleBig("Exponential modified regression");

            /* change decimal places count in formulas */
            PIConfiguration.REGRESSION_DECIMAL_PLACES = 6;

            /* - prepare X data for exponential modified regression */

            PIVariable X = new PIVariable();

            Assert.IsNotNull(X);

            X.AddValues(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });

            /* - prepare Y data for exponential modified regression */

            PIVariable Y = new PIVariable();

            Assert.IsNotNull(Y);

            Y.AddValues(new double[] { 57.2, 62.8, 72.2, 81.5, 91.6, 97.1, 99.9, 100.4, 100.6 });

            /* - create and compute regression */

            PIExponentialModifiedRegression regression = new PIExponentialModifiedRegression(X, Y);

            Assert.IsNotNull(regression);

            regression.Calc();

            Console.WriteLine(regression.GetTextFormula());
            Console.WriteLine(regression.GetTextFormulaFilled());

            Assert.AreEqual((double)106.941, (double)regression.Get_gama(), 0.001);
            Assert.AreEqual((double)-77.322, (double)regression.Get_A(), 0.001);
            Assert.AreEqual((double)0.732, (double)regression.Get_B(), 0.001);

            /* - calc prediction for X = 5 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=5 : " + regression.CalcPredictedY(5.0));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(regression.GetErrors().AsString(5));
        }
示例#5
0
        public void TestMethod()
        {
            /* -- source 3a/113 */

            PIDebug.TitleBig("Exponential regression");

            /* change decimal places count in formulas */
            PIConfiguration.REGRESSION_DECIMAL_PLACES = 6;

            /* - prepare X data for exponential regression */

            PIVariable X = new PIVariable();

            Assert.IsNotNull(X);

            X.AddValues(new int[] { 0, 1, 2, 3, 4, 5 });

            /* - prepare Y data for exponential regression */

            PIVariable Y = new PIVariable();

            Assert.IsNotNull(Y);

            Y.AddValues(new int[] { 3, 7, 10, 24, 50, 95 });

            /* - create and compute regression */

            PIExponentialRegression ExponentialRegression = new PIExponentialRegression(X, Y);

            Assert.IsNotNull(ExponentialRegression);

            ExponentialRegression.Calc();

            Console.WriteLine(ExponentialRegression.GetTextFormula());
            Console.WriteLine(ExponentialRegression.GetTextFormulaFilled());

            Assert.AreEqual((double)3.046, (double)ExponentialRegression.Get_A(), 0.001);
            Assert.AreEqual((double)1.988, (double)ExponentialRegression.Get_B(), 0.001);

            /* - calc prediction for X = 3.5 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=3.5 : " + ExponentialRegression.CalcPredictedY(3.5));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(ExponentialRegression.GetErrors().AsString(5));
        }
        public void TestMethod()
        {
            PIDebug.TitleBig("Beta function");

            Console.WriteLine("Beta x=1, y=1 = " + PIBeta.Calc(1, 1));
            Assert.AreEqual(1.0, PIBeta.Calc(1, 1), 0.00001);

            Console.WriteLine("Beta x=2, y=2 = " + PIBeta.Calc(2, 2));
            Assert.AreEqual(0.16667, PIBeta.Calc(2, 2), 0.00001);

            Console.WriteLine("Beta x=3, y=5 = " + PIBeta.Calc(3, 5));
            Assert.AreEqual(0.0095238, PIBeta.Calc(3, 5), 0.00001);

            Console.WriteLine("Beta x=7, y=8 = " + PIBeta.Calc(7, 8));
            Assert.AreEqual(0.000041625, PIBeta.Calc(7, 8), 0.00001);
        }
示例#7
0
        public void TestMethod()
        {
            /* Source 6I. */

            PIDebug.TitleBig("Prime factorization");

            FactorizeItem(2);
            FactorizeItem(123);
            FactorizeItem(500);
            FactorizeItem(54868);
            FactorizeItem(45486857);
            FactorizeItem(454868572);
            Assert.AreEqual(2, factorization.Result.GetValue(0));
            Assert.AreEqual(2, factorization.Result.GetValue(1));
            Assert.AreEqual(5743, factorization.Result.GetValue(2));
            Assert.AreEqual(19801, factorization.Result.GetValue(3));
        }
        public void TestMethod()
        {
            PIDebug.TitleBig("Gamma function");

            Console.WriteLine("Gamma x=0.3 => " + PIGamma.Calc(0.3));
            Assert.AreEqual(2.9915, (double)PIGamma.Calc(0.3), 0.0001);

            Console.WriteLine("Gamma x=1.0 => " + PIGamma.Calc(1.0));
            Assert.AreEqual(1.0, (double)PIGamma.Calc(1.0), 0.0001);

            Console.WriteLine("Gamma x=2.23 => " + PIGamma.Calc(2.23));
            Assert.AreEqual(1.1202, (double)PIGamma.Calc(2.23), 0.0001);

            Console.WriteLine("Gamma x=24.0 => " + PIGamma.Calc(24.0));
            Assert.AreEqual(2.585201673888503E22, (double)PIGamma.Calc(24.0), 0.0001);

            Console.WriteLine("Gamma x=25.5 => " + PIGamma.Calc(25.5));
            Assert.AreEqual(3.086770540528693E24, (double)PIGamma.Calc(25.5), 0.0001);
        }
示例#9
0
        public void TestMethod()
        {
            PIDebug.TitleBig("Numeric integration - Simpson`s method");

            PIDebug.TitleBig("Sin(x)^2 from 0..PI");

      #pragma warning disable IDE0017 // Simplify object initialization
            PINumericalIntegrationSimpson integration = new PINumericalIntegrationSimpson(0, Math.PI);
      #pragma warning restore IDE0017 // Simplify object initialization

            //integration.Expression = (x) => { return Math.Exp(1) - ( x*x); };
            integration.Expression = (x) => { return(Math.Sqrt(x * x + 1)); };

            integration.Expression = (x) => { return(Math.Pow(Math.Sin(x), 2)); };
            integration.SetStepsCount(100);

            double value = integration.Calc();
            Assert.AreEqual(1.5707, value, 0.0001);
            Console.WriteLine(value);

            /* ----------------------- */

            /* Source: 6J6 */

            PIDebug.TitleBig("Sqrt(x^2 + 1 ) from 0..1", true);

            integration.Expression = (x) => { return(Math.Sqrt(x * x + 1)); };

            integration.A    = 0;
            integration.B    = 1;
            integration.Step = 0.125;

            value = integration.Calc();
            Assert.AreEqual(1.1477, value, 0.0001);
            Console.WriteLine(value);

            PIDebug.Blank();
            Console.WriteLine("X starting interval positions: " + integration.VarX.AsString(3));
            Console.WriteLine("Y values: " + integration.VarY.AsString(3));
            Console.WriteLine("Y values cumulative: " + integration.VarYCumulative.AsString(3));
        }
        public void TestMethod()
        {
            /* Source 6G. */

            PIDebug.TitleBig("Error function");

            Console.WriteLine("Complementary error x=0.35 = " + PIError.Erfc(0.35));
            Assert.AreEqual(0.6206, PIError.Erfc(0.35), 0.001);

            Console.WriteLine("Complementary error x=0.72 = " + PIError.Erfc(0.72));
            Assert.AreEqual(0.3038, PIError.Erfc(0.72), 0.01);

            Console.WriteLine("Complementary error x=-0.5 = " + PIError.Erfc(-0.5));
            Assert.AreEqual(1.5205, PIError.Erfc(-0.5), 0.0001);

            Console.WriteLine("Complementary error x=0.0 = " + PIError.Erfc(0.0));
            Assert.AreEqual(1.0, PIError.Erfc(0.0), 0.0001);

            Console.WriteLine("Complementary error x=1.0 = " + PIError.Erfc(1.0));
            Assert.AreEqual(0.1572, PIError.Erfc(1.0), 0.0001);
        }
        public void TestMethod()
        {
            /* Source 9D4/1. */

            PIDebug.TitleBig("Shapiro-Wilk (expanded) test, 9D4,1");

            PIVariable var = new PIVariable();

            var.AddValues(new int[] { 65, 61, 63, 86, 70, 55, 74, 35, 72, 68, 45, 58 });

            PIShapiroWilkExpanded test = new PIShapiroWilkExpanded(var);

            test.Evaluate();

            Console.WriteLine("W value = " + test.W);
            Console.WriteLine("Z value = " + test.Z);
            Console.WriteLine("p-value = " + test.PValue);
            Console.WriteLine(test.ToString());

            Assert.AreEqual(0.9216, test.PValue, 0.001);

            /* Source 9D4/2. */

            PIDebug.TitleBig("Shapiro-Wilk (expanded) test, 9D4,2", true);

            PIVariable var1 = new PIVariable();

            var1.AddValues(new int[] { 12, 27, 18, 23, 72, 27, 27, 53, 3, 45, 53, 125, 50 });

            PIShapiroWilkExpanded test1 = new PIShapiroWilkExpanded(var1);

            test1.Evaluate();

            Console.WriteLine("W value = " + test1.W);
            Console.WriteLine("Z value = " + test1.Z);
            Console.WriteLine("p-value = " + test1.PValue);
            Console.WriteLine(test1.ToString());

            Assert.AreEqual(0.0440, test1.PValue, 0.001);
        }
        public void TestMethod()
        {
            /* Source 9D1/1. */

            PIDebug.TitleBig("Shapiro-Wilk (original) test, 9D1/1");

            PIVariable var = new PIVariable();

            var.AddValues(new int[] { 65, 61, 63, 86, 70, 55, 74, 35, 72, 68, 45, 58 });

            PIShapiroWilk test = new PIShapiroWilk(var);

            test.Evaluate();

            Console.WriteLine("W value = " + test.W);
            Console.WriteLine("p-value = " + test.PValue);
            Console.WriteLine(test.ToString());

            Assert.AreEqual(0.8736, test.PValue, 0.001);

            /* Source 9D1/2. */

            PIDebug.TitleBig("Shapiro-Wilk (original) test, 9D1/2", true);

            PIVariable var1 = new PIVariable();

            var1.AddValues(new double[] { 1.2, 1.6, 1.8, 1.9, 1.9, 2.0, 2.2, 2.6, 3.0, 3.5, 4.0, 4.8, 5.6, 6.6, 7.6 });

            PIShapiroWilk test1 = new PIShapiroWilk(var1);

            test1.Evaluate();

            Console.WriteLine("W value = " + test1.W);
            Console.WriteLine("p-value = " + test1.PValue);
            Console.WriteLine(test1.ToString());

            Assert.AreEqual(0.0418, test1.PValue, 0.001);
        }
        public void TestMethod()
        {
            /* Source 9D8. */

            PIDebug.TitleBig("Jarque-Bera test of normality, 9D8");

            PIVariable var = new PIVariable();

            var.AddValues(new int[] { 56, 58, 60, 64, 54, 52, 50, 40, 57, 53,
                                      65, 50, 53, 52, 66, 45, 55, 54, 65, 56,
                                      55, 57, 48, 63, 51, 55, 44, 58, 54, 60 });
            //var.SaveToFile( @"c:\\tmp\var.txt" );

            PIJarqueBera test = new PIJarqueBera(var);

            test.Evaluate();

            Console.WriteLine("Z value = " + test.Z);
            Console.WriteLine("p-value = " + test.PValue);
            Console.WriteLine(test.ToString());

            Assert.AreEqual(0.2487, test.Z, 0.001);
        }
示例#14
0
        public void TestMethod()
        {
            /* Source 9D4/1. */

            PIDebug.TitleBig("D`Agostino-Pearson test of normality, 9D7");

            PIVariable var = new PIVariable();

            var.AddValues(new int[] { 34, 56, 39, 71, 84, 92, 44, 67, 98, 49, 55, 73,
                                      50, 62, 75, 44, 88, 53, 61, 25, 36, 66, 77, 35 });

            PIDAgostinoPearson test = new PIDAgostinoPearson(var);

            test.Evaluate();

            Console.WriteLine("Z value = " + test.Z);
            Console.WriteLine("p-value = " + test.PValue);
            Console.WriteLine(test.ToString());

            Assert.AreEqual(0.6362, test.PValue, 0.001);

            /* Data source 9D4/2. This test with Shapiro-Wilk (expanded) rejects normality, try it with this test. */

            PIDebug.TitleBig("D`Agostino-Pearson test of normality, data from 9D4,2", true);

            PIVariable var1 = new PIVariable();

            var1.AddValues(new int[] { 12, 27, 18, 23, 72, 27, 27, 53, 3, 45, 53, 125, 50 });

            PIDAgostinoPearson test1 = new PIDAgostinoPearson(var1);

            test1.Evaluate();

            Console.WriteLine("Z value = " + test1.Z);
            Console.WriteLine("p-value = " + test1.PValue);
            Console.WriteLine(test1.ToString());
        }
        public void TestMethod()
        {
            /*
             * MEDIAN SMOOTHING.
             *
             * Source 4k.
             *
             */

            PIDebug.TitleBig("Median smoothing");

            /* - prepare variable for source data */

            PIVariable var = new PIVariable();

            Assert.IsNotNull(var);

            var.AddValues(new int[] { 37, 45, 39, 48, 47, 57, 52, 49, 56, 59, 62 });

            /* - calc median smoothing, length = 3 */

            PIMedianSmoothing medianSmoothing = new PIMedianSmoothing(var);

            medianSmoothing.SetWindowLength(3);
            //medianSmoothing.setOuterValuesNull( true );
            medianSmoothing.Calc();

            /* - show results */

            Console.WriteLine(medianSmoothing.GetOutputVariable().AsString(2));

            Assert.AreEqual(39.0, (double)medianSmoothing.GetOutputVariable().GetValue(1));
            Assert.AreEqual(45.0, (double)medianSmoothing.GetOutputVariable().GetValue(2));
            Assert.AreEqual(47.0, (double)medianSmoothing.GetOutputVariable().GetValue(3));
            /* ... */
        }
        public void TestMethod()
        {
            /*
             * SIMPLE CENTERED MOVING AVERAGE
             *
             * Source 4i.
             *
             */

            PIDebug.TitleBig("Moving average - SIMPLE CENTERED (4)");

            /* - prepare variable for source data */

            PIVariable var = new PIVariable();

            Assert.IsNotNull(var);

            var.AddValues(new int[] { 9, 8, 9, 12, 9, 12, 11 });

            /* - calc CENTERED moving average, length = 4 */

            PIMovingAverageSmoothing MA = new PIMovingAverageSmoothing(var);

            MA.SetCalculationType(CalculationType.SIMPLE_CENTERED);
            MA.SetWindowLength(4);
            MA.Calc();

            /* - show results */

            Console.WriteLine(MA.GetOutputVariable().AsString(2));

            Assert.AreEqual(9.5, (double)MA.GetOutputVariable().GetValue(2));
            Assert.AreEqual(10.0, (double)MA.GetOutputVariable().GetValue(3));
            Assert.AreEqual(10.75, (double)MA.GetOutputVariable().GetValue(4));

            /*
             * SIMPLE MOVING AVERAGE.
             *
             * Source 4P - correction 1.1.4.
             *
             */

            PIDebug.TitleBig("Moving average - SIMPLE (3)", true);

            /* - calc SIMPLE moving average, length = 3 */

            PIVariable var1 = new PIVariable();

            Assert.IsNotNull(var1);

            var1.AddValues(new int[] { 3, 5, 9, 20, 12, 17, 22, 23, 51, 41, 56, 75, 60, 75, 88 });

            PIMovingAverageSmoothing MA1 = new PIMovingAverageSmoothing(var1);

            MA1.SetCalculationType(CalculationType.SIMPLE);
            MA1.SetWindowLength(3);
            MA1.Calc();

            /* - show results (3) */

            Console.WriteLine(MA1.GetOutputVariable().AsString(2));

            Console.WriteLine("MAE = " + MA1.GetMAE());
            Console.WriteLine("MSE = " + MA1.GetMSE());

            Assert.AreEqual(5.67, (double)MA1.GetOutputVariable().GetValue(3), 0.01);
            Assert.AreEqual(11.33, (double)MA1.GetOutputVariable().GetValue(4), 0.01);
            Assert.AreEqual(13.67, (double)MA1.GetOutputVariable().GetValue(5), 0.01);
        }
        public void TestMethod()
        {
            /*
             * F distribution.
             */

            PIDebug.TitleBig("F distribution");

            PIFDistribution distribution = new PIFDistribution();

            /* -- 1) Get probability */

            PIDebug.TitleBig("Get probability");

            /* DF1=1, DF2=1 */

            PIDebug.Title("..df1=1, df2=1");

            distribution.SetDF1(1);
            distribution.SetDF2(1);

            Console.WriteLine("Probability for x=0.0 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(1.0, distribution.GetProbability(0.0), 0.001);

            Console.WriteLine("Probability for x=39.86 : " + distribution.GetProbability(39.86));
            Assert.AreEqual(0.1, distribution.GetProbability(39.86), 0.001);

            Console.WriteLine("Probability for x=161.45 : " + distribution.GetProbability(161.45));
            Assert.AreEqual(0.05, distribution.GetProbability(161.45), 0.001);

            Console.WriteLine("Probability for x=4052.2 : " + distribution.GetProbability(4052.2));
            Assert.AreEqual(0.01, distribution.GetProbability(4052.2), 0.001);

            Console.WriteLine("Probability for x=405284 : " + distribution.GetProbability(405284));
            Assert.AreEqual(0.001, distribution.GetProbability(405284), 0.001);

            /* DF1=3, DF2=3 */

            PIDebug.Title("..df1=3, df2=3", true);

            distribution.SetDF1(3);
            distribution.SetDF2(3);

            Console.WriteLine("Probability for x=5.39 : " + distribution.GetProbability(5.39));
            Assert.AreEqual(0.1, distribution.GetProbability(5.39), 0.001);

            Console.WriteLine("Probability for x=9.28 : " + distribution.GetProbability(9.28));
            Assert.AreEqual(0.05, distribution.GetProbability(9.28), 0.001);

            Console.WriteLine("Probability for x=15.44 : " + distribution.GetProbability(15.44));
            Assert.AreEqual(0.025, distribution.GetProbability(15.44), 0.001);

            Console.WriteLine("Probability for x=29.46 : " + distribution.GetProbability(29.46));
            Assert.AreEqual(0.01, distribution.GetProbability(29.46), 0.001);

            Console.WriteLine("Probability for x=141.11 : " + distribution.GetProbability(141.11));
            Assert.AreEqual(0.001, distribution.GetProbability(141.11), 0.001);

            /* DF1=5, DF2=5 */

            PIDebug.Title("..df1=5, df2=5", true);

            distribution.SetDF1(5);
            distribution.SetDF2(5);

            Console.WriteLine("Probability for x=3.45 : " + distribution.GetProbability(3.45));
            Assert.AreEqual(0.1, distribution.GetProbability(3.45), 0.001);

            Console.WriteLine("Probability for x=5.05 : " + distribution.GetProbability(5.05));
            Assert.AreEqual(0.05, distribution.GetProbability(5.05), 0.001);

            Console.WriteLine("Probability for x=7.15 : " + distribution.GetProbability(7.15));
            Assert.AreEqual(0.025, distribution.GetProbability(7.15), 0.001);

            Console.WriteLine("Probability for x=10.97 : " + distribution.GetProbability(10.97));
            Assert.AreEqual(0.01, distribution.GetProbability(10.97), 0.001);

            Console.WriteLine("Probability for x=29.75 : " + distribution.GetProbability(29.75));
            Assert.AreEqual(0.001, distribution.GetProbability(29.75), 0.001);

            /* -- 2) Get X for probability */

            PIDebug.Title("2) Get X for probability", true);

            /* DF1=1, DF2=1 */

            PIDebug.Title("..df1=1, df2=1");

            distribution.SetDF1(1);
            distribution.SetDF2(1);

            Console.WriteLine("X value for probability for prop=1.0 : " + distribution.GetXForProbability(1.0));
            Assert.AreEqual(0.0, distribution.GetXForProbability(1.0), 0.01);

            Console.WriteLine("X value for probability for prop=0.1 : " + distribution.GetXForProbability(0.1));
            Assert.AreEqual(39.86, distribution.GetXForProbability(0.1), 0.01);

            Console.WriteLine("X value for probability for prop=0.05 : " + distribution.GetXForProbability(0.05));
            Assert.AreEqual(161.45, distribution.GetXForProbability(0.05), 0.01);

            Console.WriteLine("X value for probability for prop=0.01 : " + distribution.GetXForProbability(0.01));
            Assert.AreEqual(4052.2, distribution.GetXForProbability(0.01), 0.02);

            Console.WriteLine("X value for probability for prop=0.001 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(405284, distribution.GetXForProbability(0.001), 0.1);

            /* DF1=3, DF2=3 */

            PIDebug.Title("..df1=3, df2=3", true);

            distribution.SetDF1(3);
            distribution.SetDF2(3);

            Console.WriteLine("X value for probability for prop=0.1 : " + distribution.GetXForProbability(0.1));
            Assert.AreEqual(5.39, distribution.GetXForProbability(0.1), 0.01);

            Console.WriteLine("X value for probability for prop=0.05 : " + distribution.GetXForProbability(0.05));
            Assert.AreEqual(9.28, distribution.GetXForProbability(0.05), 0.01);

            Console.WriteLine("X value for probability for prop=0.025 : " + distribution.GetXForProbability(0.025));
            Assert.AreEqual(15.44, distribution.GetXForProbability(0.025), 0.01);

            Console.WriteLine("X value for probability for prop=0.01 : " + distribution.GetXForProbability(0.01));
            Assert.AreEqual(29.46, distribution.GetXForProbability(0.01), 0.01);

            Console.WriteLine("X value for probability for prop=0.001 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(141.11, distribution.GetXForProbability(0.001), 0.01);

            /* DF1=5, DF2=5 */

            PIDebug.Title("..df1=5, df2=5", true);

            distribution.SetDF1(5);
            distribution.SetDF2(5);

            Console.WriteLine("X value for probability for prop=0.1 : " + distribution.GetXForProbability(0.1));
            Assert.AreEqual(3.45, distribution.GetXForProbability(0.1), 0.01);

            Console.WriteLine("X value for probability for prop=0.05 : " + distribution.GetXForProbability(0.05));
            Assert.AreEqual(5.05, distribution.GetXForProbability(0.05), 0.01);

            Console.WriteLine("X value for probability for prop=0.025 : " + distribution.GetXForProbability(0.025));
            Assert.AreEqual(7.15, distribution.GetXForProbability(0.025), 0.01);

            Console.WriteLine("X value for probability for prop=0.01 : " + distribution.GetXForProbability(0.01));
            Assert.AreEqual(10.97, distribution.GetXForProbability(0.01), 0.01);

            Console.WriteLine("X value for probability for prop=0.001 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(29.75, distribution.GetXForProbability(0.001), 0.01);

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density, df1=1, df2=1", true);

            distribution.SetDF1(1);
            distribution.SetDF2(1);

            Console.WriteLine("x=0.0 : " + distribution.GetPDF(0.0));
            Console.WriteLine("x=0.001 : " + distribution.GetPDF(0.001));
            Console.WriteLine("x=0.1 : " + distribution.GetPDF(0.1));
            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=7.0 : " + distribution.GetPDF(7.0));
        }
示例#18
0
        public void TestMethod()
        {
            /* Source 5S2. */

            PIDebug.TitleBig("Weibull distribution (lambda=1, k=1)");

            PIWeibullDistribution distribution = new PIWeibullDistribution();

            /* -- 1) Get probability */

            PIDebug.Title("1) Get probability for X (CDF)");

            /* lambda=1, k=2 */
            PIDebug.Title("..lambda=1; k=2");

            distribution.SetK(2);

            Console.WriteLine("Probability for x=0.0 : " + distribution.GetCDF(0.0));
            Assert.AreEqual(0.0, distribution.GetProbability(0.0), 0.001);

            Console.WriteLine("Probability for x=0.5 : " + distribution.GetCDF(0.5));
            Assert.AreEqual(0.2212, distribution.GetProbability(0.5), 0.001);

            Console.WriteLine("Probability for x=1.0 : " + distribution.GetCDF(1.0));
            Assert.AreEqual(0.6321, distribution.GetProbability(1.0), 0.001);

            Console.WriteLine("Probability for x=2.0 : " + distribution.GetCDF(2.0));
            Assert.AreEqual(0.9817, distribution.GetProbability(2.0), 0.001);

            /* lambda=2, k=3 */
            PIDebug.Title("..lambda=2; k=3", true);

            distribution.SetLambda(2);
            distribution.SetK(3);

            Console.WriteLine("Probability for x=1.0 : " + distribution.GetCDF(1.0));
            Assert.AreEqual(0.1175, distribution.GetProbability(1.0), 0.001);

            /* -- 2) Get T for probability */

            PIDebug.Title("2) Get X for probability (InverseCDF)", true);

            /* lambda=1, k=2 */
            PIDebug.Title("..lambda=1; k=2");

            distribution.SetLambda(1);
            distribution.SetK(2);

            Console.WriteLine("X value for probability for prob=0.0 : " + distribution.GetInverseCDF(0.0));
            Assert.AreEqual(0.0, distribution.GetInverseCDF(0.0), 0.001);

            Console.WriteLine("X value for probability for prob=0.2212 : " + distribution.GetInverseCDF(0.2212));
            Assert.AreEqual(0.5, distribution.GetInverseCDF(0.2212), 0.001);

            Console.WriteLine("X value for probability for prob=0.6321 : " + distribution.GetInverseCDF(0.6321));
            Assert.AreEqual(1.0, distribution.GetInverseCDF(0.6321), 0.001);

            Console.WriteLine("X value for probability for prob=0.9817 : " + distribution.GetInverseCDF(0.9817));
            Assert.AreEqual(2.0, distribution.GetInverseCDF(0.9817), 0.001);

            /* lambda=2, k=3 */
            PIDebug.Title("..lambda=2; k=3", true);

            distribution.SetLambda(2);
            distribution.SetK(3);

            Console.WriteLine("X value for probability for prob=0.1175 : " + distribution.GetInverseCDF(0.1175));
            Assert.AreEqual(1.0, distribution.GetInverseCDF(0.1175), 0.001);

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density (PDF)", true);

            PIDebug.Title("..lambda=1, k=1");

            distribution.SetLambda(1);
            distribution.SetK(1);

            Console.WriteLine("x=0.1 : " + distribution.GetPDF(0.1));
            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=1.0 : " + distribution.GetPDF(1.0));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=5.0 : " + distribution.GetPDF(5.0));
        }
示例#19
0
        public void TestMethod()
        {
            /* -- Factorial */

            PIDebug.TitleBig("Factorial");

            Console.WriteLine("Factorial(0) = " + PIProbabilityUtils.Factorial(0));
            Assert.AreEqual(1, PIProbabilityUtils.Factorial(0));

            Console.WriteLine("Factorial(1) = " + PIProbabilityUtils.Factorial(1));
            Assert.AreEqual(1, PIProbabilityUtils.Factorial(1));

            Console.WriteLine("Factorial(2) = " + PIProbabilityUtils.Factorial(2));
            Assert.AreEqual(2, PIProbabilityUtils.Factorial(2));

            Console.WriteLine("Factorial(3) = " + PIProbabilityUtils.Factorial(3));
            Assert.AreEqual(6, PIProbabilityUtils.Factorial(3));

            Console.WriteLine("Factorial(7) = " + PIProbabilityUtils.Factorial(7));
            Assert.AreEqual(5040, PIProbabilityUtils.Factorial(7));

            Console.WriteLine("Factorial(10) = " + PIProbabilityUtils.Factorial(10));
            Assert.AreEqual(3628800, PIProbabilityUtils.Factorial(10));

            /* -- Combination */

            PIDebug.TitleBig("Combination", true);

            Console.WriteLine("C(10,3) = " + PIProbabilityUtils.Combination(10, 3));
            Assert.AreEqual(120, PIProbabilityUtils.Combination(10, 3));

            Console.WriteLine("C(14,5) = " + PIProbabilityUtils.Combination(14, 5));
            Assert.AreEqual(2002, PIProbabilityUtils.Combination(14, 5));

            Console.WriteLine("C(7,2) = " + PIProbabilityUtils.Combination(7, 2));
            Assert.AreEqual(21, PIProbabilityUtils.Combination(7, 2));

            Console.WriteLine("C(52,5) = " + PIProbabilityUtils.Combination(52, 5));
            Assert.AreEqual(2598960, PIProbabilityUtils.Combination(52, 5));

            /* -- Catalan number */

            PIDebug.TitleBig("Catalan number", true);

            Console.WriteLine("Catalan number(0) = " + PIProbabilityUtils.CatalanNumber(0));
            Assert.AreEqual(1, PIProbabilityUtils.CatalanNumber(0));

            Console.WriteLine("Catalan number(1) = " + PIProbabilityUtils.CatalanNumber(1));
            Assert.AreEqual(1, PIProbabilityUtils.CatalanNumber(1));

            Console.WriteLine("Catalan number(2) = " + PIProbabilityUtils.CatalanNumber(2));
            Assert.AreEqual(2, PIProbabilityUtils.CatalanNumber(2));

            Console.WriteLine("Catalan number(3) = " + PIProbabilityUtils.CatalanNumber(3));
            Assert.AreEqual(5, PIProbabilityUtils.CatalanNumber(3));

            Console.WriteLine("Catalan number(4) = " + PIProbabilityUtils.CatalanNumber(4));
            Assert.AreEqual(14, PIProbabilityUtils.CatalanNumber(4));

            Console.WriteLine("Catalan number(5) = " + PIProbabilityUtils.CatalanNumber(5));
            Assert.AreEqual(42, PIProbabilityUtils.CatalanNumber(5));

            Console.WriteLine("Catalan number(6) = " + PIProbabilityUtils.CatalanNumber(6));
            Assert.AreEqual(132, PIProbabilityUtils.CatalanNumber(6));

            Console.WriteLine("Catalan number(7) = " + PIProbabilityUtils.CatalanNumber(7));
            Assert.AreEqual(429, PIProbabilityUtils.CatalanNumber(7));

            Console.WriteLine("Catalan number(15) = " + PIProbabilityUtils.CatalanNumber(15));
            Assert.AreEqual(9694845, PIProbabilityUtils.CatalanNumber(15));

            Console.WriteLine("Catalan number(25) = " + PIProbabilityUtils.CatalanNumber(25));
            Assert.AreEqual((ulong)4861946401452, (ulong)PIProbabilityUtils.CatalanNumber(25));

            Console.WriteLine("Catalan number(50) = " + PIProbabilityUtils.CatalanNumber(50));

            Console.WriteLine("Catalan number(150) = " + PIProbabilityUtils.CatalanNumber(150));
        }
示例#20
0
        public void TestMethod()
        {
            /* Cramers rule (Prachar II/15)
             *
             * x1 + 2x2 - 3x3 = -9
             * 2x1 - 3x2 - 5x3 = -8
             * x1 + x2 + x3 = 4
             *
             * */

            PIDebug.TitleBig("Cramers Rule - (degree=3)");

            PICramersRule cramersRule = new PICramersRule(3);

            Assert.IsNotNull(cramersRule);

            PIDebug.Title("A");

            cramersRule.Get_matrixA().AddValues(new int[] { 1, 2, -3, 2, -3, -5, 1, 1, 1 });
            Console.WriteLine(cramersRule.Get_matrixA().AsString(0));

            PIDebug.Title("B", true);

            cramersRule.Get_matrixB().AddValues(new int[] { -9, -8, 4 });
            Console.WriteLine(cramersRule.Get_matrixB().AsString(0));

            PIDebug.Blank();

            int i = cramersRule.Calc();

            switch (i)
            {
            case -1:
                Console.WriteLine("Some error.");
                Assert.Fail("Some error.");
                break;

            case 0:
                Console.WriteLine("System of linear equitions has no solution.");
                break;

            case 1:
                Console.WriteLine("Result = " + cramersRule.Get_results().AsString(0));

                Assert.AreEqual(2.0, (double)cramersRule.Get_results().GetValue(0));
                Assert.AreEqual(-1.0, (double)cramersRule.Get_results().GetValue(1));
                Assert.AreEqual(3.0, (double)cramersRule.Get_results().GetValue(2));
                break;
            }

            /* Cramers rule - A (1c/16a)
             *
             * x + 4y = 37
             * 2x + 5y = 53
             *
             * */

            PIDebug.TitleBig("Cramers Rule - A - (degree=2)", true);

            PICramersRule cramersRuleA = new PICramersRule(2);

            Assert.IsNotNull(cramersRuleA);

            PIDebug.Title("A");

            cramersRuleA.Get_matrixA().AddValues(new int[] { 1, 4, 2, 5 });
            Console.WriteLine(cramersRuleA.Get_matrixA().AsString(0));

            PIDebug.Title("B", true);

            cramersRuleA.Get_matrixB().AddValues(new int[] { 37, 53 });
            Console.WriteLine(cramersRuleA.Get_matrixB().AsString(0));

            PIDebug.Blank();

            i = cramersRuleA.Calc();

            switch (i)
            {
            case -1:
                Console.WriteLine("Some error.");
                Assert.Fail("Some error.");
                break;

            case 0:
                Console.WriteLine("System of linear equitions has not solution.");
                break;

            case 1:
                Console.WriteLine("Result = " + cramersRuleA.Get_results().AsString(0));

                Assert.AreEqual(9.0, (double)cramersRuleA.Get_results().GetValue(0));
                Assert.AreEqual(7.0, (double)cramersRuleA.Get_results().GetValue(1));
                break;
            }

            /* Cramers rule - B (1c/16b)
             *
             * 3x - 2y = 8
             * -9x + 6y = 5
             *
             * */

            PIDebug.TitleBig("Cramers Rule - B - (degree=2)", true);

            PICramersRule cramersRuleB = new PICramersRule(2);

            Assert.IsNotNull(cramersRuleB);

            PIDebug.Title("A");

            cramersRuleB.Get_matrixA().AddValues(new int[] { 3, -2, -9, 6 });
            Console.WriteLine(cramersRuleB.Get_matrixA().AsString(0));

            PIDebug.Title("B");

            cramersRuleB.Get_matrixB().AddValues(new int[] { 8, 5 });
            Console.WriteLine(cramersRuleB.Get_matrixB().AsString(0));

            PIDebug.Blank();

            i = cramersRuleB.Calc();

            switch (i)
            {
            case -1:
                Console.WriteLine("Some error.");
                Assert.Fail("Some error.");
                break;

            case 0:
                Console.WriteLine("System of linear equitions has not solution.");
                break;

            case 1:
                Console.WriteLine("Result = " + cramersRuleB.Get_results().AsString(0));
                break;
            }

            Assert.AreEqual(cramersRuleB.Get_results().Count(), 0);
        }
        public void TestMethod()
        {
            /* Source 5S2. */

            PIDebug.TitleBig("Rayleigh distribution");

            PIRayleighDistribution distribution = new PIRayleighDistribution();

            /* -- 1) Get probability */

            PIDebug.Title("1) Get probability for X (CDF)");

            /* sigma=1 */
            PIDebug.Title("..sigma=1");

            Console.WriteLine("Probability for x=0.0 : " + distribution.GetCDF(0.0));
            Assert.AreEqual(0.0, distribution.GetProbability(0.0), 0.001);

            Console.WriteLine("Probability for x=1.0 : " + distribution.GetCDF(1.0));
            Assert.AreEqual(0.3933, distribution.GetProbability(1.0), 0.001);

            Console.WriteLine("Probability for x=2.0 : " + distribution.GetCDF(2.0));
            Assert.AreEqual(0.8646, distribution.GetProbability(2.0), 0.001);

            Console.WriteLine("Probability for x=2.5 : " + distribution.GetCDF(2.5));
            Assert.AreEqual(0.9560, distribution.GetProbability(2.5), 0.001);

            /* sigma=3 */
            PIDebug.Title("..sigma=3", true);

            distribution.SetSigma(3);

            Console.WriteLine("Probability for x=1.0 : " + distribution.GetCDF(1.0));
            Assert.AreEqual(0.0540, distribution.GetProbability(1.0), 0.001);

            /* -- 2) Get T for probability */

            PIDebug.Title("2) Get X for probability (InverseCDF)", true);

            /* sigma=1 */
            PIDebug.Title("..sigma=1");

            distribution.SetSigma(1);

            Console.WriteLine("X value for probability for prob=0.0 : " + distribution.GetInverseCDF(0.0));
            Assert.AreEqual(0.0, distribution.GetInverseCDF(0.0), 0.001);

            Console.WriteLine("X value for probability for prob=0.3933 : " + distribution.GetInverseCDF(0.3933));
            Assert.AreEqual(1.0, distribution.GetInverseCDF(0.3933), 0.001);

            Console.WriteLine("X value for probability for prob=0.8646 : " + distribution.GetInverseCDF(0.8646));
            Assert.AreEqual(2.0, distribution.GetInverseCDF(0.8646), 0.001);

            Console.WriteLine("X value for probability for prob=0.9560 : " + distribution.GetInverseCDF(0.9560));
            Assert.AreEqual(2.5, distribution.GetInverseCDF(0.9560), 0.001);

            /* sigma=3 */
            PIDebug.Title("..sigma=3", true);

            distribution.SetSigma(3);

            Console.WriteLine("X value for probability for prob=0.0540 : " + distribution.GetInverseCDF(0.0540));
            Assert.AreEqual(1.0, distribution.GetInverseCDF(0.0540), 0.001);

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density (PDF)", true);

            PIDebug.Title("..sigma=1");

            distribution.SetSigma(1);

            Console.WriteLine("x=0.1 : " + distribution.GetPDF(0.1));
            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=1.0 : " + distribution.GetPDF(1.0));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=5.0 : " + distribution.GetPDF(5.0));
        }
        public void TestMethod()
        {
            /* --------------------------------- */

            PIDebug.TitleBig("Variable");

            /* check variable */

            PIVariable var = new PIVariable();

            Assert.IsNotNull(var);

            /* clear variable */

            var.Clear();
            System.Console.WriteLine("Alter clear()");
            Assert.AreEqual(0, var.Count());

            /* add values */

            var.AddValue((double)10);
            var.AddValue((double)20);
            var.AddValue((double)30);

            /* set value */

            PIDebug.Blank();
            PIDebug.Title("set");
            var.SetValue(1, 25.0);
            Assert.AreEqual(25.0, (double)var.GetValue(1), 0.01);

            Console.WriteLine(var.AsString(0));

            var.SetValue(1, 20.0);

            PIDebug.Blank();

            /* median - odd */

            double median = var.GetMedian();

            Console.WriteLine("median (odd) = " + median);
            Assert.AreEqual(20.0, (double)median, 0.001);

            /* check count */

            Console.WriteLine("count() = " + var.Count());
            Assert.AreEqual(3, var.Count());

            /* check sum */

            Console.WriteLine("sum() = " + var.GetSum());
            Assert.AreEqual(60.0, var.GetSum());

            /* --------------------------------- */

            PIDebug.Blank();
            PIDebug.TitleBig("Variable - another");

            /* add values (source 2a/40) */

            var.Clear();
            var.Set_alwaysRecalc(true);

            var.AddValue(1.90);
            var.AddValue(3.00);
            var.AddValue(2.53);
            var.AddValue(3.71);
            var.AddValue(2.12);
            var.AddValue(1.76);
            var.AddValue(2.71);
            var.AddValue(1.39);
            var.AddValue(4.00);
            var.AddValue(3.33);

            Double sampleMean = var.GetSampleMean();

            Console.WriteLine("sampleMean = " + sampleMean);

            Assert.AreEqual(2.645, (double)sampleMean, 0.0001);

            /* min */

            double min = var.GetMin();

            Console.WriteLine("min = " + min);

            Assert.AreEqual(1.39, min, 0.001);

            /* max */

            double max = var.GetMax();

            Console.WriteLine("max = " + max);

            Assert.AreEqual(4.00, max, 0.001);

            /* asstring */

            Console.WriteLine("Items list");
            Console.WriteLine(var.AsString(2));

            /* sorted list */

            PIVariable sorted = var.GetSorted();

            Console.WriteLine("Sorted items list");
            Console.WriteLine(sorted.AsString(2));

            /* median - even (source 2a/45) */

            median = var.GetMedian();
            Console.WriteLine("median (even) = " + median);
            Assert.AreEqual(2.62, median, 0.001);

            /* sample standard deviation */

            double std = var.GetSampleStandardDeviation();

            Console.WriteLine("sample standard deviation = " + std);
            Assert.AreEqual(0.8674, std, 0.001);

            /* Z score (source 2a/78) */

            double ZScore = var.GetZScore(0);

            Console.WriteLine("Z score = " + ZScore);
            Assert.AreEqual(-0.8589, ZScore, 0.001);

            ZScore = var.GetZScore(1);
            Console.WriteLine("Z score = " + ZScore);
            Assert.AreEqual(0.4093, ZScore, 0.001);

            /* --------------------------------- */

            /* -- source 2d/68 */

            PIDebug.Blank();
            PIDebug.Title("Example with VAR1 and VAR2");

            PIVariable var1 = new PIVariable();
            PIVariable var2 = new PIVariable();

            Assert.IsNotNull(var1);
            Assert.IsNotNull(var2);

            var1.AddMoreValues(4.0, 3);
            var1.AddMoreValues(6.0, 4);
            var1.AddMoreValues(7.0, 2);
            var1.AddMoreValues(9.0, 4);
            var1.AddMoreValues(10.0, 10);
            var1.AddMoreValues(11.0, 5);
            var1.AddMoreValues(11.5, 2);
            var1.AddMoreValues(12.0, 13);
            var1.AddMoreValues(13.0, 4);
            var1.AddMoreValues(14.0, 2);
            var1.AddMoreValues(15.0, 2);
            var1.AddMoreValues(16.0, 4);
            var1.AddMoreValues(17.0, 6);
            var1.AddMoreValues(18.0, 2);
            var1.AddMoreValues(19.0, 2);
            var1.AddMoreValues(20.0, 6);
            var1.AddMoreValues(22.0, 2);

            Console.WriteLine("count = " + var1.Count());
            Assert.AreEqual(73, var1.Count(), 0.001);

            Console.WriteLine("mean = " + var1.GetSampleMean());
            Assert.AreEqual(12.79, var1.GetSampleMean(), 0.01);

            Console.WriteLine("geometric mean = " + var1.GetGeometricMean());
            Assert.AreEqual(11.95, var1.GetGeometricMean(), 0.01);

            Console.WriteLine("mode = " + var1.GetMode());
            Assert.AreEqual(12.00, var1.GetMode(), 0.01);

            Console.WriteLine("median = " + var1.GetMedian());
            Assert.AreEqual(12.00, var1.GetMedian(), 0.01);

            Console.WriteLine("population variance = " + var1.GetPopulationVariance());
            Assert.AreEqual(19.44, var1.GetPopulationVariance(), 0.01);

            Console.WriteLine("population standard deviation = " + var1.GetPopulationStandardDeviation());
            Assert.AreEqual(4.41, var1.GetPopulationStandardDeviation(), 0.01);

            Console.WriteLine("sample variance = " + var1.GetSampleVariance());
            Assert.AreEqual(19.71, var1.GetSampleVariance(), 0.01);

            Console.WriteLine("sample standard deviation = " + var1.GetSampleStandardDeviation());
            Assert.AreEqual(4.44, var1.GetSampleStandardDeviation(), 0.01);

            Console.WriteLine("min = " + var1.GetMin());
            Assert.AreEqual(4.00, var1.GetMin(), 0.01);

            Console.WriteLine("max = " + var1.GetMax());
            Assert.AreEqual(22.00, var1.GetMax(), 0.01);

            Console.WriteLine("range = " + var1.GetRange());
            Assert.AreEqual(18.00, var1.GetRange(), 0.01);

            Console.WriteLine("quartile1 = " + var1.GetQuartile1());
            Assert.AreEqual(10.00, var1.GetQuartile1(), 0.01);

            Console.WriteLine("quartile3 = " + var1.GetQuartile3());
            Assert.AreEqual(16.00, var1.GetQuartile3(), 0.01);

            Console.WriteLine("interquartile range = " + var1.GetInterquartileRange());
            Assert.AreEqual(6.00, var1.GetInterquartileRange(), 0.01);

            Console.WriteLine("skewness = " + var1.GetSkewness());
            Assert.AreEqual(0.16, var1.GetSkewness(), 0.01);

            Console.WriteLine("kurtosis = " + var1.GetKurtosis());

            /* -- 1.0.6. --------------------------------------------- */

            /* -- LAG -- */

            PIDebug.Blank();
            PIDebug.Title("LAG -2");

            PIVariable varLAGSource = new PIVariable();

            varLAGSource.AddMoreValuesRange(1, 10);

            Console.WriteLine("Source = " + varLAGSource.AsString(0));

            /* -2 */
            PIVariable varLAGMinus2 = new PIVariable();

            varLAGMinus2.MakeLag(varLAGSource, -2, false);

            /* LAG -2 = 3;4;5;6;7;8;9;10;<null>;<null> */
            Console.WriteLine("LAG -2 = " + varLAGMinus2.AsString(0));

            Assert.AreEqual(3.0, (double)varLAGMinus2.GetValue(0), 0.1);
            Assert.AreEqual(null, varLAGMinus2.GetValue(8));
            Assert.AreEqual(null, varLAGMinus2.GetValue(9));

            /* +2 */
            PIVariable varLAGPlus2 = new PIVariable();

            varLAGPlus2.MakeLag(varLAGSource, +2, false);

            /* LAG +2 = <null>;<null>;1;2;3;4;5;6;7;8 */
            Console.WriteLine("LAG +2 = " + varLAGPlus2.AsString(0));

            Assert.AreEqual(null, varLAGPlus2.GetValue(0));
            Assert.AreEqual(null, varLAGPlus2.GetValue(1));
            Assert.AreEqual(1.0, (double)varLAGPlus2.GetValue(2), 0.1);

            /* -- 1.0.9. --------------------------------------------- */

            /* -- standardize -- */

            PIDebug.Blank();
            PIDebug.Title("Standardize data (with Z-SCORE method)");

            PIVariable varStandardize = new PIVariable();

            varStandardize.AddValues(new int[] { 10, 20, 25, 17, 13, 16 });

            Console.WriteLine(varStandardize.AsString(0));
            varStandardize.Standardize(StandardizeMethod.Z_SCORE);
            Console.WriteLine(varStandardize.AsString(2));

            PIDebug.Blank();
            PIDebug.Title("Standardize data (with SCALING 0-1 method)");

            PIVariable varStandardize1 = new PIVariable();

            varStandardize1.AddValues(new int[] { 10, 20, 25, 17, 13, 16 });

            Console.WriteLine(varStandardize1.AsString(0));
            varStandardize1.Standardize(StandardizeMethod.SCALING_0_1);
            Console.WriteLine(varStandardize1.AsString(2));

            /* -- 1.2.4 - verifing against Kubanova`s (source 3A,42) skewness - if the result is same as in the book */

            PIDebug.Title("Verifing Kubanova`s skewness", true);

            PIVariable varSkewness = new PIVariable();

            varSkewness.AddMoreValues(1, 21);
            varSkewness.AddMoreValues(2, 43);
            varSkewness.AddMoreValues(3, 37);
            varSkewness.AddMoreValues(4, 9);
            varSkewness.AddMoreValues(5, 2);

            Console.WriteLine("mean = " + varSkewness.GetSampleMean());
            Assert.AreEqual(2.357, (double)varSkewness.GetSampleMean(), 0.001);

            Console.WriteLine("population variance = " + varSkewness.GetPopulationVariance());
            Assert.AreEqual(0.872, (double)varSkewness.GetPopulationVariance(), 0.001);

            Console.WriteLine("population sd = " + varSkewness.GetPopulationStandardDeviation());
            Assert.AreEqual(0.934, (double)varSkewness.GetPopulationStandardDeviation(), 0.001);

            Console.WriteLine("mode = " + varSkewness.GetMode());
            Assert.AreEqual(2.0, (double)varSkewness.GetMode(), 0.001);

            Console.WriteLine("median = " + varSkewness.GetMedian());
            Assert.AreEqual(2.0, (double)varSkewness.GetMedian(), 0.001);

            Console.WriteLine("skewness = " + varSkewness.GetSkewness());
            Assert.AreEqual(0.353, (double)varSkewness.GetSkewness(), 0.001);

            Console.WriteLine("kurtosis = " + varSkewness.GetKurtosis());
            Assert.AreEqual(-0.168, (double)varSkewness.GetKurtosis(), 0.001);

            Console.WriteLine("range = " + varSkewness.GetRange());
            Assert.AreEqual(4.0, (double)varSkewness.GetRange(), 0.001);
        }
示例#23
0
        public void TestMethod()
        {
            /*
             * Student`s distribution.
             */

            PIDebug.TitleBig("Student`s distribution");

            PIStudentDistribution distribution = new PIStudentDistribution();

            /* -- 1) Get probability for T */

            PIDebug.Title("1) Get probability");

            /* DF=1 */

            PIDebug.Title("..df=1");

            distribution.SetDF(1);

            Console.WriteLine("Probability for x=0.0, df=1 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(1.0, (double)distribution.GetProbability(0.0), 0.1);
            Console.WriteLine("Probability for x=1, df=1 : " + distribution.GetProbability(1.00));
            Assert.AreEqual(0.5, (double)distribution.GetProbability(1.00), 0.1);
            Console.WriteLine("Probability for x=15.89, df=1 : " + distribution.GetProbability(15.89));
            Assert.AreEqual(0.04, (double)distribution.GetProbability(15.89), 0.1);
            Console.WriteLine("Probability for x=636.6, df=1 : " + distribution.GetProbability(636.6));
            Assert.AreEqual(0.001, (double)distribution.GetProbability(636.6), 0.1);

            PIDebug.Blank();

            distribution.SetDF(2);

            Console.WriteLine("Probability for x=0.0, df=2 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(1.0, (double)distribution.GetProbability(0.0), 0.1);
            Console.WriteLine("Probability for x=0.816, df=2 : " + distribution.GetProbability(0.816));
            Assert.AreEqual(0.5, (double)distribution.GetProbability(0.816), 0.1);
            Console.WriteLine("Probability for x=4.849, df=2 : " + distribution.GetProbability(4.849));
            Assert.AreEqual(0.04, (double)distribution.GetProbability(4.849), 0.1);
            Console.WriteLine("Probability for x=31.6, df=2 : " + distribution.GetProbability(31.6));
            Assert.AreEqual(0.001, (double)distribution.GetProbability(31.6), 0.1);

            PIDebug.Blank();

            distribution.SetDF(3);

            Console.WriteLine("Probability for x=0.0, df=3 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(1.0, (double)distribution.GetProbability(0.0), 0.1);
            Console.WriteLine("Probability for x=0.765, df=3 : " + distribution.GetProbability(0.765));
            Assert.AreEqual(0.5, (double)distribution.GetProbability(0.765), 0.1);
            Console.WriteLine("Probability for x=3.482, df=3 : " + distribution.GetProbability(3.482));
            Assert.AreEqual(0.04, (double)distribution.GetProbability(3.482), 0.1);
            Console.WriteLine("Probability for x=12.92, df=3 : " + distribution.GetProbability(12.92));
            Assert.AreEqual(0.001, (double)distribution.GetProbability(12.92), 0.1);

            PIDebug.Blank();

            distribution.SetDF(4);

            Console.WriteLine("Probability for x=0.0, df=4 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(1.0, (double)distribution.GetProbability(0.0), 0.1);
            Console.WriteLine("Probability for x=0.741, df=4 : " + distribution.GetProbability(0.741));
            Assert.AreEqual(0.5, (double)distribution.GetProbability(0.741), 0.1);
            Console.WriteLine("Probability for x=2.999, df=4 : " + distribution.GetProbability(2.999));
            Assert.AreEqual(0.04, (double)distribution.GetProbability(2.999), 0.1);
            Console.WriteLine("Probability for x=8.610, df=4 : " + distribution.GetProbability(8.610));
            Assert.AreEqual(0.001, (double)distribution.GetProbability(8.610), 0.1);

            PIDebug.Blank();

            distribution.SetDF(5);

            Console.WriteLine("Probability for x=2.757, df=5 : " + distribution.GetProbability(2.757));
            Assert.AreEqual(0.04, (double)distribution.GetProbability(2.757), 0.1);

            distribution.SetDF(10);

            Console.WriteLine("Probability for x=1.372, df=10 : " + distribution.GetProbability(1.372));
            Assert.AreEqual(0.2, (double)distribution.GetProbability(1.372), 0.1);


            /* -- 2) Get T for probability */

            PIDebug.Title("2) Get T for probability", true);

            /* DF=1 */

            PIDebug.Title("..df=1");

            distribution.SetDF(1);

            Console.WriteLine("X value for probability for prob=1.0, df=1 : " + distribution.GetXForProbability(1.0));
            Assert.AreEqual(0.0, (double)distribution.GetXForProbability(1.0), 0.1);
            Console.WriteLine("X value for probability for prob=0.5, df=1 : " + distribution.GetXForProbability(0.5));
            Assert.AreEqual(1.0, (double)distribution.GetXForProbability(0.5), 0.1);
            Console.WriteLine("X value for probability for prob=0.04, df=1 : " + distribution.GetXForProbability(0.04));
            Assert.AreEqual(15.89, (double)distribution.GetXForProbability(0.04), 0.1);
            Console.WriteLine("X value for probability for prob=0.001, df=1 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(636.6, (double)distribution.GetXForProbability(0.001), 0.1);

            PIDebug.Blank();

            distribution.SetDF(2);

            Console.WriteLine("X value for probability for prob=1.0, df=2 : " + distribution.GetXForProbability(1.0));
            Assert.AreEqual(0.0, (double)distribution.GetXForProbability(1.0), 0.1);
            Console.WriteLine("X value for probability for prob=0.5, df=2 : " + distribution.GetXForProbability(0.5));
            Assert.AreEqual(0.816, (double)distribution.GetXForProbability(0.5), 0.1);
            Console.WriteLine("X value for probability for prob=0.04, df=2 : " + distribution.GetXForProbability(0.04));
            Assert.AreEqual(4.849, (double)distribution.GetXForProbability(0.04), 0.1);
            Console.WriteLine("X value for probability for prob=0.001, df=2 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(31.6, (double)distribution.GetXForProbability(0.001), 0.1);

            PIDebug.Blank();

            distribution.SetDF(3);

            Console.WriteLine("X value for probability for prob=1.0, df=3 : " + distribution.GetXForProbability(1.0));
            Assert.AreEqual(0.0, (double)distribution.GetXForProbability(1.0), 0.1);
            Console.WriteLine("X value for probability for prob=0.5, df=3 : " + distribution.GetXForProbability(0.5));
            Assert.AreEqual(0.765, (double)distribution.GetXForProbability(0.5), 0.1);
            Console.WriteLine("X value for probability for prob=0.04, df=3 : " + distribution.GetXForProbability(0.04));
            Assert.AreEqual(3.482, (double)distribution.GetXForProbability(0.04), 0.1);
            Console.WriteLine("X value for probability for prob=0.001, df=3 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(12.92, (double)distribution.GetXForProbability(0.001), 0.1);

            PIDebug.Blank();

            distribution.SetDF(4);

            Console.WriteLine("X value for probability for prob=1.0, df=4 : " + distribution.GetXForProbability(1.0));
            Assert.AreEqual(0.0, (double)distribution.GetXForProbability(1.0), 0.1);
            Console.WriteLine("X value for probability for prob=0.5, df=4 : " + distribution.GetXForProbability(0.5));
            Assert.AreEqual(0.741, (double)distribution.GetXForProbability(0.5), 0.1);
            Console.WriteLine("X value for probability for prob=0.04, df=4 : " + distribution.GetXForProbability(0.04));
            Assert.AreEqual(2.999, (double)distribution.GetXForProbability(0.04), 0.1);
            Console.WriteLine("X value for probability for prob=0.04, df=4 : " + distribution.GetXForProbability(0.001));
            Assert.AreEqual(8.610, (double)distribution.GetXForProbability(0.001), 0.1);

            PIDebug.Blank();

            distribution.SetDF(5);

            Console.WriteLine("X value for probability for prob=0.04, df=5 : " + distribution.GetXForProbability(0.04));
            Assert.AreEqual(2.757, (double)distribution.GetXForProbability(0.04), 0.1);

            distribution.SetDF(10);

            Console.WriteLine("X value for probability for prob=0.2, df=10 : " + distribution.GetXForProbability(0.2));
            Assert.AreEqual(1.372, (double)distribution.GetXForProbability(0.2), 0.1);

            PIDebug.Blank();

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density, df=1", true);

            distribution.SetDF(1);

            Console.WriteLine("x=-7.0 : " + distribution.GetPDF(-7.0));
            Console.WriteLine("x=-2.0 : " + distribution.GetPDF(-2.0));
            Console.WriteLine("x=-0.5 : " + distribution.GetPDF(-0.5));
            Console.WriteLine("x=0.0 : " + distribution.GetPDF(0.0));
            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=7.0 : " + distribution.GetPDF(7.0));
        }
        public void TestMethod()
        {
            /*
             * SIMPLE EXPONENTIAL SMOOTHING.
             *
             * Source 4H, 60.
             *
             */

            PIDebug.TitleBig("2. - Simple exponential smoothing (Cipra 4h,60) - 1. Part");

            /* - prepare variable for source data */

            PIVariable var1 = new PIVariable();

            Assert.IsNotNull(var1);

            var1.AddValues(new double[] { 29.9, 28.9, 29.9, 28.7, 29.6 });
            var1.AddValues(new double[] { 31.6, 28.0, 29.3, 26.4, 27.9 });
            var1.AddValues(new double[] { 30.1, 28.9, 29.4, 29.6, 27.5 });
            var1.AddValues(new double[] { 30.2, 28.3, 29.2, 28.6, 30.7 });
            var1.AddValues(new double[] { 29.0, 28.1 });

            /* - calc simple exponential smoothing, alpha=0.78 */

            PISimpleExponentialSmoothing smoothing1 = new PISimpleExponentialSmoothing(var1);

            /* use first 6 values for mean...and use it as the first value */
            smoothing1.SetFirstValueCalcType(FirstValueCalcType.MEAN_WINDOWLENGTH);
            smoothing1.SetWindowLength(6);

            smoothing1.SetAlpha(0.78);
            Console.WriteLine(" New ALPHA = " + smoothing1.GetAlpha());

            smoothing1.Calc();

            /* - show results */

            PIDebug.Blank();
            Console.WriteLine("After smoothing = " + smoothing1.GetOutputVariable().AsString(2));
            Assert.AreEqual(29.80, (double)smoothing1.GetOutputVariable().GetValue(0), 0.01);
            Assert.AreEqual(29.6, (double)smoothing1.GetOutputVariable().GetValue(1), 0.01);
            Assert.AreEqual(29.67, (double)smoothing1.GetOutputVariable().GetValue(2), 0.01);

            Console.WriteLine("Errors = " + smoothing1.GetErrors().AsString(2));
            /* ... */

            PIDebug.Blank();
            Console.WriteLine("SSE = " + smoothing1.GetSSE());
            Assert.AreEqual(33.43, (double)smoothing1.GetSSE(), 0.1);

            Console.WriteLine("MSE = " + smoothing1.GetMSE());
            Assert.AreEqual(1.519, (double)smoothing1.GetMSE(), 0.001);
            Console.WriteLine("MSE-1 = " + smoothing1.GetErrors().GetSum2() / (smoothing1.GetSourceVariable().Count() - 1));

            /*
             * SIMPLE EXPONENTIAL SMOOTHING.
             *
             * Source 4H, 60.
             *
             */

            PIDebug.TitleBig("2. - Simple exponential smoothing (Cipra 4h,61) - 2. Part", true);

            /* - calc simple exponential smoothing, alpha=0.9 */

            /* takes mean for first value */
            smoothing1.SetFirstValueCalcType(FirstValueCalcType.MEAN);

            smoothing1.SetAlpha(0.9);
            Console.WriteLine("New ALPHA = " + smoothing1.GetAlpha());

            smoothing1.Calc();

            /* - show results */

            PIDebug.Blank();
            Console.WriteLine("After smoothing = " + smoothing1.GetOutputVariable().AsString(2));
            //Assert.AreEqual(29.80, (double) smoothing1.destVariable.getValue(0), 0.01);
            //Assert.AreEqual(29.6, (double) smoothing1.destVariable.getValue(1), 0.01);
            //Assert.AreEqual(29.67, (double) smoothing1.destVariable.getValue(2), 0.01);

            Console.WriteLine("Errors = " + smoothing1.GetErrors().AsString(2));
            /* ... */

            PIDebug.Blank();
            Console.WriteLine("SSE = " + smoothing1.GetSSE());
            //Assert.AreEqual(33.43, (double) smoothing1.getSSE(), 0.1);

            Console.WriteLine("MSE = " + smoothing1.GetMSE());
            //Assert.AreEqual(1.519, (double) smoothing1.getMSE(), 0.001);
            Console.WriteLine("MSE-1 = " + smoothing1.GetErrors().GetSum2() / (smoothing1.GetSourceVariable().Count() - 1));
        }
示例#25
0
        public void TestMethod()
        {
            /* Source 6G. */

            PIDebug.TitleBig("Prime");

            //Console.WriteLine( 3 % 100 );

            /* -- Simple */

            PIDebug.Title("Simple method");

            Console.WriteLine("1 : " + PIPrime.IsPrime_Simple(1));
            Assert.AreEqual(false, PIPrime.IsPrime_Simple(1));

            Console.WriteLine("99 : " + PIPrime.IsPrime_Simple(99));
            Assert.AreEqual(false, PIPrime.IsPrime_Simple(99));

            Console.WriteLine("101 : " + PIPrime.IsPrime_Simple(101));
            Assert.AreEqual(true, PIPrime.IsPrime_Simple(101));

            Console.WriteLine("221 : " + PIPrime.IsPrime_Simple(221));
            Assert.AreEqual(false, PIPrime.IsPrime_Simple(221));

            Console.WriteLine("9973 : " + PIPrime.IsPrime_Simple(9973));
            Assert.AreEqual(true, PIPrime.IsPrime_Simple(9973));

            Console.WriteLine("10001261 : " + PIPrime.IsPrime_Simple(10001261));
            Assert.AreEqual(true, PIPrime.IsPrime_Simple(10001261));

            Console.WriteLine("9007199254740880 : " + PIPrime.IsPrime_Simple(9007199254740880));
            Assert.AreEqual(false, PIPrime.IsPrime_Simple(9007199254740880));

            Console.WriteLine("9007199254740881 : " + PIPrime.IsPrime_Simple(9007199254740881));
            Assert.AreEqual(true, PIPrime.IsPrime_Simple(9007199254740881));

            /* -- Fermat */

            PIDebug.Title("Fermat test", true);

            Console.WriteLine("1 : " + PIPrime.IsPrime_Fermat(1, 3));
            Assert.AreEqual(false, PIPrime.IsPrime_Fermat(1, 3));

            Console.WriteLine("99 : " + PIPrime.IsPrime_Fermat(99, 3));
            Assert.AreEqual(false, PIPrime.IsPrime_Fermat(99, 3));

            Console.WriteLine("101 : " + PIPrime.IsPrime_Fermat(101, 3));
            Assert.AreEqual(true, PIPrime.IsPrime_Fermat(101, 3));

            Console.WriteLine("221 : " + PIPrime.IsPrime_Fermat(221, 3));
            Assert.AreEqual(false, PIPrime.IsPrime_Fermat(221, 3));

            Console.WriteLine("9973 : " + PIPrime.IsPrime_Fermat(9973, 3));
            Assert.AreEqual(true, PIPrime.IsPrime_Fermat(9973, 3));

            Console.WriteLine("10001261 : " + PIPrime.IsPrime_Fermat(10001261, 3));
            Assert.AreEqual(true, PIPrime.IsPrime_Fermat(10001261, 3));

            Console.WriteLine("9007199254740880 : " + PIPrime.IsPrime_Fermat(9007199254740880, 3));
            Assert.AreEqual(false, PIPrime.IsPrime_Fermat(9007199254740880, 3));

            //Console.WriteLine( "9007199254740881 : " + PIPrime.IsPrime_Fermat( 9007199254740881 ) );
            //Assert.AreEqual( true, PIPrime.IsPrime_Fermat( 9007199254740881 ) );

            /* -- Miller-Rabin */

            PIDebug.Title("Miller-Rabin test", true);

            Console.WriteLine("221 : " + PIPrime.IsPrime_MillerRabin(221, 5));
            Assert.AreEqual(false, PIPrime.IsPrime_MillerRabin(221, 5));

            Console.WriteLine("5 :" + PIPrime.IsPrime_MillerRabin(5, 5));
            Assert.AreEqual(true, PIPrime.IsPrime_MillerRabin(5, 5));

            Console.WriteLine("97 : " + PIPrime.IsPrime_MillerRabin(97, 5));
            Assert.AreEqual(true, PIPrime.IsPrime_MillerRabin(97, 5));

            Console.WriteLine("99: " + PIPrime.IsPrime_MillerRabin(99, 5));
            Assert.AreEqual(false, PIPrime.IsPrime_MillerRabin(99, 5));

            Console.WriteLine("101 : " + PIPrime.IsPrime_MillerRabin(101, 5));
            Assert.AreEqual(true, PIPrime.IsPrime_MillerRabin(101, 5));

            Console.WriteLine("102 : " + PIPrime.IsPrime_MillerRabin(102, 5));
            Assert.AreEqual(false, PIPrime.IsPrime_MillerRabin(102, 5));

            Console.WriteLine("983 : " + PIPrime.IsPrime_MillerRabin(983, 5));
            Assert.AreEqual(true, PIPrime.IsPrime_MillerRabin(983, 5));

            Console.WriteLine("985 : " + PIPrime.IsPrime_MillerRabin(985, 5));
            Assert.AreEqual(false, PIPrime.IsPrime_MillerRabin(985, 5));

            Console.WriteLine("9973 : " + PIPrime.IsPrime_MillerRabin(9973, 5));
            Assert.AreEqual(true, PIPrime.IsPrime_MillerRabin(9973, 5));

            Console.WriteLine("10001261 : " + PIPrime.IsPrime_MillerRabin(10001261, 5));
            Assert.AreEqual(true, PIPrime.IsPrime_MillerRabin(10001261, 5));

            Console.WriteLine("9007199254740880 : " + PIPrime.IsPrime_MillerRabin(9007199254740880, 5));
            Assert.AreEqual(false, PIPrime.IsPrime_MillerRabin(9007199254740880, 5));


            //Console.WriteLine( "900719925474000 : " + PIPrime.IsPrime_MillerRabin( 900719925474000, 5 ) );

            //Console.WriteLine( "9007199254740880 : " + PIPrime.IsPrime_MillerRabin(  9007199254740880, 5 ) );
        }
示例#26
0
        public void TestMethod()
        {
            /*
             *  KUBANOVA example - Source 3i,35. **
             *
             *  Values for partial sums are cutted from START.
             *
             *  */

            PIDebug.TitleBig("KUBANOVA, source 3i,36");

            /* -- 1) PARTIAL_SUMS method */

            PIDebug.Title("Regression 1-A (PARTIAL SUMS method)");

            /* - prepare X data for regression */

            PIVariable X = new PIVariable();

            Assert.IsNotNull(X);

            X.AddMoreValuesRange(1, 29);

            /* - prepare Y data for regression */

            PIVariable Y = new PIVariable();

            Assert.IsNotNull(Y);

            Y.AddValues(new int[] { 3, 5, 7, 9, 14 });
            Y.AddValues(new int[] { 17, 21, 27, 36, 40 });
            Y.AddValues(new int[] { 47, 54, 65, 71, 78 });
            Y.AddValues(new int[] { 84, 96, 102, 108, 113 });
            Y.AddValues(new int[] { 125, 129, 132, 136, 145 });
            Y.AddValues(new int[] { 146, 148, 149, 151 });

            /* - create and compute regression */

            PIGompertzRegression regression = new PIGompertzRegression(X, Y);

            Assert.IsNotNull(regression);

            /* cut partial sums from START */
            regression.SetCutStyleForPartialSum(CutStyleForPartialSum.START);

            regression.Calc();

            Console.WriteLine(regression.GetTextFormula());
            Console.WriteLine(regression.GetTextFormulaFilled());

            Assert.AreEqual((double)188.18, (double)regression.Get_gama(), 0.01);
            Assert.AreEqual((double)0.023, (double)regression.Get_A(), 0.001);
            Assert.AreEqual((double)0.894, (double)regression.Get_B(), 0.001);

            /* - calc prediction for X = 15 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=15 : " + regression.CalcPredictedY(55.0));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(regression.GetErrors().AsString(5));

            PIDebug.Blank();
            Console.WriteLine("SSE = " + regression.GetSSE());
            Console.WriteLine("ME = " + regression.GetME());
            Console.WriteLine("MSE = " + regression.GetMSE());
            Console.WriteLine("MAE = " + regression.GetMAE());
            Console.WriteLine("MAPE = " + regression.GetMAPE());
            Console.WriteLine("MPE = " + regression.GetMPE());

            /* -- 2) PARTLY_AVERAGES method */

            PIDebug.Title("Regression 1-B (PARTLY AVERAGES method)", true);

            regression.SetCalcMethod(CalcMethod.PARTIAL_AVERAGES);
            regression.Calc();

            Console.WriteLine(regression.GetTextFormula());
            Console.WriteLine(regression.GetTextFormulaFilled());

            Assert.AreEqual((double)232.74, (double)regression.Get_gama(), 0.01);
            Assert.AreEqual((double)0.011, (double)regression.Get_A(), 0.001);
            Assert.AreEqual((double)0.91, (double)regression.Get_B(), 0.01);

            PIDebug.Blank();
            Console.WriteLine("SSE = " + regression.GetSSE());
            Console.WriteLine("ME = " + regression.GetME());
            Console.WriteLine("MSE = " + regression.GetMSE());
            Console.WriteLine("MAE = " + regression.GetMAE());
            Console.WriteLine("MAPE = " + regression.GetMAPE());
            Console.WriteLine("MPE = " + regression.GetMPE());

            /* -- 3) SELECTED_POINTS method */

            PIDebug.Title("Regression 1-C (SELECTED POINTS method)", true);

            regression.SetCalcMethod(CalcMethod.SELECTED_POINTS);
            regression.Calc();

            //Assert.AreEqual( (double)224.42, (double)regression.get_gama(), 0.01 );
            //Assert.AreEqual( (double)0.021, (double)regression.get_A(), 0.001 );
            //Assert.AreEqual( (double)0.905, (double)regression.get_B(), 0.01 );

            Console.WriteLine(regression.GetTextFormula());
            Console.WriteLine(regression.GetTextFormulaFilled());

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(regression.GetErrors().AsString(5));

            PIDebug.Blank();
            Console.WriteLine("SSE = " + regression.GetSSE());
            Console.WriteLine("ME = " + regression.GetME());
            Console.WriteLine("MSE = " + regression.GetMSE());
            Console.WriteLine("MAE = " + regression.GetMAE());
            Console.WriteLine("MAPE = " + regression.GetMAPE());
            Console.WriteLine("MPE = " + regression.GetMPE());

            /*
             *  LINDA example - Source 3j. **
             *
             *  Values for partial sums are cutted from END.
             *
             *  */

            PIDebug.TitleBig("LINDA, source 3j", true);

            /* -- 1) PARTIAL_SUMS method */

            PIDebug.Title("Regression 1-A (PARTIAL SUMS method)");

            /* - prepare X data for regression */

            PIVariable X1 = new PIVariable();

            Assert.IsNotNull(X1);

            X1.AddMoreValuesRange(1, 17);

            /* - prepare Y data for regression */

            PIVariable Y1 = new PIVariable();

            Assert.IsNotNull(Y1);

            Y1.AddValues(new int[] { 28, 66, 105, 236, 348 });
            Y1.AddValues(new int[] { 496, 593, 696, 748, 825 });
            Y1.AddValues(new int[] { 904, 894, 897, 953, 936 });
            Y1.AddValues(new int[] { 1002, 951 });

            /* - create and compute regression */

            PIGompertzRegression regression1 = new PIGompertzRegression(X1, Y1);

            Assert.IsNotNull(regression1);

            /* set cutting from end */
            regression1.SetCutStyleForPartialSum(CutStyleForPartialSum.END);

            regression1.Calc();

            Console.WriteLine(regression1.GetTextFormula());
            Console.WriteLine(regression1.GetTextFormulaFilled());

            //regression.Assert.AreEqual( (double)1.336, (double)regression.get_A(), 0.001 );
            //Assert.AreEqual( (double)0.00097, (double)regression.get_B(), 0.00001 );

            /* - calc prediction for X = 15 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=15 : " + regression1.CalcPredictedY(55.0));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(regression1.GetErrors().AsString(5));

            PIDebug.Blank();
            Console.WriteLine("SSE = " + regression1.GetSSE());
            Console.WriteLine("ME = " + regression1.GetME());
            Console.WriteLine("MSE = " + regression1.GetMSE());
            Console.WriteLine("MAE = " + regression1.GetMAE());
            Console.WriteLine("MAPE = " + regression1.GetMAPE());
            Console.WriteLine("MPE = " + regression1.GetMPE());

            /* -- 2) PARTLY_AVERAGES method */

            PIDebug.Title("Regression 1-B (PARTLY AVERAGES method)", true);

            regression1.SetCalcMethod(CalcMethod.PARTIAL_AVERAGES);
            regression1.Calc();

            Console.WriteLine(regression1.GetTextFormula());
            Console.WriteLine(regression1.GetTextFormulaFilled());

            PIDebug.Blank();
            Console.WriteLine("SSE = " + regression1.GetSSE());
            Console.WriteLine("ME = " + regression1.GetME());
            Console.WriteLine("MSE = " + regression1.GetMSE());
            Console.WriteLine("MAE = " + regression1.GetMAE());
            Console.WriteLine("MAPE = " + regression1.GetMAPE());
            Console.WriteLine("MPE = " + regression1.GetMPE());

            /* -- 3) SELECTED_POINTS method */

            PIDebug.Title("Regression 1-C (SELECTED POINTS method)", true);

            regression1.SetCalcMethod(CalcMethod.SELECTED_POINTS);
            regression1.Calc();

            Console.WriteLine(regression1.GetTextFormula());
            Console.WriteLine(regression1.GetTextFormulaFilled());

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(regression1.GetErrors().AsString(5));

            PIDebug.Blank();
            Console.WriteLine("SSE = " + regression1.GetSSE());
            Console.WriteLine("ME = " + regression1.GetME());
            Console.WriteLine("MSE = " + regression1.GetMSE());
            Console.WriteLine("MAE = " + regression1.GetMAE());
            Console.WriteLine("MAPE = " + regression1.GetMAPE());
            Console.WriteLine("MPE = " + regression1.GetMPE());
        }
        public void TestMethod()
        {
            /*
             * CHI-SQUARE distribution.
             */

            PIDebug.TitleBig("Chi-square distribution");

            PICHISquareDistribution distribution = new PICHISquareDistribution();

            /* -- 1) Get probability */

            PIDebug.Title("1) Get probability");

            /* DF=1 */

            PIDebug.Title("..df=1");

            distribution.SetDF(1);

            Console.WriteLine("Probability for x=0.0, df=1 : " + distribution.GetProbability(0.0));
            Assert.AreEqual(1.0, (double)distribution.GetProbability(0.0), 0.1);

            Console.WriteLine("Probability for x=0.001, df=1 : " + distribution.GetProbability(0.001));
            Assert.AreEqual(0.975, (double)distribution.GetProbability(0.001), 0.001);

            Console.WriteLine("Probability for x=2.706, df=1 : " + distribution.GetProbability(2.706));
            Assert.AreEqual(0.100, (double)distribution.GetProbability(2.706), 0.001);

            Console.WriteLine("Probability for x=5.024, df=1 : " + distribution.GetProbability(5.024));
            Assert.AreEqual(0.025, (double)distribution.GetProbability(5.024), 0.001);

            Console.WriteLine("Probability for x=200, df=1 : " + distribution.GetProbability(200));
            Assert.AreEqual(1.0, (double)distribution.GetProbability(200), 0.001);

            /* DF=2 */

            PIDebug.Title("..df=2", true);

            distribution.SetDF(2);

            Console.WriteLine("Probability for x=0.103, df=2 : " + distribution.GetProbability(0.103));
            Assert.AreEqual(0.95, (double)distribution.GetProbability(0.103), 0.001);

            Console.WriteLine("Probability for x=10.597, df=2 : " + distribution.GetProbability(10.597));
            Assert.AreEqual(0.005, (double)distribution.GetProbability(10.597), 0.001);

            /* DF=40 */

            PIDebug.Title("..df=40", true);

            distribution.SetDF(40);

            Console.WriteLine("Probability for x=29.051, df=40 : " + distribution.GetProbability(29.051));
            Assert.AreEqual(0.9, (double)distribution.GetProbability(29.051), 0.001);

            /* -- 2) Get X */

            PIDebug.Title("2) Get X", true);

            /* DF=1 */

            PIDebug.Title("..df=1");

            distribution.SetDF(1);

            Console.WriteLine("X for probability=1.0, df=1 : " + distribution.GetXForProbability(1.0));
            Assert.AreEqual(0.0, (double)distribution.GetXForProbability(1.0), 0.001);

            Console.WriteLine("X for probability=0.975, df=1 : " + distribution.GetXForProbability(0.975));
            Assert.AreEqual(0.001, (double)distribution.GetXForProbability(0.975), 0.001);

            Console.WriteLine("X for probability=0.1, df=1 : " + distribution.GetXForProbability(0.1));
            Assert.AreEqual(2.706, (double)distribution.GetXForProbability(0.1), 0.001);

            Console.WriteLine("X for probability=0.025, df=1 : " + distribution.GetXForProbability(0.025));
            Assert.AreEqual(5.023, (double)distribution.GetXForProbability(0.025), 0.001);

            /* DF=2 */

            PIDebug.Title("..df=2", true);

            distribution.SetDF(2);

            Console.WriteLine("X for probability=0.95, df=2 : " + distribution.GetXForProbability(0.95));
            Assert.AreEqual(0.103, (double)distribution.GetXForProbability(0.95), 0.001);

            Console.WriteLine("X for probability=0.005, df=2 : " + distribution.GetXForProbability(0.005));
            Assert.AreEqual(10.597, (double)distribution.GetXForProbability(0.005), 0.001);

            /* DF=40 */

            PIDebug.Title("..df=40", true);

            distribution.SetDF(40);

            Console.WriteLine("X for probability=0.9, df=40 : " + distribution.GetXForProbability(0.9));
            Assert.AreEqual(29.051, (double)distribution.GetXForProbability(0.9), 0.001);

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density, df=1", true);

            distribution.SetDF(1);

            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=0.7 : " + distribution.GetPDF(0.7));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=7.0 : " + distribution.GetPDF(7.0));
        }
        public void TestMethod()
        {
            /* -- source 3b/5 */

            PIDebug.TitleBig("Polynomial regression");

            /* change decimal places count in formulas */
            PIConfiguration.REGRESSION_DECIMAL_PLACES = 6;

            /* - prepare X data for regression */

            PIVariable X = new PIVariable();

            Assert.IsNotNull(X);

            X.AddMoreValues(50.0, 3);
            X.AddMoreValues(70.0, 3);
            X.AddMoreValues(80.0, 3);
            X.AddMoreValues(90.0, 3);
            X.AddMoreValues(100.0, 3);

            /* - prepare Y data for regression */

            PIVariable Y = new PIVariable();

            Assert.IsNotNull(Y);

            Y.AddValues(new Double[] { 3.3, 2.8, 2.9, 2.3, 2.6, 2.1, 2.5, 2.9, 2.4, 3.0, 3.1, 2.8, 3.3, 3.5, 3.0 });

            /* - create and compute regression */

            PIPolynomialRegression polynomialRegression = new PIPolynomialRegression(X, Y, 2);

            Assert.IsNotNull(polynomialRegression);

            /* show degree */
            Console.WriteLine("degree = " + polynomialRegression.Get_degree());
            PIDebug.Blank();

            /* calculate */
            polynomialRegression.Calc();

            /* - show results */

            Console.WriteLine(polynomialRegression.GetTextFormula());
            Console.WriteLine(polynomialRegression.GetTextFormulaFilled());

            PIDebug.Blank();
            Console.WriteLine(polynomialRegression.Get_coefficients().AsString(3));

            Assert.AreEqual((double)7.960, (double)polynomialRegression.Get_coefficients().GetValue(0), 0.001);
            Assert.AreEqual((double)-0.154, (double)polynomialRegression.Get_coefficients().GetValue(1), 0.001);
            Assert.AreEqual((double)0.001, (double)polynomialRegression.Get_coefficients().GetValue(2), 0.001);

            /* - calc prediction for X = 80 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=80 : " + polynomialRegression.CalcPredictedY(80.0));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(polynomialRegression.GetErrors().AsString(5));
        }
示例#29
0
        public void TestMethod()
        {
            /* -- source 3a/113 */

            PIDebug.TitleBig("Linear regression");

            /* change decimal places count in formulas */
            PIConfiguration.REGRESSION_DECIMAL_PLACES = 6;

            /* - prepare X data for linear regression */

            PIVariable X = new PIVariable();

            Assert.IsNotNull(X);

            X.AddValues(new Double[] { 0.0, 10.0, 25.0, 33.0, 40.0, 50.0, 60.0, 80.0, 100.00 });

            /* - prepare Y data for linear regression */

            PIVariable Y = new PIVariable();

            Assert.IsNotNull(Y);

            Y.AddValues(new Double[] { 1.3329, 1.3440, 1.3612, 1.3693, 1.3761, 1.3881, 1.3970, 1.4142, 1.4291 });

            /* - create and compute regression */

            PILinearRegression linearRegression = new PILinearRegression(X, Y);

            Assert.IsNotNull(linearRegression);

            linearRegression.Calc();

            Console.WriteLine(linearRegression.GetTextFormula());
            Console.WriteLine(linearRegression.GetTextFormulaFilled());

            Assert.AreEqual((double)1.336, (double)linearRegression.Get_A(), 0.001);
            Assert.AreEqual((double)0.00097, (double)linearRegression.Get_B(), 0.00001);

            /* - calc prediction for X = 55 */

            PIDebug.Blank();

            Console.WriteLine("Prediction for X=55 : " + linearRegression.CalcPredictedY(55.0));

            PIDebug.Blank();
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(linearRegression.GetErrors().AsString(5));

            /* ------------------------------------- */

            /* -- another example, source 2a, 566 */

            PIDebug.TitleBig("Linear regression 1", true);

            /* - prepare X data for linear regression */

            PIVariable X1 = new PIVariable();

            Assert.IsNotNull(X1);

            X1.AddValues(new int[] { 2, 3, 3, 3, 4, 4, 5, 5, 5, 6 });

            /* - prepare Y data for linear regression */

            PIVariable Y1 = new PIVariable();

            Assert.IsNotNull(Y1);

            Y1.AddValues(new double[] { 28.7, 24.8, 26.0, 30.5, 23.8, 24.6, 23.8, 20.4, 21.6, 22.1 });

            /* - create and compute regression */

            PILinearRegression linearRegression1 = new PILinearRegression(X1, Y1);

            Assert.IsNotNull(linearRegression1);

            linearRegression1.Calc();

            Console.WriteLine(linearRegression1.GetTextFormula());
            Console.WriteLine(linearRegression1.GetTextFormulaFilled());

            /* - show predictions + errors */

            PIDebug.Blank();
            Console.WriteLine("Predictions:");
            Console.WriteLine(linearRegression1.GetPredicted().AsString(5));
            Console.WriteLine("Prediction errors:");
            Console.WriteLine(linearRegression1.GetErrors().AsString(5));

            PIDebug.Blank();
            Console.WriteLine("SSE = " + linearRegression1.GetSSE());

            Assert.AreEqual((double)28.946, (double)linearRegression1.GetSSE(), 0.001);


            /* ------------------------------------- */

            /* -- another example, source 3e,4 */

            PIDebug.TitleBig("Linear regression 2", true);

            /* - prepare X data for linear regression */

            PIVariable X2 = new PIVariable();

            Assert.IsNotNull(X2);

            X2.AddValues(new int[] { 4, 4, 7, 7, 8, 9, 10, 10, 10, 11 });
            X2.AddValues(new int[] { 11, 12, 12, 12, 12, 13, 13, 13, 13, 14 });
            X2.AddValues(new int[] { 14, 14, 14, 15, 15, 15, 16, 16, 17, 17 });
            X2.AddValues(new int[] { 17, 18, 18, 18, 18, 19, 19, 19, 20, 20 });
            X2.AddValues(new int[] { 20, 20, 20, 22, 23, 24, 24, 24, 24, 25 });

            /* - prepare Y data for linear regression */

            PIVariable Y2 = new PIVariable();

            Assert.IsNotNull(Y2);

            Y2.AddValues(new int[] { 2, 10, 4, 22, 16, 10, 18, 26, 34, 17 });
            Y2.AddValues(new int[] { 28, 14, 20, 24, 28, 26, 34, 34, 46, 26 });
            Y2.AddValues(new int[] { 36, 60, 80, 20, 26, 54, 32, 40, 32, 40 });
            Y2.AddValues(new int[] { 50, 42, 56, 76, 84, 36, 46, 68, 32, 48 });
            Y2.AddValues(new int[] { 52, 56, 64, 66, 54, 70, 92, 93, 120, 85 });

            /* - create and compute regression */

            PILinearRegression linearRegression2 = new PILinearRegression(X2, Y2);

            Assert.IsNotNull(linearRegression2);

            linearRegression2.Calc();

            Console.WriteLine(linearRegression2.GetTextFormula());
            Console.WriteLine(linearRegression2.GetTextFormulaFilled());

            /* - show predictions + errors */

            PIDebug.Blank();
            Console.WriteLine("Predictions:");
            Console.WriteLine(linearRegression2.GetPredicted().AsString(5));
            PIDebug.Blank();
            Console.WriteLine("Prediction errors (residuals):");
            Console.WriteLine(linearRegression2.GetErrors().AsString(5));

            PIDebug.Blank();

            Console.WriteLine("Residuals min. = " + linearRegression2.GetErrors().GetMin());
            Console.WriteLine("Residuals max. = " + linearRegression2.GetErrors().GetMax());

            Assert.AreEqual((double)-29.069, (double)linearRegression2.GetErrors().GetMin(), 0.001);
            Assert.AreEqual((double)43.201, (double)linearRegression2.GetErrors().GetMax(), 0.001);

            PIDebug.Blank();
            Console.WriteLine("Errors sum = " + linearRegression2.GetErrors().GetSum());
            Console.WriteLine("SSE = " + linearRegression2.GetSSE());

            PIDebug.Blank();
            Console.WriteLine("R2 = " + linearRegression2.GetXYR2());
            Console.WriteLine("R2-adjusted = " + linearRegression2.GetXYR2Adj());

            Assert.AreEqual((double)0.6510, (double)linearRegression2.GetXYR2(), 0.001);
            Assert.AreEqual((double)0.6438, (double)linearRegression2.GetXYR2Adj(), 0.001);
        }
示例#30
0
        public void TestMethod()
        {
            /* Source 5R4. */

            PIDebug.TitleBig("Erlang distribution (lambda=1, k=1)");

            PIErlangDistribution distribution = new PIErlangDistribution();

            /* -- 1) Get probability */

            PIDebug.Title("1) Get probability for X (CDF)");

            /* lambda=1, k=1 */
            PIDebug.Title("..lambda=1; k=1");

            Console.WriteLine("Probability for x=0.0 : " + distribution.GetCDF(0.0));
            Assert.AreEqual(0.0, distribution.GetProbability(0.0), 0.001);

            Console.WriteLine("Probability for x=0.1111 : " + distribution.GetCDF(0.1111));
            Assert.AreEqual(0.1053, distribution.GetProbability(0.1111), 0.001);

            Console.WriteLine("Probability for x=0.25 : " + distribution.GetCDF(0.25));
            Assert.AreEqual(0.2213, distribution.GetProbability(0.25), 0.001);

            Console.WriteLine("Probability for x=8 : " + distribution.GetCDF(8));
            Assert.AreEqual(0.9998, distribution.GetProbability(8), 0.001);

            /* lambda=1, k=1 */
            PIDebug.Title("..lambda=2; k=3", true);

            distribution.SetLambda(2);
            distribution.SetK(3);

            Console.WriteLine("Probability for x=0.1111 : " + distribution.GetCDF(0.1111));
            Assert.AreEqual(0.0015, distribution.GetProbability(0.1111), 0.001);

            Console.WriteLine("Probability for x=0.25 : " + distribution.GetCDF(0.25));
            Assert.AreEqual(0.0144, distribution.GetProbability(0.25), 0.001);

            Console.WriteLine("Probability for x=8 : " + distribution.GetCDF(8));
            Assert.AreEqual(1.0, distribution.GetProbability(8), 0.001);


            /* -- 2) Get T for probability */

            PIDebug.Title("2) Get X for probability (InverseCDF)", true);

            PIDebug.Title("..lambda=1, k=1");

            distribution.SetLambda(1);
            distribution.SetK(1);

            Console.WriteLine("X value for probability for prob=0.0 : " + distribution.GetInverseCDF(0.0));
            Assert.AreEqual(0.0, distribution.GetInverseCDF(0.0), 0.001);

            Console.WriteLine("X value for probability for prob=0.1053 : " + distribution.GetInverseCDF(0.1053));
            Assert.AreEqual(0.1111, distribution.GetInverseCDF(0.1053), 0.001);

            Console.WriteLine("X value for probability for prob=0.2213 : " + distribution.GetInverseCDF(0.2213));
            Assert.AreEqual(0.25, distribution.GetInverseCDF(0.2213), 0.001);

            PIDebug.Title("..lambda=2; k=3", true);

            distribution.SetLambda(2);
            distribution.SetK(3);

            Console.WriteLine("X value for probability for prob=0.0015 : " + distribution.GetInverseCDF(0.0015));
            Assert.AreEqual(0.1111, distribution.GetInverseCDF(0.0015), 0.01);

            Console.WriteLine("X value for probability for prob=0.0144 : " + distribution.GetInverseCDF(0.0144));
            Assert.AreEqual(0.25, distribution.GetInverseCDF(0.0144), 0.01);

            /* -- 3) Get probability density */

            PIDebug.Title("3) Get probability density (PDF)", true);

            PIDebug.Title("..lambda=1, k=1");

            distribution.SetLambda(1);
            distribution.SetK(1);

            Console.WriteLine("x=0.1 : " + distribution.GetPDF(0.1));
            Console.WriteLine("x=0.5 : " + distribution.GetPDF(0.5));
            Console.WriteLine("x=1.0 : " + distribution.GetPDF(1.0));
            Console.WriteLine("x=2.0 : " + distribution.GetPDF(2.0));
            Console.WriteLine("x=5.0 : " + distribution.GetPDF(5.0));
        }