Текст подпрограммы и версий
zp35r_p.zip  zp35e_p.zip 
Тексты тестовых примеров
tzp35r_p.zip  tzp35e_p.zip 

Подпрограмма:  ZP35R (модуль ZP35R_p)

Назначение

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

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

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

       B(X)  =  B(1) + B(2)*X + B(3)*X2 + ... + B(M)*X(M - 1) + ...  , 

такого, что  В (Х) = exp (А (Х)), где  А (Х) - заданный полином степени NР

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

у которого коэффициенты  А ( I ),  I = 1, 2, 3, ..., NР + 1 являются вещественными.

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

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

Параметры

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

Версии

ZP35E - вычисление экспоненты от полинома с вещественными коэффициентами с расширенной (Extended) точностью. При этом векторы А и В должны иметь тип Extended.

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

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

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

Unit tzp35r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP35R_p;

function tzp35r: String;

implementation

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

end.


Результаты:

       B(1)  =     7.389056 , 
       B(2)  = - 22.167168 , 
       B(3)  =   40.639808 , 
       B(4)  = - 55.417921 , 
       B(5)  =   61.883345 .