Текст подпрограммы и версий zp33r_p.zip zp33e_p.zip |
Тексты тестовых примеров tzp33r_p.zip tzp33e_p.zip |
Вычисление 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