Текст подпрограммы и версий zp13i_p.zip |
Тексты тестовых примеров tzp13i_p.zip |
Вычисление рациональных корней полиномов с целыми коэффициентами.
Подпрограмма ZP13I вычисляет M рациональных корней полинома степени N
A(1) + A(2) X + ... + A(N + 1) XN
с целыми коэффициентами. Ненулевые рациональные корни pi / q i , i = 1, 2,..., M, размещаются в массивах P и Q соответственно.
procedure ZP13I(var A :Array of Integer; N :Integer; var P :Array of Integer; var Q :Array of Integer; var M :Integer);
Параметры
A - | целый одномерный массив длины N + 1, содержащий заданные коэффициенты полинома в порядке возрастания степеней; |
N - | заданная степень полинома (тип: целый); |
P, Q - | целые одномерные массивы длины N + 1, содержащие вычисленные рациональные корни pi / q i , i = 1, 2,..., M; |
M - | целая переменная, содержащая на выходе количество рациональных корней. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
В некоторых случаях последний вычисленный корень может
совпадать по значению с первым. Поэтому массивы P и Q должны
иметь максимальную длину N + 1, а не N.
Пример использованияUnit tzp13i_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, ZP13I_p; function tzp13i: String; implementation function tzp13i: String; var _i,M :Integer; P :Array [0..3] of Integer; Q :Array [0..3] of Integer; const A :Array [0..3] of Integer = ( 3,14,3,-36 ); begin Result := ''; { результат функции } ZP13I(A,3,P,Q,M); Result := Result + #$0D#$0A; for _i:=0 to 3 do begin Result := Result + Format('%5d ',[P[_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 3 do begin Result := Result + Format('%5d ',[Q[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + Format('%5d ',[M]) + #$0D#$0A; UtRes('tzp13i',Result); { вывод результатов в файл tzp13i.res } exit; end; end. Результаты: P = (-1, 3, -3), Q = ( 3, 4, 9), M = 3 |