Текст подпрограммы и версий
rcr2r_p.zip , rcr2e_p.zip
Тексты тестовых примеров
trcr2r_p.zip , trcr2e_p.zip

Подпрограмма:  RCR2R (модуль RCR2R_p)

Назначение

Суммирование рядов при помощи преобразования Эйлера.

Математическое описание

Подпрограмма RCR2R находит сумму ряда по I от нуля до бесконечности, I - й член которого вычисляется задаваемой пользователем подпрограммой - функцией FTERM (I). Суммирование ряда осуществляется до тех пор, пока NTERM раз подряд абсолютные значения членов ряда не будут меньше заданного числа EPS.

Подпрограмма RCR2R, использующая метод Эйлера для преобразования рядов, может быть использована для суммирования медленно сходящихся или расходящихся рядов.

Использование

procedure RCR2R(var SUM :Real; FTERM :Func_F; NTERM :Integer; EPS :Real);

Параметры

SUM - вещественная переменная, значение которой полагается равным вычисленной сумме ряда;
FTERM - имя вещественной подпрограммы - функции вычисления I - ого члена ряда; ее заголовок имеет вид:

function FTERM (I :Integer): Extended;

где I - номер вычисляемого члена ряда;

NTERM - количество требуемых подряд идущих членов ряда, таких, что каждый из них по абсолютной величине меньше EPS (тип: целый);
EPS - заданное число, определяющее критерий останова при суммировании ряда.

Версии

RCR2E - суммирование рядов при помощи преобразования Эйлера в режиме расширенной (Extended) точности; при этом параметры SUM и EPS должны иметь тип Extended.

Вызываемые подпрограммы: нет

Замечания по использованию: нет

Пример использования

Unit TRCR2R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, FRCR2R_p, RCR2R_p;

function TRCR2R: String; 

implementation

function TRCR2R: String;
var
NTERM :Integer;
EРS,SUM :Real;
begin
RЕSUlt := '';
NTERM := 4;
EPS := 0.00001;
RCR2R(SUM,FRCR2R,NTERM,EPS);
Result := Result + Format('%20.16f',[SUM]) + #$0D#$0A;
UtRes('TRCR2R',Result);  { вывод результатов в файл TRCR2R.res }
exit;
end;

end.

Unit frcr2r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc;

function frcr2r(I :Integer): Extended;
implementation

function frcr2r(I :Integer): Extended;
begin
Result := Power(0.5,I);
end;

end.

Результат:      SUM   =   1.999999