|
Текст подпрограммы и версий zp34r_p.zip zp34e_p.zip |
Тексты тестовых примеров tzp34r_p.zip tzp34e_p.zip |
Вычисление натурального логарифма от полинома с вещественными коэффициентами.
ZP34R вычисляет М первых коэффициентов полинома
B(X) = B(1) + B(2)*X + B(3)*X2 + ... + B(M)*X(M - 1) + ... ,
такого, что В (Х) = ln А (Х), где А (Х) заданный полином степени NР
A(X) = A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP ,
у которого коэффициенты А ( I ), I = 1, 2, 3, ..., NР + 1 являются вещественными и А (1) > 0.
procedure ZP34R(NP :Integer; var A :Array of Real; M :Integer;
var B :Array of Real; var IERR :Integer);
Параметры
| NP - | заданная степень полинома А (Х) (тип: целый); |
| A - | вещественный вектор длины NР + 1, содержащий коэффициенты заданного полинома А (Х) в порядке возрастания степеней; |
| M - | заданное число искомых коэффициентов полинома В (Х) (тип: целый); |
| B - | вещественный вектор длины М, содержащий вычисленные коэффициенты полинома В (Х) в порядке возрастания степеней; |
| IERR - | целая переменная, значение которой в результате работы подпрограммы полагается равной 65, если А (1) ≤ 0. |
Версии
| ZP34E - | вычисление натурального логарифма от полинома с вещественными коэффициентами с расширенной (Extended) точностью. При этом векторы А и В должны иметь тип Extended. |
Вызываемые подпрограммы
| UTZP10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZР34R. |
| UTZP11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZР34E. |
Замечания по использованию: нет
Unit tzp34r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ZP34R_p;
function tzp34r: String;
implementation
function tzp34r: String;
var
NP,M,_i,IERR :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;
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 ',[M]) + #$0D#$0A;
ZP34R(NP,A,M,B,IERR);
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;
Result := Result + Format('%10d ',[IERR]) + #$0D#$0A;
UtRes('tzp34r',Result); { вывод результатов в файл tzp34r.res }
exit;
end;
end.
Результаты:
В(1) = 3.178053 , В(2) = - 2.083333 , В(3) = - 0.711556 ,
B(4) = - 0.392554 , B(5) = - 0.269688 , B(6) = - 0.207268 ,
IERR = 0