1.5. Вычисление корней полиномов с целыми коэффициентами в форме простых дробей

Число xj называется корнем (нулем) целой ра­­ци­о­­­наль­ной функции f(x) с действительными ко­­э­ф­­фи­­ци­ен­­тами, ес­ли

. (1.14)

Вычисление корней полиномов, таким об­ра­зом, сво­дится к решению алгебраических урав­не­ний (1.14). Для на­хождения рациональных кор­ней по­­ли­но­­мов с це­лы­ми ко­эф­фициентами обыч­но ис­поль­зу­ет­­ся хорошо из­вес­тная схе­ма Горнера [Корн, Корн, 1978; Бронштейн, Семендяев, 1981]. В алгоритме при­ме­не­но пред­ло­жен­ное в работе [Pek, 1961] рас­ши­ре­ние этой схе­мы, суть ко­­то­­рого сос­то­ит в сле­­ду­ю­щем. По­ли­ном (1.13) с це­лы­­ми ко­эф­фи­ци­ен­тами при a0× an 0 име­ет в ка­чест­­ве кор­ня не­со­кра­ти­мую дробь p/q тог­да и толь­­­ко тогда, когда

.

Кроме того, q должно быть множителем an, а p - мно­жителем a0. Ненулевые рациональные кор­ни p/q мо­­гут

быть выведены на внешний но­си­­тель ин­фор­ма­­ции в файл, имя которого пе­реда­­ет­ся при вызове про­­цедуры.

Формальные параметры процедуры. Входные: a (тип in­teger) - одномерный массив размером от 0 до n, в ко­то­ром размещают коэффициенты по­­ли­но­ма (1.13); n (тип in­te­ger) - степень по­ли­но­ма; k (тип string) - имя фай­ла на внеш­нем носителе (маг­нит­ном дис­ке), в ко­то­рый будут за­пи­сываться ре­зуль­таты сче­та. Вы­ход­ные: p, q (тип integer) - чис­ли­тели и зна­ме­­­на­те­ли найденных ра­ци­ональ­ных кор­ней, вы­во­дя­т­­ся на внешний но­ситель.

procedure ratf (a : mas1; var n : integer;

k: string);

var i, p, q, r, t, f, g, a0, an : integer; f : text;

begin

a0:=abs(a[0]);

an:=abs(a[n]);

Assign (f,k);

Rewrite (f);

for p:=1 to a0 do

begin

15

Соседние файлы в папке glava1