Пример 5.1.
Вычислить значение суммы членов бесконечного ряда
при x = 0.1 с точностью до члена ряда с модулем, меньшим E=10-10.
Для вычисления очередного члена ряда будем использовать рекуррентное соотношение, связывающее его с предыдущим членом a(n+1) = q*a(n). Применение рекуррентных формул позволяет избежать вычисления факториала и возведения в произвольную степень. Рекуррентный коэффициент q найдем из выражений для текущего и следующего членов ряда
и .
Деля второе выражение на первое, получим
Значение начального члена ряда задаем до цикла путем прямого присваивания (номер начального члена n в разных вариантах равен 0 или 1, правильное значение определяется по формуле текущего члена). В нашем задании n=0, a=x.
Блок- схема алгоритма приведена на рисунке.
Листинг программы
program prg_5_1;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, RusTrans;
var
a,e,q,s,x: real;
n: integer;
begin
writeln(Rus(‘Введите точность’)); // Ввод данных
write(‘e=’);
readln(e);
writeln(Rus(‘Введите аргумент’));
write(‘x=’);
readln(x);
n := 0; // Инициализация цикла
a := x;
s := a;
while abs(a)>E do // Начало цикла
begin // Тело цикла
q:=-x*x/(2*n+2)/(2*n+3);
a:=a*q;
s:=s+a;
n:=n+1;
end;
writeln;
writeln(Rus(‘Результат’)); // Вывод результатов
writeln(Rus(‘Сумма s=’),s:8:3);
writeln(Rus(‘Число членов ряда n=’),n);
readln;
end.
Консоль перед закрытием программы: