2.2. Деление многочленов с остатком
Для многочленов, как и для целых чисел, существует алгоритм деления с остатком.
Теорема о делении с остатком. Для любых двух многочленов f(x) и g(x) можно найти такие многочлены q(x) и r(x , что
f(x)=g(x)q(x)+r(x),
причем степень r(x) меньше степени g(x) или же r(x)=0. Многочлены q(x) и r(x), удовлетворяющие этому условию, определяются однозначно.
Если разности f(x)-r(x) и обе делятся на g(x), то их разность также делится на g(x). Если бы многочлен s(x) был ненулевым, то он имел бы степень меньшую, чем g(x), и не мог бы тогда делится на g(x). Следовательно, s(x)=0, так что .
В практической деятельности для нахождения частного и остатка применяют способ вычисления, называемый «деление углом». Покажем его на примере.
Пример. Найти частный и остаток от деления на .
1. и
|
Частным от деления на является многочлен , остатком - .
2. и
¦
Частным от деления на является многочлен , остатком - .
Это правило в общем виде можно сформулировать так:
1) разделить старший член многочлена f(x) на старший член g(x) и записать результат «под длинной стороной угла»;
2)умножить g(x) на результат действия 1) и записать произведение под многочленом f(x);
3) вычесть из f(x) записанный под ним многочлен;
4) проверить имеет ли результат действия 3) степень меньшую, чем степень g(x); если да (или результат нулевой), то он является остатком, а под длинной стороной угла записано частное, если нет, то применить к этому результату действие 1), рассматривая его как многочлен f(x).
Я составила программу для нахождения частного и остатка.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
SGd1: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,n,m,step,j,f:integer;
d,l,s:string;
a,a2,b,b2,k:array[0..100] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
m:=StrToInt(Edit2.Text);
for i:=n+1 downto 1 do begin
a[i]:=StrToInt(SGd1.Cells[n-(i-1),0]);
end;
for i:=m+1 downto 1 do begin
b[i]:=StrToInt(SGd1.Cells[m-(i-1),1]);
end;
s:=f1(x)=;
for i:=n+1 downto 1 do begin
if a[i]<>0 then begin if(a[i-1]<0)or(i=1) then begin
str(a[i],l);
str(i-1,d);
s:=s+l+x^+d;
end
else begin
str(a[i],l);
str(i-1,d);
s:=s+l+x^+d++;
end;
end;
end;
Edit3.Text:=s;
s:=f2(x)=;
for i:=m+1 downto 1 do begin
if b[i]<>0 then begin if(b[i-1]<0)or(i=1) then begin
str(b[i],l);
str(i-1,d);
s:=s+l+x^+d;
end
else begin
str(b[i],l);
str(i-1,d);
s:=s+l+x^+d++;
end;
end;
end;
Edit4.Text:=s;
for j:=N+1 downto 1 do begin
a2[j]:=a[j];
b2[j]:=0;
end;
step:=n-m;
f:=n+2;
for i:=step+1 downto 1do begin
f:=f-1;
k[i]:=a2[f];
for j:=m+1 downto 1do begin
b2[j]:=k[i]*b[j];
end;
for j:=f downto 1 do begin
a2[j]:=a2[j]*b[m+1];
end;
for j:=f downto 1 do begin
a2[j]:=a2[j]-b2[j+1-i];
b2[j]:=0;
end;
end;
s:=h(x)=;
for i:=f downto 1 do begin
if k[i]<>0 then begin if(k[i-1]<0)or(i=1) then begin
str(k[i],l);
str(i-1,d);
s:=s+l+x^+d;
end
else begin
str(k[i],l);
str(i-1,d);
s:=s+l+x^+d++;
end;
end;
end;
Edit5.Text:=s;
s:=r(x)=;
for i:=n downto 0 do begin
if a2[i]<>0 then begin if(a2[i-1]<0)or(i=1) then begin
str(a2[i],l);
str(i-1,d);
s:=s+l+x^+d;
end
else begin
str(a2[i],l);
str(i-1,d);
s:=s+l+x^+d++;
end;
end;
end;
Edit6.Text:=s;
end;
end.
- 16. Обратимые, ассоциированные многочлены, деление с остатком. Нод, нок многочленов и алгоритм Евклида. Теорема Безу.
- 22. Алгоритм Евклида в кольце многочленов?
- Алгоритм разложения многочлена на множители с помощью формул квадрата суммы и квадрата разности:
- 23. Теорема Безу. Нод многочленов и алгоритм Евклида.
- 8) Нод многочленов. Алгоритм Евклида.
- Делимость многочленов. Наибольший общий делитель. Алгоритм Евклида. Расширенный алгоритм Евклида.
- 19) Значение многочлена. Корень многочлена. Теорема Безу и её важнейшее следствие.
- Многочлен Лагранжа
- 2.3 Деление многочленов
- §2. Деление многочленов с остатком. Алгоритм Евклида. Критерий взаимной простоты двух многочленов.