Текст подпрограммы и версий
zp32r_p.zip  zp32e_p.zip 
Тексты тестовых примеров
tzp32r_p.zip  tzp32e_p.zip 

Подпрограмма:  ZP32R (модуль ZP32R_p)

Назначение

Вычисление коэффициентов полинома, проходящего через заданные точки плоскости.

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

ZP32R вычисляет коэффициенты полинома степени NР

        A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP  , 

проходящего через заданные точки плоскости (Х ( I ), Y ( I )),  I = 1, 2, 3, ..., NР + 1.

Другими словами, коэффициенты полинома вычисляются по заданным соотношениям:

                    NP+1 
       Y( I ) =    ∑    A( J )*X( I )(J - 1)  ,    I = 1, 2, 3, ..., NP+1
                      J=1 

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

procedure ZP32R(NP :Integer; var X :Array of Real;
                var Y :Array of Real; var A :Array of Real;
                var RAB1 :Array of Real; var RAB2 :Array of Real);

Параметры

NP - заданная степень полинома (тип: целый);
X, Y - вещественные векторы длины NР + 1, содержащие координаты заданных точек плоскости;
A - вещественный вектор длины NР + 1, содержащий вычисленные коэффициенты полинома в порядке возрастания степеней;
  RAB1 -
  RAB2  
вещественные векторы длины NР + 1, используемые в подпрограмме как рабочие.

Версии

ZP32E - вычисление коэффициентов полинома, проходящего через заданные точки плоскости, с расширенной (Extended) точностью. Параметры Х, Y, А, RАВ1, RАВ2 имеют тип Extended.

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

ZP30R - вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента. Используется в подпрограмме ZР32R.
ZP31R - вычисление коэффициентов полинома по заданным его вещественным корням. Используется в подпрограмме ZР32R.
ZP30E - вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента с расширенной (Extended) точностью. Используется в подпрограмме ZР32E.
ZP31E - вычисление коэффициентов полинома по заданным его вещественным корням с расширенной (Extended) точностью. Используется в подпрограмме ZР32E.

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

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

Unit tzp32r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP32R_p;

function tzp32r: String;

implementation

function tzp32r: String;
var
NP,_i :Integer;
A :Array [0..4] of Real;
RAB1 :Array [0..4] of Real;
RAB2 :Array [0..4] of Real;
const
X :Array [0..4] of Real = ( 0.0,1.0,2.0,3.0,4.0 );
Y :Array [0..4] of Real = ( 24.0,0.0,0.0,0.0,0.0 );
begin
Result := '';  { результат функции }
NP := 4;
ZP32R(NP,X,Y,A,RAB1,RAB2);
Result := Result + Format('%10d ',[NP]) + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
 begin
  Result := Result + Format('%20.16f ',[X[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
 begin
  Result := Result + Format('%20.16f ',[Y[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
 begin
  Result := Result + Format('%20.16f ',[A[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
 begin
  Result := Result + Format('%20.16f ',[RAB1[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 4 do
 begin
  Result := Result + Format('%20.16f ',[RAB2[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('tzp32r',Result);  { вывод результатов в файл tzp32r.res }
exit;
end;

end.


Результаты:

       А(1) = 24.0 ,    А(2) = - 50.0 ,   А(3) = 35.0 ,
       A(4) = - 10.0 ,  A(5) = 1.0