Текст подпрограммы и версий
zp43r_p.zip  zp43e_p.zip 
Тексты тестовых примеров
tzp43r_p.zip  tzp43e_p.zip 

Подпрограмма:  ZP43R (модуль ZP43R_p)

Назначение

Вычисление значения многочлена, заданного разложением по ортогональным многочленам.

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

Вычисляется величина

                      N  
            Y  =   ∑    Ck Qk -1(X) ,
                     k =1 

где  Х - значение аргумента, C = ( c1, c2, ..., cN ) заданные коэффициенты разложения многочлена по системе { Qk (x) } ортогональных многочленов, удовлетворяющих трехчленному рекуррентному отношению:

        Q0(x)  =  1  ,      Q1(x)  =  x - a1  ,

        Qk +1(x)  =  ( x - ak +1 ) Qk(x) - bk Qk -1(x)  ,     k = 1, 2, ..., N-2 

с известными коэффициентами А = ( a1, a2, ..., aN - 1 ),  B = ( b1, b2, ..., bN - 2 ).

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

procedure ZP43R(var A :Array of Real; var B :Array of Real;
                var C :Array of Real; X :Real; var Y :Real;
                N :Integer);

Параметры

A - вещественный вектор длины N - 1, содержащий коэффициенты  ak рекуррентного соотношения;
B - вещественный вектор длины N - 2, содержащий коэффициенты  bk рекуррентного соотношения;
C - вещественный вектор длины  N, содержащий коэффициенты разложения многочлена по системе ортогональных многочленов;
X - значение аргумента (тип: вещественный);
Y - вычисляемое значение многочлена (тип: вещественный);
N - число коэффициентов разложения (тип: целый).

Версии

ZP43E - вычисление значения многочлена, заданного разложением по ортогональным многочленам, для данных расширенной (Extended) точности.

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

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

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

Unit TZP43R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP43R_p;

function TZP43R: String;

implementation

function TZP43R: String;
var
N :Integer;
X,Y :Real;
A :Array [0..1] of Real;
B :Array [0..0] of Real;
C :Array [0..2] of Real;
begin
Result := '';  { результат функции }
{ прототип оператора DАТА на FORTRANе  }
A[0] := 0.0;
A[1] := 1.0;
B[0] := 1.0;
C[0] := 1.0;
C[1] := 1.0;
C[2] := 1.0;
N := 3;
X := 1.0;
ZP43R(A,B,C,X,Y,N);
Result := Result + Format(' %20.16f ',[Y]) + #$0D#$0A;
UtRes('TZP43R',Result);  { вывод результатов в файл TZP43R.res }
exit;
end;

end.

Результат:    Y = 1.