Текст подпрограммы и версий zp31r_p.zip zp31e_p.zip |
Тексты тестовых примеров tzp31r_p.zip tzp31e_p.zip |
Вычисление коэффициентов полинома по заданным его вещественным корням.
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