Текст подпрограммы и версий
zp31r_p.zip  zp31e_p.zip 
Тексты тестовых примеров
tzp31r_p.zip  tzp31e_p.zip 

Подпрограмма:  ZP31R (модуль ZP31R_p)

Назначение

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

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

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

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

по заданным его вещественным корням RООТ ( I ),  I = 1, 2, 3, ..., NР.

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

procedure ZP31R(NP :Integer; var ROOT :Array of Real;
                var A :Array of Real);

Параметры

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

Версии

ZP31E - вычисление коэффициентов полинома по заданным его вещественным корням с расширенной (Extended) точностью. При этом векторы RООТ и А должны иметь тип Extended.

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

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

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

Unit TZP31R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP31R_p;

function TZP31R: String;

implementation

function TZP31R: String;
var
_i :Integer;
A :Array [0..4] of Real;
const
RООТ :Array [0..3] of Real = ( 1.0,2.0,3.0,4.0 );
begin
Result := '';  { результат функции }
ZP31R(4,ROOT,A);
Result := Result + #$0D#$0A;
for _i:=0 to 3 do
 begin
  Result := Result + Format('%20.16f ',[ROOT[_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;
UtRes('TZP31R',Result);  { вывод результатов в файл TZP31R.res }
exit;
end;

end.

Результаты:

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