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

13

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