using System using System Collections Generic using System Linq using

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Rectangle_method {
class Program {
// значение функции
public static double getFunction(double x) {
double retValue = Math.Sqrt(Math.Pow(Math.E, x) - 1);
return retValue;
}
// значение первообразной
public static double getAntiderivative(double x) {
double retValue = 2.0 * Math.Sqrt(Math.Pow(Math.E, x) - 1) - 2.0 * Math.Atan(Math.Sqrt(Math.Pow(Math.E, x) - 1));
return retValue;
}
// вычисление интеграла
public static double calcIntegral(double a, double b, double n) {
double retValue = 0, // возвращаемое значение
h = (b - a) / n, // вычисляем шаг сетки
curApproximation = 0.0; // текущее приближение
// составная формула средних прямоугольников
for (int i = 1; i <= n; ++i) {
curApproximation = a + i * h;
retValue += getFunction(curApproximation - h * 0.5);
}
retValue *= h;
return retValue;
}
static void Main(string[] args) {
// пределы интегрирования
double a = 0.0,
b = Math.Log(2),
n = 100;
double J1 = calcIntegral(a, b, n),
J2 = getAntiderivative(b) - getAntiderivative(a);
Console.WriteLine("Значение интеграла: {0:f5}", J1);
Console.WriteLine("Проверка: F(b) - F(a) = {0:f5}", J2);
Console.WriteLine("Относительная точность приблеженного значения интеграла: {0:f2}%",
Math.Abs(J1 - J2) / J2 * 100);
}
}
}