|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/r_htm_p/rcr1r_p.htm
Дата изменения: Fri Nov 20 13:30:45 2015 Дата индексирования: Sun Apr 10 01:13:13 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий 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 ≠ - 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