Текст подпрограммы и версий
zp33r_p.zip  zp33e_p.zip 
Тексты тестовых примеров
tzp33r_p.zip  tzp33e_p.zip 

Подпрограмма:  ZP33R (модуль ZP33R_p)

Назначение

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

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

ZP33R вычисляет М первых коэффициентов полинома

       B(X)  =  X(- K)*( B(1) + B(2)*X + ... + B(M)*X(M - 1) + ... ) 

обратного заданному полиному степени NР

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

у которого коэффициенты  А ( I ),  I = 1, 2, 3, ..., NР + 1 являются вещественными. Здесь  К - число первых коэффициентов полинома  А (Х), равных 0. Иными словами, ищется полином  В (Х) = 1 / А (Х).

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

procedure ZP33R(NP :Integer; var A :Array of Real; M :Integer;
                var B :Array of Real; var K :Integer);

Параметры

NP - заданная степень полинома  А (Х) (тип: целый);
A - вещественный вектор длины NР + 1, содержащий коэффициенты заданного полинома  А (Х) в порядке возрастания степеней;
M - заданное число искомых коэффициентов полинома  В (Х) (тип: целый);
B - вещественный вектор длины М, содержащий вычисленные коэффициенты полинома  В (Х) в порядке возрастания степеней;
K - целая переменная, значение которой в результате работы подпрограммы полагается равным числу первых коэффициентов полинома  А (Х), равных 0.

Версии

ZP33E - вычисление с расширенной (Extended) точностью М первых коэффициентов полинома, который является обратным заданному полиному с вещественными коэффициентами. При этом векторы А и В должны иметь тип Extended.

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

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

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

Unit tzp33r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP33R_p;

function tzp33r: String;

implementation

function tzp33r: String;
var
NP,M,_i,K :Integer;
B :Array [0..5] of Real;
const
A :Array [0..4] of Real = ( 24.0,-50.0,35.0,-10.0,1.0 );
begin
Result := '';  { результат функции }
NP := 4;
M := 6;
ZP33R(NP,A,M,B,K);
Result := Result + Format('%10d ',[NP]) + #$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 + Format(' %10d %10d ',[M,K]) + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 5 do
 begin
  Result := Result + Format('%20.16f ',[B[_i]]);
  if ( ((_i+1) mod 4)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('tzp33r',Result);  { вывод результатов в файл tzp33r.res }
exit;
end;

end.


Результаты:

       В(1) = 0.041667 ,   В(2) = 0.0868056 ,   В(3) = 0.120081 ,
       B(4) = 0.140938 ,   B(5) = 0.152937 ,     B(6) = 0.159499