Каждый последующий член ряда можно определить через предыдущий, используя рекуррентную формулу:
yk+1 = yk·x / k
Текущая погрешность вычислений ε определяется последним просуммированным членом ряда:
ε =|yn|
Эту погрешность необходимо сравнить с заданной погрешностью ε0для реализации условия окончания суммирования:
- если ε > ε0 , то заданная точность еще не достигнута, и суммирование ряда необходимо продолжить, прибавив к имеющейся сумме еще один член,
- если ε <= ε0 , то заданная точность достигнута, и суммирование необходимо прекратить.
Пусть s – искомая сумма,
y – очередной член ряда,
k - номер члена ряда,
eps_0 – заданная точность вычислений,
x – вводимый аргумент.
Схема алгоритма: Программа:
Const eps_0 = 0.001;
Var k : Word;
x, y, s : Real;
Write(‘Значение аргумента = ‘);
y := 1.0; обязательно указатьдробную часть!
k := k + 1;
y := y * x / k;
s := s + y
Until (Abs(y)<=eps_0);
WriteLn(‘Сумма равна ’,s:5:2);
Циклы с постусловием обычно используются в фильтрах входных данных – исходные данные вводятся до тех пор, пока они не будут корректными, а некорректные исходные данные отвергаются.
Пример: по введенному месяцу года определить количество дней в нем.