Текст подпрограммы и версий
rcr1r_p.zip, rcr1e_p.zip
Тексты тестовых примеров
trcr1r_p.zip, trcr1e_p.zip

Подпрограмма:  RCR1R (модуль RCR1R_p)

Назначение

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

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

Подпрограмма RCR1R накапливает частичную сумму SUM знакопеременного ряда по заданному текущему члену TERM ряда и его номеру JTERM. При первом обращении к подпрограмме на вход подается первый член ряда (JTERM = 1), при втором обращении на вход подается второй член ряда (JTERM = 2) со знаком, противоположным знаку первого члена, и т.д. При суммировании используется преобразование Эйлера.

Справочник по специальным функциям. Под ред. Абрамовица М. и Стигана И. Изд - во "Наука", 1979.

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

procedure RCR1R(var SUM :Real; TERM :Real; JTERM :Integer;
                var RAB :Array of Real);

Параметры

SUM - вещественная переменная, содержащая на выходе из подпрограммы текущее значение частичной суммы знакопеременного ряда;
TERM - значение члена ряда с номером JTERM (тип: вещественный);
JTERM - значение номера текущего члена ряда (тип: целый);
RAB - вещественный рабочий вектор, длина которого равна максимальному количеству членов ряда, предназначенных для суммирования.

Версии

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

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

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

  Данная подпрограмма может быть применена не только для сходящихся знакопеременных рядов. Ее можно применять для суммирования асимптотических рядов.

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

В данном примере суммируются 10 членов ряда:

  ln (1 + x)  =  x  -  x2/2  +  x3/3  - ... ,     | x | ≤ 1 ,    x ≠ - 1 

Unit TRCR1R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, RCR1R_p;

function TRCR1R: String; 

implementation

function TRCR1R: String;
var
K,JTERM :Integer;
X,TEST,TERM,SUM :Real;
RАВ :Array [0..9] of Real;
label
_1;
begin
Result := '';
X := 0.5;
TEST := Ln(1.0+X);
for K:=1 to 10 do
 begin
  TERM := Power(-1,K-1)*Power(X,K)/K;
  JTERM := K;
  RCR1R(SUM,TERM,JTERM,RAB);
  Result := Result + Format('%20.16f  %20.16f ',[SUM,TEST]) + #$0D#$0A;
_1:
 end;
UtRes('TRCR1R',Result);  { вывод результатов в файл TRCR1R.res }
exit;
end;

end.

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