public void CalculateIntegralByDifferentTrapeze_Test() { double result = IntegralCalculation.CalculateIntegralByTrapeze( (x) => x * x, 2, -2, 0.01); Assert.AreEqual(16.0 / 3, result, 0.01); }
/// <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); }
/// <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); }
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}"); }
private void button1_Click(object sender, EventArgs e) { var form = new IntegralCalculation(); form.ShowDialog(); }