Beispiel #1
0
        //Вейбулла

        private void createOurHrap(List <double> ourNum1)
        {
            Series series1 = new Series();

            series1.ChartArea = "ChartArea1";
            series1.Legend    = "Legend1";
            series1.Name      = "Series4";
            series1.ChartType = SeriesChartType.Line;
            chart1.Series.Add(series1);

            MyMath ourOperation = new MyMath();

            List <double> ourNum2 = new List <double> {
            };

            if (ourChoice == 1)//Вейбулла
            {
                double ourA = ourOperation.middleMomentumN_Find(ourNum1, 3) / Math.Pow(ourOperation.middleMomentumN_Find(ourNum1, 2), 3.0 / 2.0);

                Console.WriteLine($"{ourA}");
                double ourAlpha = Math.Exp(-ourA);

                double ourBeta = 1.2;

                foreach (var el in ourNum1)
                {
                    if (el >= 0)
                    {
                        double ourT = ourBeta / ourAlpha;

                        double ourT2 = Math.Pow(el, ourBeta - 1.0);

                        ourT *= ourT2;

                        ourT2 = Math.Exp(-(Math.Pow(el, ourBeta) / ourAlpha));

                        ourT *= ourT2;

                        Console.WriteLine($"{ourT} {ourT2} {el} {ourBeta} {ourAlpha}");

                        ourT *= ourHTemp;

                        ourNum2.Add(ourT);
                    }
                }

                for (int kz = 0; kz < ourNum1.Count; kz++)
                {
                    try
                    {
                        chart1.Series["Series4"].Points.AddXY(ourNum1[kz], ourNum2[kz]);
                    }
                    catch (Exception)
                    {
                    }
                }
            }//Вейбулла
            else if (ourChoice == 2)
            {
                double ourM       = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);

                double ourN1 = ourNum1.Count;

                ourN1 = ourN1 / (ourN1 - 1);

                double ourO = ourN1 * Math.Sqrt((ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));


                foreach (var el in ourNum1)
                {
                    double ourT  = 1 / (ourO * Math.Sqrt(2 * Math.PI));
                    double ourT2 = Math.Exp(-((Math.Pow(el - ourM, 2) / (2 * Math.Pow(ourO, 2)))));

                    ourT *= ourT2;

                    ourT *= ourHTemp;


                    ourNum2.Add(ourT);
                }
                for (int kz = 0; kz < ourNum1.Count; kz++)
                {
                    try
                    {
                        chart1.Series["Series4"].Points.AddXY(ourNum1[kz], ourNum2[kz]);
                    }
                    catch (Exception)
                    {
                    }
                }
            }//Нормальний
            else if (ourChoice == 3)
            {
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);
                double ourA       = ourDeltaX - Math.Sqrt(3 * (ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));
                double ourB       = ourDeltaX + Math.Sqrt(3 * (ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                foreach (var el in ourNum1)
                {
                    if (el < ourA || el > ourB)
                    {
                        ourNum2.Add(0);
                    }
                    else
                    {
                        ourNum2.Add(ourHTemp / (ourB - ourA));
                    }
                }
                for (int kz = 0; kz < ourNum1.Count; kz++)
                {
                    try
                    {
                        chart1.Series["Series4"].Points.AddXY(ourNum1[kz], ourNum2[kz]);
                    }
                    catch (Exception)
                    {
                    }
                }
            }//Рівномірний
            else if (ourChoice == 4)//Експоненціальний
            {
                double ourLambda = 1 / ourOperation.ourDeltaX_Find(ourNum1);
                foreach (var el in ourNum1)
                {
                    if (el < 0)
                    {
                        ourNum2.Add(0);
                    }
                    else
                    {
                        ourNum2.Add(ourHTemp * ourLambda * (Math.Exp((-ourLambda) * el)));
                    }
                }
                for (int kz = 0; kz < ourNum1.Count; kz++)
                {
                    try
                    {
                        chart1.Series["Series4"].Points.AddXY(ourNum1[kz], ourNum2[kz]);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            else if (ourChoice == 5)//Арксинус
            {
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);
                double ourA       = Math.Sqrt(2) * Math.Sqrt(ourDeltaXX - Math.Pow(ourDeltaX, 2.0));
                foreach (var el in ourNum1)
                {
                    if (el > -ourA && el < ourA)
                    {
                        double ourAnswer = 1 / (3.14 * Math.Sqrt(ourA * ourA - el * el));
                        ourAnswer *= ourHTemp;
                        ourNum2.Add(ourAnswer);
                    }
                }
                for (int kz = 0; kz < ourNum1.Count; kz++)
                {
                    try
                    {
                        chart1.Series["Series4"].Points.AddXY(ourNum1[kz], ourNum2[kz]);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }
Beispiel #2
0
        private void dataGreedViewCreate2(List <double> ourNum1)
        {
            ourData4 = new DataGridView();
            ourData4.Columns.Add("", "");
            ourData4.Rows.Add("Довірче оцінювання");
            MyMath ourOperation = new MyMath();

            ourData4.Size     = new Size(350, 200);
            ourData4.Location = new Point(1180, 280);

            if (ourChoice == 1)//Вейбулла
            {
                double ourA = ourOperation.middleMomentumN_Find(ourNum1, 3) / Math.Pow(ourOperation.middleMomentumN_Find(ourNum1, 3), 3.0 / 2.0);

                double ourAlpha = Math.Exp(-ourA);
                double ourBeta  = 1.2;

                double a11 = ourNum1.Count - 1;
                double a22 = 0;
                for (int i = 0; i < ourNum1.Count; i++)
                {
                    if (ourNum1[i] > 0)
                    {
                        a22 += Math.Log(ourNum1[i]);
                    }
                }
                double a33 = 0;
                for (int i = 0; i < ourNum1.Count; i++)
                {
                    if (ourNum1[i] > 0)
                    {
                        a33 += Math.Pow(Math.Log(ourNum1[i]), 2.0);
                    }
                }

                double ourS = lambdaVeibula(ourNum1);

                Console.WriteLine($"{ourS} {a11} {a22} {a33}");

                double ourDA = (a33 * ourS) / (a11 * a33 - a22 * a22);
                double ourDB = (a11 * ourS) / (a11 * a33 - a22 * a22);
                double cov   = (a22 * ourS) / (a11 * a33 - a22 * a22);

                cov = -Math.Exp(ourA) * cov;

                ourData4.Columns.Add("A", "A");
                ourData4.Columns.Add("B", "B");

                ourDA = Math.Exp(-2 * ourA) * ourDA;
                ourData4.Rows.Add("Оцінка", ourAlpha, ourBeta);
                ourData4.Rows.Add("Дисперсія", ourDA, ourDB);
                ourData4.Rows.Add("Верхня межа", ourAlpha + Math.Sqrt(ourDA), ourBeta + Math.Sqrt(ourDB));
                ourData4.Rows.Add("Нижня межа", ourAlpha - Math.Sqrt(ourDA), ourBeta - Math.Sqrt(ourDB));
            }
            else if (ourChoice == 2)
            {
                double ourM = ourOperation.ourDeltaX_Find(ourNum1);

                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);

                double ourN1 = ourNum1.Count;

                ourN1 = ourN1 / (ourN1 - 1);

                double ourO = ourN1 * Math.Sqrt((ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                double ourDA = Math.Pow(ourO, 2) / ourNum1.Count;

                double ourDB = Math.Pow(ourO, 2) / (2 * ourNum1.Count);

                double cov = 0;

                ourData4.Columns.Add("m", "m");
                ourData4.Columns.Add("SIGMA", "SIGMA");

                ourData4.Rows.Add("Оцінка", ourM, ourO);
                ourData4.Rows.Add("Дисперсія", ourDA, ourDB);
                ourData4.Rows.Add("Верхня межа", ourM + Math.Sqrt(ourDA), ourO + Math.Sqrt(ourDB));
                ourData4.Rows.Add("Нижня межа", ourM - Math.Sqrt(ourDA), ourO - Math.Sqrt(ourDB));
            }//Нормальний
            else if (ourChoice == 3)
            {
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);
                double ourA       = ourDeltaX - Math.Sqrt(3 * (ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));
                double ourB       = ourDeltaX + Math.Sqrt(3 * (ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                double ourDA = Math.Pow((ourB - ourA), 2) / (12 * ourNum1.Count);

                double ourDB = (Math.Pow((ourB - ourA), 4) + 15 * Math.Pow(ourB + ourA, 4) * Math.Pow(ourB - ourA, 2)) / (180 * ourNum1.Count);

                double cov = (ourA + ourB) * Math.Pow(ourB - ourA, 2) / (12 * ourNum1.Count);

                ourData4.Columns.Add("A", "A");
                ourData4.Columns.Add("B", "B");

                ourData4.Rows.Add("Оцінка", ourA, ourB);
                ourData4.Rows.Add("Дисперсія", ourDA, ourDB);
                ourData4.Rows.Add("Верхня межа", ourA + Math.Sqrt(ourDA), ourB + Math.Sqrt(ourDB));
                ourData4.Rows.Add("Нижня межа", ourA - Math.Sqrt(ourDA), ourB - Math.Sqrt(ourDB));
            }//Рівномірний
            else if (ourChoice == 4)//Експоненціальний
            {
                double ourLambda = 1 / ourOperation.ourDeltaX_Find(ourNum1);

                double ourDA = Math.Pow(ourLambda, 2) / ourNum1.Count;

                ourData4.Columns.Add("LAMBDA", "LAMBDA");

                ourData4.Rows.Add("Оцінка", ourLambda);
                ourData4.Rows.Add("Дисперсія", ourDA);
                ourData4.Rows.Add("Верхня межа", ourLambda + Math.Sqrt(ourDA));
                ourData4.Rows.Add("Нижня межа", ourLambda - Math.Sqrt(ourDA));
            }
            else if (ourChoice == 5)//Арксинус
            {
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);
                double ourA1      = Math.Sqrt(2) * Math.Sqrt((ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                double ourDA = Math.Pow(ourA1, 4) / (8 * ourNum1.Count);

                ourData4.Columns.Add("A", "A");

                ourData4.Rows.Add("Оцінка", ourA1);
                ourData4.Rows.Add("Дисперсія", ourDA);

                ourData4.Rows.Add("Верхня межа", ourA1 + Math.Sqrt(ourDA));
                ourData4.Rows.Add("Нижня межа", ourA1 - Math.Sqrt(ourDA));
            }

            Controls.Add(ourData4);
        }
Beispiel #3
0
        private void letsMathsThis(List <double> ourPi, List <double> ourXi, double count, double h)
        {
            MyMath ourOperation = new MyMath();

            double[] a = ourNumber.Split(' ').
                         Where(x => !string.IsNullOrWhiteSpace(x)).
                         Select(x => double.Parse(x)).ToArray();
            Array.Sort(a);
            List <double> ourNum1 = a.ToList();

            //
            ourData2 = new DataGridView();
            ourData2.Columns.Add("NAME", "NAME");
            ourData2.Columns.Add("COUNT", "COUNT");

            ourData2.Size     = new Size(350, 200);
            ourData2.Location = new Point(10, 280);
            //СА
            double deltaX = 0;

            deltaX = ourOperation.ourDeltaX_Find(ourNum1);
            //СЕРЕДНЬОКВАДРАТИЧНОГО
            double deltaDevX = ourOperation.deltaDevX_Find(ourNum1);
            //КОЕФ АСИМЕТРІЇ
            double ourA = ourOperation.A_Find(ourNum1);

            double ourAС = ourOperation.AC_Find(ourNum1);
            //ЗСУНЕНИЙ ЕКСЦЕСУ
            double ourE = ourOperation.ourE_Find(ourNum1);
            //НЕЗСУНЕНИЙ ЕКСЦЕСУ
            double deltaOurE = ourOperation.ourEC_Find(ourNum1);
            // КОНТРЕКСЦЕСУ
            double ourE1 = ourOperation.ourECE_Find(ourNum1);
            // ВАРІАЦІЇ ПІРСОНА
            double ourW = ourOperation.ourW_Find(ourNum1);
            //
            double MED = ourOperation.ourMED(ourNum1);

            double MAD = ourOperation.ourMAD(MED);
            // Усічене середнє
            double usicheneSeredne = ourOperation.ourTrun_Average_Find(ourNum1);

            //
            deltaX          = ourOperation.ourRound(deltaX, 2);
            deltaDevX       = ourOperation.ourRound(deltaDevX, 2);
            ourA            = ourOperation.ourRound(ourA, 2);
            ourAС           = ourOperation.ourRound(ourAС, 2);
            ourE            = ourOperation.ourRound(ourE, 2);
            ourE1           = ourOperation.ourRound(ourE1, 2);
            ourW            = ourOperation.ourRound(ourW, 2);
            MED             = ourOperation.ourRound(MED, 2);
            MAD             = ourOperation.ourRound(MAD, 2);
            usicheneSeredne = ourOperation.ourRound(usicheneSeredne, 2);

            ourData2.Rows.Add("СА", $"{deltaX}");
            ourData2.Rows.Add("СЕРЕДНЬОКВАДРАТИЧНОГО", $"{deltaDevX}");
            ourData2.Rows.Add("КОЕФ АСИМЕТРІЇ", $"{ourA}");
            ourData2.Rows.Add("КОЕФ АСИМЕТРІЇ", $"{ourAС}");
            ourData2.Rows.Add("ЕКСЦЕСУ", $"{ourE}");
            ourData2.Rows.Add("КОНТРЕКСЦЕСУ", $"{ourE1}");
            ourData2.Rows.Add("ВАРІАЦІЇ ПІРСОНА", $"{ourW}");
            ourData2.Rows.Add("MED", $"{MED}");
            ourData2.Rows.Add("MAD", $"{MAD}");
            ourData2.Rows.Add("УСІЧЕНЕ СЕРЕДНЄ", $"{usicheneSeredne}");

            double ourOdeltaX = ourOperation.ourODeltaX_Find(ourNum1);
            double ourOSC     = ourOperation.ourOSC_Find(ourNum1);
            double ourOAC     = ourOperation.ourOAC_Find(ourNum1);
            double ourOEC     = ourOperation.ourOEC_Find(ourNum1);

            //a == 0.05, y == 0.95
            double ourS = ourOperation.ourSC_Find(ourNum1);

            double ourY = 0.95;
            double oura = 1 - ourY;
            int    ourv = ourNum1.Count - 1;

            double ourStudentaT = ourOperation.ourKVANTIL_Find(ourv);

            ourData3.Columns.Add("o1", "o1");

            ourData3.Columns.Add("0.95%", "0.95%");

            ourData3.Columns.Add("o2", "o2");

            ourOdeltaX = ourOperation.ourRound(ourOdeltaX, 2);
            ourOSC     = ourOperation.ourRound(ourOSC, 2);
            ourOAC     = ourOperation.ourRound(ourOAC, 2);
            ourOEC     = ourOperation.ourRound(ourOEC, 2);

            ourData3.Rows.Add(deltaX - ourStudentaT * ourOdeltaX, "СЕРЕДНЄ", deltaX + ourStudentaT * ourOdeltaX);
            ourData3.Rows.Add(ourS - ourStudentaT * ourOSC, "СЕРЕДНЬОКВАДРАТИЧНЕ", ourS + ourStudentaT * ourOSC);
            ourData3.Rows.Add(ourAС - ourStudentaT * ourOAC, "АСИМЕТРІЯ", ourAС + ourStudentaT * ourOAC);
            ourData3.Rows.Add(ourE1 - ourStudentaT * ourOEC, "КОНТРЕКСЦЕСУ", ourE1 + ourStudentaT * ourOEC);


            ourData3.Size     = new Size(350, 200);
            ourData3.Location = new Point(400, 280);


            Controls.Add(ourData2);

            Controls.Add(ourData3);
        }
Beispiel #4
0
        private void dataGreedViewCreate(List <double> ourNum1)
        {
            ourData4 = new DataGridView();
            ourData4.Columns.Add("NAME", "NAME");
            ourData4.Columns.Add("COUNT", "COUNT");
            MyMath ourOperation = new MyMath();

            ourData4.Size     = new Size(350, 200);
            ourData4.Location = new Point(790, 280);

            if (ourChoice == 1)//Вейбулла
            {
                double ourA = ourOperation.middleMomentumN_Find(ourNum1, 3) / Math.Pow(ourOperation.middleMomentumN_Find(ourNum1, 3), 3.0 / 2.0);

                double ourAlpha     = Math.Exp(-ourA);
                double ourBeta      = 1.2;
                double ourMatSpodiv = Math.Pow(ourAlpha, 2.0 / ourBeta) * Gamma(1 + 1 / ourBeta);

                double ourD = Math.Pow(ourAlpha, 2.0 / ourBeta) * (Gamma(1 + 2 / ourBeta) - Math.Pow(Gamma(1 + 1 / ourBeta), 2.0));

                double ourE = ourOperation.middleMomentumN_Find(ourNum1, 4) / Math.Pow(ourOperation.middleMomentumN_Find(ourNum1, 2), 2.0) - 3;

                ourData4.Rows.Add("Мат сподівання", ourMatSpodiv);
                ourData4.Rows.Add("Дисперсія", ourD);
                ourData4.Rows.Add("Коеф Асиметрії", ourA);
                ourData4.Rows.Add("Ексцесу", ourE);
            }
            else if (ourChoice == 2)
            {
                double ourM = ourOperation.ourDeltaX_Find(ourNum1);

                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);

                double ourN1 = ourNum1.Count;

                ourN1 = ourN1 / (ourN1 - 1);

                double ourO = ourN1 * Math.Sqrt((ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                double ourMatSpodiv = ourM;
                double ourD         = ourO * ourO;
                double ourA         = 0;

                double ourE = 0;

                ourData4.Rows.Add("Мат сподівання", ourMatSpodiv);
                ourData4.Rows.Add("Дисперсія", ourD);
                ourData4.Rows.Add("Коеф Асиметрії", ourA);
                ourData4.Rows.Add("Ексцесу", ourE);
            }//Нормальний
            else if (ourChoice == 3)
            {
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);
                double ourA       = ourDeltaX - Math.Sqrt(3 * (ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));
                double ourB       = ourDeltaX + Math.Sqrt(3 * (ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                double ourMatSpodiv = (ourA + ourB) / 2;
                double ourD         = Math.Pow(-ourA + ourB, 2.0) / 12;
                double ourA1        = 0;

                double ourE = -1.2;

                ourData4.Rows.Add("Мат сподівання", ourMatSpodiv);
                ourData4.Rows.Add("Дисперсія", ourD);
                ourData4.Rows.Add("Коеф Асиметрії", ourA1);
                ourData4.Rows.Add("Ексцесу", ourE);
            }//Рівномірний
            else if (ourChoice == 4)//Експоненціальний
            {
                double ourLambda = 1 / ourOperation.ourDeltaX_Find(ourNum1);

                double ourMatSpodiv = 1 / ourLambda;
                double ourD         = 1 / (ourLambda * ourLambda);
                double ourA         = 2;

                double ourE = 6;

                ourData4.Rows.Add("Мат сподівання", ourMatSpodiv);
                ourData4.Rows.Add("Дисперсія", ourD);
                ourData4.Rows.Add("Коеф Асиметрії", ourA);
                ourData4.Rows.Add("Ексцесу", ourE);
            }
            else if (ourChoice == 5)//Арксинус
            {
                double ourDeltaX  = ourOperation.ourDeltaX_Find(ourNum1);
                double ourDeltaXX = ourOperation.ourDeltaXX_Find(ourNum1);
                double ourA1      = Math.Sqrt(2) * Math.Sqrt((ourDeltaXX - Math.Pow(ourDeltaX, 2.0)));

                double ourMatSpodiv = 0;
                double ourD         = ourA1 * ourA1 / 2;
                double ourA         = 0;

                double ourE = -1.5;

                ourData4.Rows.Add("Мат сподівання", ourMatSpodiv);
                ourData4.Rows.Add("Дисперсія", ourD);
                ourData4.Rows.Add("Коеф Асиметрії", ourA);
                ourData4.Rows.Add("Ексцесу", ourE);
            }

            Controls.Add(ourData4);
        }