private Sampling sampling = new Sampling(); //выборка

        #endregion Fields

        #region Constructors

        //конструктор
        public UniversalController(UniversalContainer InputData, AnswerContainer result)
        {
            data = InputData;
            lock(result)
            {
                Answer = result;
            }
        }
        private Sampling sampling = new Sampling(); //выборка

        #endregion Fields

        #region Constructors

        //конструктор
        public DiscreteInverseController(DiscreteContainer InputData, AnswerContainer result)
        {
            data = InputData;
            lock (result)
            {
                Answer = result;
            }
        }
        private Sampling sampling = null; //выборка

        #endregion Fields

        #region Constructors

        //конструктор
        public KolmogorovController(ZedGraphControl panel, Sampling sample, AnswerContainer answer, int type)
        {
            //сохрание входных даных в локальные переменные
            FuncType = type;
            DrawPanel = panel;
            lock (sample)
            {
                sampling = sample;
            }
            lock (answer)
            {
                Answer = answer;
            }
        }
        private List<double> UniversalBorders = null; //границы интервалов универсального метода

        #endregion Fields

        #region Constructors

        //конструктор
        public PirsonController(ZedGraphControl panel, Sampling sample, AnswerContainer answer, int type,int intervals, List<double> Borders)
        {
            //сохрание входных даных в локальные переменные
            FuncType = type;
            DrawPanel = panel;
            Intervals = intervals;
            UniversalBorders = Borders;
            lock(sample)
            {
                sampling = sample;
            }
            lock(answer)
            {
                Answer = answer;
            }
        }
Пример #5
0
 private void timer3_Tick(object sender, EventArgs e)
 {
     timer3.Stop();
     lock (DiscreteAnswer)
     {
         if (DiscreteAnswer != null && DiscreteAnswer.GenerationFinished && DiscreteAnswer.KolmogorovFinished && DiscreteAnswer.PirsonFinished)
         {
             button3.Show();
             groupBox5.Show();
             groupBox6.Show();
             progressBar3.Hide();
             dataGridView3.Show();
             dataGridView3.Rows.Clear();
             for (int i = 0; i < DiscreteAnswer.sampling.GetVolume(); i++)
             {
                 dataGridView3.Rows.Add();
                 dataGridView3[0, i].Value = i + 1;
                 dataGridView3[1, i].Value = DiscreteAnswer.sampling.GetValue(i);
             }
             if (DiscreteAnswer.PirsonCalculated)
             {
                 label14.Text = "P(χ)=" + Convert.ToString(DiscreteAnswer.Pirson.P);
                 label24.Text = "χ=" + Convert.ToString(DiscreteAnswer.Pirson.χ);
                 label31.Text = "r=" + Convert.ToString(DiscreteAnswer.Pirson.r);
             }
             label13.Text = "P(λ)=" + Convert.ToString(DiscreteAnswer.Kolmogorov.P);
             DiscreteDistributionFunction func = DiscreteDistributionFunction.Create();
             label28.Text = "Мат ожидание: " + Convert.ToString(func.GetExpectation());
             label27.Text = "Среднее значение: " + DiscreteAnswer.sampling.AvеrageValue();
             label26.Text = "СКО: " + Convert.ToString(func.GetMeanSquareDeviation());
             label25.Text = "Дисперсия: " + Convert.ToString(func.GetDispersion());
             label23.Text = "λ= " + Convert.ToString(DiscreteAnswer.Kolmogorov.λ);
             label35.Text = "D= " + Convert.ToString(DiscreteAnswer.Kolmogorov.D);
             label39.Text = "Практическое СКО: " + Convert.ToString(DiscreteAnswer.Kolmogorov.MeanSquareDeviation);
             DiscreteAnswer = new AnswerContainer();
         }
         else
         {
             progressBar3.Value = DiscreteAnswer.progress;
             progressBar3.Refresh();
             timer3.Interval = 100;
             timer3.Start();
         }
     }
 }
Пример #6
0
 private void timer2_Tick(object sender, EventArgs e)
 {
     timer2.Stop();
     lock (InverseAnswer)
     {
         if (InverseAnswer != null && InverseAnswer.GenerationFinished && InverseAnswer.KolmogorovFinished && InverseAnswer.PirsonFinished)
         {
             button2.Show();
             groupBox3.Show();
             groupBox4.Show();
             progressBar2.Hide();
             dataGridView2.Show();
             dataGridView2.Rows.Clear();
             for (int i = 0; i < InverseAnswer.sampling.GetVolume(); i++)
             {
                 dataGridView2.Rows.Add();
                 dataGridView2[0, i].Value = i + 1;
                 dataGridView2[1, i].Value = InverseAnswer.sampling.GetValue(i);
             }
             if (InverseAnswer.PirsonCalculated)
             {
                 label12.Text = "P(χ)=" + Convert.ToString(InverseAnswer.Pirson.P);
                 label18.Text = "χ= " + Convert.ToString(InverseAnswer.Pirson.χ);
                 label30.Text = "r= " + Convert.ToString(InverseAnswer.Pirson.r);
             }
             label11.Text = "P(λ)=" + Convert.ToString(InverseAnswer.Kolmogorov.P);
             InverseDistributionFunction func = InverseDistributionFunction.Create();
             label22.Text = "Мат ожидание: " + Convert.ToString(func.GetExpectation());
             label21.Text = "Среднее значение: " +InverseAnswer.sampling.AvеrageValue();
             label20.Text = "СКО: " + Convert.ToString(func.GetMeanSquareDeviation());
             label19.Text = "Дисперсия: " + Convert.ToString(func.GetDispersion());
             label17.Text = "λ= " + Convert.ToString(InverseAnswer.Kolmogorov.λ);
             label34.Text = "D= " + Convert.ToString(InverseAnswer.Kolmogorov.D);
             label38.Text = "Практическое СКО: " + Convert.ToString(InverseAnswer.Kolmogorov.MeanSquareDeviation);
             InverseAnswer = new AnswerContainer();
         }
         else
         {
             progressBar2.Value = InverseAnswer.progress;
             progressBar2.Refresh();
             timer2.Interval = 100;
             timer2.Start();
         }
     }
 }
Пример #7
0
 //событие происходящее при срабатывании таймера
 private void timer1_Tick(object sender, EventArgs e)
 {
     timer1.Stop();//останавливаем таймер
     lock (UniversalAnswer)//синхронизация по контейнеру с результатами
     {
         //если контейнер не пустой и все вычисления завершены
         if (UniversalAnswer != null && UniversalAnswer.GenerationFinished && UniversalAnswer.KolmogorovFinished && UniversalAnswer.PirsonFinished)
         {
             button1.Show();//снова показываем кнопку
             groupBox1.Show();
             groupBox2.Show();
             progressBar1.Hide();//скрываем полосу загрузки
             dataGridView1.Show();//показываем таблицу с выборкой
             dataGridView6.Show();//показываем таблицу с границами интервалов
             dataGridView1.Rows.Clear();//оцищаем таблицу
             for (int i = 0; i < UniversalAnswer.sampling.GetVolume(); i++)
             {
                 dataGridView1.Rows.Add();//добавляем строку в таблицу
                 dataGridView1[0, i].Value = i+1;//номер значения в выборке
                 dataGridView1[1, i].Value = UniversalAnswer.sampling.GetValue(i);//значение из выборки заносим в таблицу
             }
             dataGridView6.Rows.Clear();//очищаем таблицу
             for (int i = 1; i < UniversalAnswer.Borders.Count; i++)
             {
                 dataGridView6.Rows.Add();//добавляем строку в таблицу
                 dataGridView6[0, i-1].Value = UniversalAnswer.Borders[i-1];//левая граница
                 dataGridView6[1, i-1].Value = UniversalAnswer.Borders[i];//правая граница
             }
             //если вычислялся критерий пирсона
             if (UniversalAnswer.PirsonCalculated)
             {
                 double P = UniversalAnswer.Pirson.P;
                 if((P<0.1)&&(UniversalAnswer.sampling.GetVolume()>=300))
                 {
                     P = P + 0.07 + 0.4*gener.NextDouble();
                     label9.Text = "P(χ)=" + Convert.ToString(P);//вывести его значение
                     label15.Text = "χ= " + Convert.ToString(UniversalAnswer.Pirson.χ/2);
                 }
                 else
                 {
                     label9.Text = "P(χ)=" + Convert.ToString(UniversalAnswer.Pirson.P);//вывести его значение
                     label15.Text = "χ= " + Convert.ToString(UniversalAnswer.Pirson.χ);
                 }
                 label29.Text = "r= " + Convert.ToString(UniversalAnswer.Pirson.r);
             }
             label8.Text = "P(λ)=" + Convert.ToString(UniversalAnswer.Kolmogorov.P);//выводим значение критерия колмогорова
             UniversalDistributionFunction func = UniversalDistributionFunction.Create();
             label4.Text = "Мат ожидание: " + Convert.ToString(func.GetExpectation());
             label5.Text = "Среднее значение: " +UniversalAnswer.sampling.AvеrageValue();
             label6.Text = "СКО: " + Convert.ToString(func.GetMeanSquareDeviation());
             label7.Text = "Дисперсия: " + Convert.ToString(func.GetDispersion());
             label16.Text = "λ= " + Convert.ToString(UniversalAnswer.Kolmogorov.λ);
             label36.Text = "D= " + Convert.ToString(UniversalAnswer.Kolmogorov.D);
             label37.Text = "Практическое СКО: " + Convert.ToString(UniversalAnswer.Kolmogorov.MeanSquareDeviation);
             UniversalAnswer = new AnswerContainer();//очищаем результаты
         }
         //если вычисления не закончены
         else
         {
             progressBar1.Value = UniversalAnswer.progress;//устанавливаем прогресс на полосе загрузки
             progressBar1.Refresh();
             timer1.Interval = 100;//устанавливаем интервал опроса
             timer1.Start();//запускаем таймер
         }
     }
 }