Example #1
0
        //ИСПРАВИТЬ ЛЯМБДУ!
        private double lambdaVeibula(List <double> ourNum1)
        {
            MyMath ourOperation = new MyMath();
            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  = 0.5;

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

            foreach (var el in ourNum1)
            {
                if (el >= 0)
                {
                    double ourT = 1;

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

                    ourT -= ourT2;

                    ourNum2.Add(ourT);
                }
                else
                {
                    ourNum2.Add(0);
                }
            }

            double ourAnswer = 0;

            for (int i = 0; i < ourNum1.Count - 1; i++)
            {
                if (ourNum1[i] > 0 && ourNum2[i] > 0)
                {
                    double a = Math.Log(Math.Log(1 / (1 - ourNum2[i]))) - ourA - ourBeta * Math.Log(ourNum1[i]);
                    ourAnswer += Math.Pow(a, 2);
                }
            }
            ourAnswer = ourAnswer / (ourNum1.Count - 3);

            return(ourAnswer);
        }
Example #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);
        }
Example #3
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)
                    {
                    }
                }
            }
        }
Example #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);
        }