Esempio n. 1
0
        private void button1_Click(object sender, EventArgs eventArgs)
        {
            double a = 0, b = 0;

            if (!double.TryParse(a_TextBox.Text, out a) || !double.TryParse(b_TextBox.Text, out b))
            {
                MessageBox.Show("неправильні дані");
                return;
            }

            double I = _func.PrimitiveF(b) - _func.PrimitiveF(a); // I - точне значення інтегралу

            exactRez_TextBox.Text = I.ToString();                 //вивести точний результат

            int    n  = 1;
            double In = Qmh(a, b, n);

            n *= 2;
            double I2n = Qmh(a, b, n); //  наближене значення інтегралу

            while (Math.Abs((I2n - In) / In) > e)
            {
                In  = I2n;
                n  *= 2;
                I2n = Qmh(a, b, n);
            }

            approxRez_TextBox.Text = I2n.ToString();                                   //вивести результат інтегрування
            n_TextBox.Text         = n.ToString();                                     //вивести кількість розбиттів
            error_TextBox.Text     = Math.Abs(Math.Abs(I) - Math.Abs(I2n)).ToString(); // похибка
        }
        private void button1_Click(object sender, EventArgs eventArgs)
        {
            double a = 0, b = 0;
            int    m = 1;

            if (!double.TryParse(a_TextBox.Text, out a) || !double.TryParse(b_TextBox.Text, out b) || !int.TryParse(m_TextBox.Text, out m))
            {
                MessageBox.Show("неправильні дані");
                return;
            }

            double I = _func.PrimitiveF(b) - _func.PrimitiveF(a); // I - точне значення інтегралу

            exactRez_TextBox.Text = I.ToString();                 //вивести точний результат

            double h = (b - a) / m;

            int n = 4;

            double[] x = new double[] //вузли
            {
                -0.86113631,
                -0.33998104,
                0.33998104,
                0.86113631
            };

            double[] A = new double[] //ваги
            {
                0.34785485,
                0.65214515,
                0.65214515,
                0.34785485
            };

            double Igauss = 0;

            for (int j = 0; j <= m - 1; j++)
            {
                for (int k = 0; k <= n - 1; k++)
                {
                    Igauss += A[k] * _func.F(a + j * h + (h / 2) + (h * x[k] / 2));
                }
            }
            Igauss *= (h / 2);

            approxRez_TextBox.Text = Igauss.ToString();                                   //вивести результат інтегрування
            error_TextBox.Text     = Math.Abs(Math.Abs(I) - Math.Abs(Igauss)).ToString(); // похибка
        }