Текст подпрограммы и версий rcr1r_p.zip, rcr1e_p.zip |
Тексты тестовых примеров trcr1r_p.zip, trcr1e_p.zip |
Суммирование знакопеременных рядов при помощи преобразования Эйлера.
Подпрограмма 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 ≠ - 1Unit 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