Решение интеграла методом прямоугольников - C#
Формулировка задачи:
Помогите, пожалуйста, улучшить программу.Вся проблема в том, что если задать количество прямоугольников больше 25,то программа выдаёт NaN.Число PI является решением интеграла.
//метод средних прямоугольников
//h-высота,s-вся площадь,k-точность,n-количество прямоугольников,f-функция
double a=0, b=2, h, s=0, n, k, f;
Console.WriteLine("Введите количество прямоугольников");
n = double.Parse(Console.ReadLine());
h = (b - a) / n;
for (double x1=0,x=a;x<=b;x+=h)
{
if (x < b)
{
x1 = x + h / 2;
f = Math.Pow(x1, 2) * Math.Sqrt(4 - x1 * x1);
s +=f;
}
}
k = Math.Abs(Math.PI-s*h);
Console.WriteLine("**********************************");
Console.WriteLine("Данный интеграл равен: {0:0.0000}", s*h);
Console.WriteLine();
Console.WriteLine("Точность вычисления: {0:0.0000}",k);
Console.ReadKey();Решение задачи: «Решение интеграла методом прямоугольников»
textual
Листинг программы
double a = 0, b = 2, h, s = 0, n, k, f;
Console.WriteLine("Введите количество прямоугольников");
n = double.Parse(Console.ReadLine());
h = (b - a) / n;
for (double x1 = 0, x = a; x <= b; x += h)
{
if (x < b)
{
x1 = x + h / 2;
if (x1 >= 2)
continue;
f = Math.Pow(x1, 2) * Math.Sqrt((4 - x1 * x1));
s += f;
}
}
k = Math.Abs(Math.PI - s * h);
Console.WriteLine("**********************************");
Console.WriteLine("Данный интеграл равен: {0:0.0000}", s * h);
Console.WriteLine();
Console.WriteLine("Точность вычисления: {0:0.0000}", k);
Console.ReadKey();