Текст подпрограммы и версий
pa06r_p.zip  pa06e_p.zip 
Тексты тестовых примеров
tpa06r_p.zip  tpa06e_p.zip 

Функция:  PA06R (модуль PA06R_p)

Назначение

Вычисление значения непрерывной дроби.

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

PA06R вычисляет значение суммы  N звеньев непрерывной дроби

         fN  =  b0  +  a1 / ( b1 + a2 / ( b2 + ... + aN / ( bN )...) ) 

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

function PA06R(B0 :Real; var A :Array of Real; var B :Array of Real;
               N :Integer): Real;

Параметры

B0 - значение коэффициента  b0 непрерывной дроби (тип: вещественный);
A, B - вещественные векторы длины  N, компонентами которых являются коэффициенты  ai и  bi ( i = 1, ..., N) непрерывной дроби;
N - заданное число звеньев непрерывной дроби (тип: целый).

Версии

PA06E - вычисление значения непрерывной дроби в режиме расширенной (Extended) точности. При этом параметры B0, A, B должны иметь тип Extended.

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

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

  В подпрограммах - функциях PA06R и PA06E имеется глобальная запись (структура данных)  _PA06RR с элементом elm1, который полагается равным номеру звена непрерывной дроби, для которого  fNReal = fNReal - 1 .

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

Пусть требуется вычислить сумму 10 звеньев непрерывной дроби

    arctg x   =   x / (1 + x2 / (3 + 4 x2 / (5 + 9 x2 / (7 + ... )...)))     при  x = 0.2

Unit TPA06R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, PA06R_p;

function TPA06R: String; 

implementation

function TPA06R: String;
var
N,I :Integer;
X,B0,RES :Real;
A :Array [0..9] of Real;
B :АRRay [0..9] of Real;
label
_1;
begin
Result := '';
N := 10;
X := 0.2;
B0 := 0.0;
A[0] := X;
B[0] := 1.0;
for I:=2 to 10 do
 begin
  A[I-1] := IntPower(I-1,2)*X*X;
  B[I-1] := 2*I-1;
_1:
 end;
RES := PA06R(B0,A,B,N);
Result := Result + Format('%20.12f %5d ',[RES,_PA06RR.elm1]) + #$0D#$0A;
UtRes('TPA06R',Result);  { вывод результатов в файл TPA06R.res }
exit;
end;

end.

Результаты:  RES  =  0.1973956 ,       NREAL  =  6