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; } }
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(); } } }
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(); } } }
//событие происходящее при срабатывании таймера 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();//запускаем таймер } } }