Beispiel #1
0
        public void CalculateIntegralByDifferentTrapeze_Test()
        {
            double result = IntegralCalculation.CalculateIntegralByTrapeze(
                (x) => x * x, 2, -2, 0.01);

            Assert.AreEqual(16.0 / 3, result, 0.01);
        }
Beispiel #2
0
        /// <summary>
        /// Вычисляет функцию Лапласа.
        /// </summary>
        /// <param name="z">Значение.</param>
        /// <returns>Значение функции Лапласа.</returns>
        public double LaplasFunction(double z)
        {
            Func <double, double> funcBelowIntegral = (arg) => Math.Exp(-1 * arg * arg / 2);
            double result = 1 / Math.Sqrt(2 * Math.PI) *
                            IntegralCalculation.CalculateIntegralByTrapeze(
                funcBelowIntegral, z, -100, 0.1);

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// Вычисляет вероятность выполнения условия cond для значения x.
        /// </summary>
        /// <param name="x">Значение.</param>
        /// <param name="cond">Условие.</param>
        /// <returns>Вероятность.</returns>
        public double GetProbabilityWithCondition(double x, ConditionOfProbability cond)
        {
            double z = (x - average) / standDif;
            Func <double, double> funcBelowIntegral = (arg) => Math.Exp(-1 * arg * arg / 2);
            double result = 1 / Math.Sqrt(2 * Math.PI) *
                            IntegralCalculation.CalculateIntegralByTrapeze(
                funcBelowIntegral, z, -100, 0.1);

            if (cond == ConditionOfProbability.RandomVariableMoreThanX || cond == ConditionOfProbability.RandomVariableMoreOrEqualX)
            {
                result = 1 - result;
            }

            return(result);
        }
Beispiel #4
0
        static void Task_4()
        {
            //Вариант 13
            double      alpha = 0.2;
            double      a     = 1.5;
            double      b     = 2.3;
            double      defA  = a;
            ScalarFunk1 f     = (double X) => 2 * Math.Cos(3.5 * X) * Math.Exp(5 * X / 3) + 3 * Math.Sin(1.5 * X) * Math.Exp(-4 * X) + 3;
            ScalarFunk1 p     = (double X) => 1 / Math.Pow(X - a, alpha);

            ScalarFunk1 F = (double X) => f(X) * p(X);

            int    countNode_MRR = 1000;
            double result_MRR    = IntegralCalculation.MiddleRectangleRule(F, a, b, countNode_MRR);

            Console.WriteLine($"Result by MiddleRectangleRule (CountNode: {countNode_MRR}): {result_MRR}");


            int    countNode_IKF_NC = 3;
            double result_IKF_NC    = IntegralCalculation.IKF_NewtonCots(f, defA, a, b, alpha, countNode_IKF_NC);

            Console.WriteLine($"\n\nResult by IKF_NewtonCots (CountNode: {countNode_IKF_NC}): {result_IKF_NC}");

            int    countNode_SKF_NC = 3;
            int    countPart_SKF_NC = 3;
            double h_SKF_NC         = (b - a) / countPart_SKF_NC;
            double result_SKF_NC    = IntegralCalculation.SKF(IntegralCalculation.TypeKF.NewtonCots, f, defA, a, b, alpha, countNode_SKF_NC, h_SKF_NC);

            Console.WriteLine($"Result by SKF IKF_NewtonCots (CountNode: {countNode_SKF_NC}; StepH: {h_SKF_NC};): {result_SKF_NC}");

            Console.WriteLine($"\nAnalysisMethod_NewtonCots");
            int    countNode_analys_NC = 3;
            double Eps_analys_NC       = 10e-6;;
            double result_analys_NC    = IntegralCalculation.AnalysisMethod(IntegralCalculation.TypeKF.NewtonCots, f, defA, a, b, alpha, countNode_analys_NC, Eps_analys_NC);

            Console.WriteLine($"Result : {result_analys_NC}");

            Console.WriteLine($"\nAnalysisMethod_Opt_NewtonCots");
            int    countNode_analys_Opt_NC = 3;
            double Eps_analys_Opt_NC       = 10e-6;;
            double result_analys_Opt_NC    = IntegralCalculation.AnalysisMethod_Opt(IntegralCalculation.TypeKF.NewtonCots, f, defA, a, b, alpha, countNode_analys_Opt_NC, Eps_analys_Opt_NC);

            Console.WriteLine($"Result : {result_analys_Opt_NC}");

            Console.WriteLine("___________________________________________________________________________________________");

            int    countNode_KF_G = 3;
            double result_KF_G    = IntegralCalculation.KF_Gauss(f, defA, a, b, alpha, countNode_KF_G);

            Console.WriteLine($"\n\nResult by KF_Gauss (CountNode: {countNode_KF_G}): {result_KF_G}");

            int    countNode_SKF_G = 3;
            int    countPart_SKF_G = 3;
            double h_SKF_G         = (b - a) / countPart_SKF_G;
            double result_SKF_G    = IntegralCalculation.SKF(IntegralCalculation.TypeKF.Gauss, f, defA, a, b, alpha, countNode_SKF_G, h_SKF_G);

            Console.WriteLine($"Result by SKF KF_Gauss (CountNode: {countNode_SKF_G}; StepH: {h_SKF_G};): {result_SKF_G}");


            Console.WriteLine($"\nAnalysisMethod_Gauss");
            int    countNode_analys_G = 3;
            double Eps_analys_G       = 10e-6;;
            double result_analys_G    = IntegralCalculation.AnalysisMethod(IntegralCalculation.TypeKF.Gauss, f, defA, a, b, alpha, countNode_analys_G, Eps_analys_G);

            Console.WriteLine($"Result : {result_analys_G}");

            Console.WriteLine($"\nAnalysisMethod_Opt_Gauss");
            int    countNode_analys_Opt_G = 3;
            double Eps_analys_Opt_G       = 10e-6;;
            double result_analys_Opt_G    = IntegralCalculation.AnalysisMethod_Opt(IntegralCalculation.TypeKF.Gauss, f, defA, a, b, alpha, countNode_analys_Opt_G, Eps_analys_Opt_G);

            Console.WriteLine($"Result : {result_analys_Opt_G}");
        }
Beispiel #5
0
        private void button1_Click(object sender, EventArgs e)
        {
            var form = new IntegralCalculation();

            form.ShowDialog();
        }