Exemplo n.º 1
0
        private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
        {
            double a = double.Parse(textBox1.Text, CultureInfo.InvariantCulture);

            if (comboBox1.SelectedIndex == 0)
            {
                MessageBox.Show("Ви обрали пуасонівський розподіл!");
                //textBox2.Visible = false;
                //label11.Visible = false;
                //label12.Visible = false;
                if (a < 0)
                {
                    MessageBox.Show("Параметр має бути більше 0!");
                }
                else
                {
                    Pois   p1 = new Pois(a);
                    double expv;
                    expv        = p1.Ma();
                    lbl_MO.Text = "Ex = lambda = " + expv;
                    double disp;
                    disp         = p1.Dis();
                    label7.Text  = "Dx = lambda = " + disp;
                    label8.Text  = "Розподіл дискретний!";
                    label9.Text  = "Розподіл дискретний!";
                    label10.Text = "Розподіл дискретний!";
                }
            }

            if (comboBox1.SelectedIndex == 1)
            {
                double b = double.Parse(textBox2.Text, CultureInfo.InvariantCulture);
                MessageBox.Show("Ви обрали рівномірний розподіл!");
                if (a > b)
                {
                    MessageBox.Show("b має бути більше, ніж a!");
                }
                else
                {
                    U      u1 = new U(a, b);
                    double expv;
                    expv        = u1.Ma();
                    lbl_MO.Text = "Ex = (a+b)/2 = " + expv;
                    double disp;
                    disp        = u1.Dis();
                    label7.Text = "Dx = (b-a)^2/12 = " + disp;
                    double c = b - a;
                    label8.Text = "F(x)=(x-a)/(b-a) = (x-" + a + ")/" + c + "";
                    label9.Text = "f=1/(b-a) = 1/" + c;

                    Graphics g = pictureBox1.CreateGraphics();

                    x1 += (a + b) / 2;
                    x2 += (a + b) / 2;
                    y1  = 1 / (b - a) + 1;
                    g.Clear(Color.White);
                    DrawXoY();

                    Pen my = new Pen(Brushes.Blue, 3);
                    g.DrawLine(my, XtoI(a), YtoJ(1 / (b - a)), XtoI(b), YtoJ(1 / (b - a)));
                    g.DrawLine(my, XtoI(x1), YtoJ(0), XtoI(a), YtoJ(0));
                    g.DrawLine(my, XtoI(b), YtoJ(0), XtoI(x2), YtoJ(0));
                }
            }

            if (comboBox1.SelectedIndex == 2)
            {
                MessageBox.Show("Ви обрали експоненціальний розподіл!");
                //textBox2.Visible = false;
                //label11.Visible = false;
                //label12.Visible = false;
                if (a < 0)
                {
                    MessageBox.Show("Параметр має бути більше 0!");
                }
                else
                {
                    Exp    e1 = new Exp(a);
                    double expv;
                    expv        = e1.Ma();
                    lbl_MO.Text = "Ex = 1/lambda = " + expv;
                    double disp;
                    disp        = e1.Dis();
                    label7.Text = "Dx = 1/lambda^2 = " + disp;
                    label8.Text = "F(x) = 1 - e^(-lambda*x) = 1 - e^(-" + a + "*x)";
                    label9.Text = "f = lambda*e^(--lambda*x) = " + a + "*e^(-" + a + "*x)";

                    x1 -= a - 5;
                    x2 += a + 5;
                    y1 += a - 4;
                    //y2-=a+1;
                    Graphics g  = pictureBox1.CreateGraphics();
                    Pen      my = new Pen(Brushes.Red, 2);
                    DrawXoY();

                    for (double i = 0; i <= x2; i += 0.003)
                    {
                        double j = a * Math.Pow(Math.E, -a * i);
                        g.DrawEllipse(my, XtoI(i), YtoJ(j), 1, 1);
                    }
                }
            }

            if (comboBox1.SelectedIndex == 3)
            {
                double b = double.Parse(textBox2.Text, CultureInfo.InvariantCulture);
                MessageBox.Show("Ви обрали гаусівський розподіл!");
                label14.Visible = true;
                if (b < 0)
                {
                    MessageBox.Show("Dx має бути більше 0!");
                }
                else
                {
                    N      n1 = new N(a, b);
                    double expv;
                    expv        = n1.Ma();
                    lbl_MO.Text = "Ex = a = " + expv;
                    double disp;
                    disp        = n1.Dis();
                    label7.Text = "Dx = " + disp;
                    label8.Text = "F(x) = 1/2 + Ф((x-a)/(sqrt(Dx)) = 1/2 + Ф((x-" + a + ")/" + Math.Sqrt(b) + ")";
                    label9.Text = "f = 1/(sqrt(Dx*2*pi)) * e^(-(x-a)^2 / (2 * Dx) = \n = "
                                  + 1 / (Math.Sqrt(b * 2 * Math.PI)) + "*e^(-(x - " + a + ")^2 / " + 2 * b;

                    y1  = 1.5;
                    x1 += a;
                    x2 += a;
                    Graphics g  = pictureBox1.CreateGraphics();
                    Pen      my = new Pen(Brushes.Red, 2);
                    DrawXoY();

                    for (double i = x1; i <= x2; i += 0.003)
                    {
                        double j = 1 / (Math.Sqrt(b * 2 * Math.PI)) * Math.Pow(Math.E, -(Math.Pow((i - a), 2) / (2 * b)));
                        g.DrawEllipse(my, XtoI(i), YtoJ(j), 1, 1);
                    }
                }
            }

            if (comboBox1.SelectedIndex == 4)
            {
                MessageBox.Show("Ви обрали геометричний розподіл!");
                textBox2.Visible = false;
                label11.Visible  = false;
                label12.Visible  = false;
                if (a > 1 || a < 0)
                {
                    MessageBox.Show("p має бути від 0 до 1!");
                }
                else
                {
                    Geom   g1 = new Geom(a);
                    double expv;
                    expv        = g1.Ma();
                    lbl_MO.Text = "Ex = q/p = " + expv;
                    double disp;
                    disp         = g1.Dis();
                    label7.Text  = "Dx = q/p^2 = " + disp;
                    label8.Text  = "Розподіл дискретний!";
                    label9.Text  = "Розподіл дискретний!";
                    label10.Text = "Розподіл дискретний!";
                }
            }

            if (comboBox1.SelectedIndex == 5)
            {
                double b = double.Parse(textBox2.Text, CultureInfo.InvariantCulture);
                MessageBox.Show("Ви обрали біноміальний розподіл!");
                if (a < 0)
                {
                    MessageBox.Show("n має бути більше 0!");
                }
                else
                {
                    if (b > 1 || b < 0)
                    {
                        MessageBox.Show("p має бути від 0 до 1!");
                    }
                    else
                    {
                        Bin    b1 = new Bin(a, b);
                        double expv;
                        expv        = b1.Ma();
                        lbl_MO.Text = "Ex = n*p = " + expv;
                        double disp;
                        disp         = b1.Dis();
                        label7.Text  = "Dx = n*p*q = " + disp;
                        label8.Text  = "Розподіл дискретний!";
                        label9.Text  = "Розподіл дискретний!";
                        label10.Text = "Розподіл дискретний!";
                    }
                }
            }
        }