Текст подпрограммы и версий pa06r_p.zip pa06e_p.zip |
Тексты тестовых примеров tpa06r_p.zip tpa06e_p.zip |
Вычисление значения непрерывной дроби.
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.2Unit 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