Считать сумму ряда до тех пор, пока модуль очередного члена ряда больше заданного числа "e" - PascalABC.NET
Формулировка задачи:
Дан числовой ряд и некоторое число "e". Считать сумму до тех пор, пока модуль очередного члена ряда больше заданного числа "e" или равен ему. Общий член ряда имеет вид: an=1/(2n+1)2
Помогите пожалуйста!
Решение задачи: «Считать сумму ряда до тех пор, пока модуль очередного члена ряда больше заданного числа "e"»
textual
Листинг программы
var e := ReadlnReal('e = ');
begin
writeln('s = ', Range(0, Integer.MaxValue - 1).Select(i -> 1 / Sqr(2*i+1)).TakeWhile(f -> abs(f) > e).Sum());
end.
Объяснение кода листинга программы
- В начале кода объявляется переменная
eи ей присваивается значение, которое считывается с помощью функцииReadlnReal. - Затем выводится сообщение с помощью функции
writeln, в котором указывается формула для вычисления суммы ряда. - Далее, с помощью функции
Rangeсоздается последовательность чисел от 0 доInteger.MaxValue - 1. - Для каждого числа в этой последовательности вычисляется значение
1 / Sqr(2*i+1), гдеSqr- это функция из библиотекиMathдля вычисления квадратного корня, аi- это текущее значение из последовательности. - Полученные значения проходят через функцию
TakeWhile, которая фильтрует последовательность, оставляя только те значения, модуль которых больше заданного числаe. - Результат фильтрации последовательности вычисляется с помощью функции
Sum, которая суммирует все значения в последовательности. - Наконец, полученная сумма выводится на экран с помощью функции
writeln.