Текст подпрограммы и версий rcr2r_p.zip , rcr2e_p.zip |
Тексты тестовых примеров trcr2r_p.zip , trcr2e_p.zip |
Суммирование рядов при помощи преобразования Эйлера.
Подпрограмма 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