скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыДипломная работа: Алгоритмы с многочленами

 

Построение последовательности Евклида закончено. Ее последний член  есть наибольший общий делитель исходных многочленов.

2.  и

Совершим требуемые деления с остатком:

   │

 ‌‌‌‌‌‌‌‌‌  || ‌

 │

  

 │

                

 

Построение последовательности Евклида закончено. Ее последний член  есть наибольший общий делитель исходных многочленов.

Я составила программу для нахождения наибольшего общего делителя двух многочленов:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Grids;

type

  TForm1 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    SGd1: TStringGrid;

    Label3: TLabel;

    Button1: TButton;

    Label4: TLabel;

    Edit4: TEdit;

    Label5: TLabel;

    Label6: TLabel;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  st1,st2:integer;

  kof1,kof2,k1,k2:array[0..10] of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var i,j,k_1,st3,l:integer;

    sokr:boolean;

    k2_2,k1_1:array[0..10] of integer;

begin

  st1:=StrToInt(Edit1.Text);

  st2:=StrToInt(Edit2.Text);

  for i:=0 to st1 do begin

    kof1[i]:=StrToInt(SGd1.Cells[i,0]);

    k1[i]:=StrToInt(SGd1.Cells[i,0]);

  end;

  for i:=0 to st2 do begin

    kof2[i]:=StrToInt(SGd1.Cells[i,1]);

    k2[i]:=StrToInt(SGd1.Cells[i,1]);

  end;

  while kof2[0]<>0 do begin

    repeat

      Edit4.Text:='';

      k_1:=k1[0];

      if k1[0]<>kof2[0] then begin

        if (k1[0] mod kof2[0])=0 then begin

          for j:=0 to st2 do

            k2[j]:=(k1[0] div kof2[0])*kof2[j];

          end

        else begin

          if k2[0]<>1 then

            for j:=0 to st1 do

              k1[j]:=kof2[0]*k1[j];

          if k_1<>1 then begin

            for j:=0 to st2 do

              k2[j]:=k_1*kof2[j];

          end;

        end;

      end;

      for i:=1 to st1 do begin

        k1[i-1]:=k1[i]-k2[i];

      end;

      st1:=st1-1;

    until st1<st2;

  if k1[0]<>0 then begin     //Сокращение

    sokr:=true;

    for i:=1 to st1 do

      if k1[i]<>0 then begin

        if (k1[i] mod k1[0])<>0 then sokr:=false;

      end;

    k_1:=k1[0];

    if sokr=true then

      for i:=0 to st1 do

        k1[i]:=k1[i] div k_1;

  end;

  for i:=0 to st2 do         //Замена многочленов

    k2_2[i]:=kof2[i];

  for i:=0 to st1 do

    k1_1[i]:=k1[i];

  for i:=0 to 10 do begin

    kof1[i]:=0;

    k1[i]:=0;

    kof2[i]:=0;

    k2[i]:=0;

  end;

  for i:=0 to st2 do begin

    k1[i]:=k2_2[i];

    if k1[i]<>0 then

      Edit4.Text:=Edit4.Text+IntToStr(k1[i])+'x^'+IntToStr(st2-i);

  if (k2_2[i+1]>0)and(i<st2) then Edit4.Text:=Edit4.Text+'+';

  end;

  for i:=0 to st1 do begin

    k2[i]:=k1_1[i];

    kof2[i]:=k1_1[i];

  end;

  st3:=st1;

  st1:=st2;

  st2:=st3;

  end;

end;

end.

Используем алгоритм Евклида для доказательства следующей теоремы:

Теорема. Если  есть наибольший общий делитель многочленов  и , то можно найти такие многочлены  и , что

.                                                                          (2.5)

Можно считать при этом, если степени многочленов   и  больше нуля, что степень  меньше степени , а степень  меньше степени .

Доказательство основано на равенствах (2.4). Если учтем, что , и положим , , то предпоследнее из равенств (2.4) даст:

.

Подставляя сюда выражение  через  и  из предшествующего равенства (2.4), получим:

,

где , . Продолжая подниматься вверх по равенствам (2.4), придем к доказываемому равенству (2.5).

Для доказательства второго утверждения теоремы предположим, что многочлены  и , удовлетворяющие равенству (2.5), уже найдены, но, например, степень  больше или равна степени . Делим  на :

,

где степень  меньше степени , и подставляем это выражение в (2). Получим равенство:

.

Степень множителя, стоящего при , уже меньше степени . Степень многочлена, стоящего в квадратных скобках, будет в свою очередь меньше степени , так как в противном случае степень второго слагаемого левой части была бы не меньше степени , а так как степень первого слагаемого меньше степени этого произведения, то вся левая часть имела бы степень, большую или равную степени , тогда как многочлен  заведомо имеет, при наших предположениях, меньшую степень.

Теорема доказана.

Одновременно получаем, что если многочлены  и  имеют рациональные или действительные коэффициенты, то и многочлены  и , удовлетворяющие равенству (2.5), можно подобрать так, что их коэффициенты будут рациональными или, соответственно действительными.

Применяя доказанную теорему к взаимно простым многочленам, получаем такой результат:

Многочлены  и  тогда и только тогда взаимно просты, если можно найти многочлены  и , удовлетворяющие равенству

.                                                                                (2.6)

Опираясь на этот результат, можно доказать несколько простых, но важных теорем о взаимно простых многочленах:

Теорема 1.  Если многочлен  взаимно прост с каждым из многочленов  и , то он взаимно прост и с их произведением.

Доказательство. В самом деле, существуют, по (2.6), такие многочлены  и , что .

Умножая это равенство на , получаем:

,

откуда следует, что всякий общий делитель  и  был бы делителем и для ; однако по условию .

Теорема 2. Если произведение многочленов  и  делится на , но  и  взаимно просты, то  делится на .

Доказательство. Умножая равенство  на , получим: .

Оба слагаемых левой части этого равенства делятся на ; на него делится, следовательно, и .

Теорема 3. Если многочлен  делится на каждый из многочленов  и , которые между собой взаимно просты, то  делится и на их произведение.

Доказательство. Действительно, , так что произведение, стоящее справа, делится на . Поэтому, по теореме 2,  делится на , , откуда .

Определение наибольшего общего делителя может быть распространен на случай любой конечной системы многочленов: наибольшим общим делителем многочленов  называется такой общий делитель этих многочленов, который делится на любой другой общий делитель этих многочленов. Существование наибольшего общего делителя для любой конечной системы многочленов вытекает из следующей теоремы, дающей также способ его вычисления.

Теорема. Наибольший общий делитель многочленов  равен наибольшему общему делителю многочлена  и наибольшего общего делителя многочленов .

Доказательство. В самом деле, при  теорема очевидна. Примем поэтому, что для случая  она справедлива, то есть, в частности, уже доказано существование наибольшего общего делителя  многочленов . Обозначим через  наибольший общий делитель многочленов  и . Он будет общим делителем для всех заданных многочленов. С другой стороны, всякий другой общий делитель этих многочленов будет делителем также и для , а поэтому и для .

В частности, система многочленов  называется взаимно простой, если общими делителями этих многочленов являются лишь многочлены нулевой степени, то есть если их наибольший общий делитель равен 1. Если , то попарно эти многочлены могут и не быть взаимно простыми.


3. Кратные корни

Теорема Безу. Многочлен f(x) делится на x-c тогда и только тогда, когда число c является его корнем.

Страницы: 1, 2, 3, 4, 5


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.