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(); // похибка }
private double Qmh(double a, double b, int n) { double h = (b - a) / n; double[] x = new double[n + 1]; for (int k = 0; k <= n; k++) { x[k] = a + k * h; } double Q = 0; for (int k = 1; k <= n; k++) { Q += _func.F((x[k - 1] + x[k]) / 2); } Q *= h; return(Q); }