Реферати українською » Математика » Фундаментальна група. Кінцеві поля


Реферат Фундаментальна група. Кінцеві поля

Кінцеві поля

Мета роботи: Вивчити конструкцію і найпростіші властивості кінцевих полів. Зокрема, вивчити на прикладах кінцевих полів поняття ступінь розширення, конструкцію і однозначну визначеність поля розкладання, прості поля, поняття примітивного елемента, будова кінцевої,мультипликативной підгрупи поля. Познайомитися з арифметикою кінцевих полів. Вирішити вправу.

>Докажем, що багаточлен

 

>неприводим над

.

.

Корній немає. =>Многочленнеприводим.

Побудуємо розширення поля ступеня . Нехай – корінь , тобто.

,

тоді  

Одержимо : .

  

розширення ступеня 3.

>Разделим


.

.=

>Cоставим систему:

=> Нехай , тоді =>  

При=3 =>=2

Від сюди отримуємо, що

 

 отже . Якщоq породжує – він примітивний. Знайдемо порядок . Оскільки порядок елемента ділить порядок групи, порядок то, можливо 2, 4, 31, 62, 124.


.

 

 

Елемент – перестав бути примітивним елементом >GF(125),т.к вони не виконуються умови. Програма, вивіряє, було б примітивним елементом поля .

>TForm1 *>Form1;

>classPolynom

{ public:

 >int *>coef;

 >intdeg;

 >Polynom();

 >Polynom(char *);

 >Polynom(int);

 >Polynom(Polynom *);

 ~>Polynom();

 >Polynomoperator =(>string);

 >Polynom *>operator *(>Polynom *);

 >Polynomoperator /(>Polynom);

 >Polynom *>operator %(>Polynom *);

 >intoperator [](>int);

 >voidoperator ++();

 >booloperator <(>Polynom *);

 >booloperator ==(>Polynom *);

 >Polynom *>norm();

 >intcoef_count();

 >char *>print();

};

>Polynom ::Polynom()

{coef = newint[1];

 >coef[0] = 0;

 >deg = 0;

}

>Polynom *>Polynom ::norm()

{intf = 0;

 >for(int і = 0; і <=deg; і++)

 >if(coef[i] != 0 )

 {f = і;

 >break;

 }

 >intdeg_tmp =deg -f;

 >Polynom *>tmp = newPolynom(deg_tmp+1);

 >for(int і =f; і <=deg; і++)

 >tmp->coef[i-f] =coef[i];

 >returntmp;

}

>Polynom ::Polynom(char *>str)

{deg =strlen(str)-1;

 >coef = newint[deg+1];

 >for(int і = 0; і <=deg; і++)

 >coef[i] =str[i] - 48;

}

>Polynom ::Polynom(intd)

{deg =d-1;

 >coef = newint[d];

 >for(int і = 0; і <=deg; і++)

 >coef[i] = 0;

}

>Polynom ::Polynom(Polynom *>p)

{coef =p->coef;

 >deg =p->deg;

}

>Polynom :: ~>Polynom()

{deletecoef;

}

>intPolynom ::operator[](int it)

{return (coef[it] );

}

>intPolynom ::coef_count()

{intcount = 0;

 >for(int і = 0; і <=deg; і++)

 {if(coef[i] > 0 )

 >count++;

 }

 >returncount;

}

>Polynom *>Polynom ::operator*(Polynom *B)

{Polynom *A =this;

 >Polynom *З = newPolynom(A->deg +B->deg + 1);

 >for(int і =A->deg; і >= 0; і--)

 {for(int j =B->deg; j >= 0; j--)

 {C->coef[i+j] +=A->coef[i] *B->coef[j];

 >C->coef[i+j] %= 5;

 }

 }

 >return З;

}

>boolPolynom ::operator <(>Polynom *b)

{if(deg <b->deg )

 >returntrue;

 >else

 >returnfalse;

}

>boolPolynom ::operator ==(>Polynom *B)

{Polynom *A =this;

 >if(A->deg !=B->deg )

 >returnfalse;

 >for(int і = 0; і <=A->deg; і++)

 >if(A->coef[i] !=B->coef[i] )

 >returnfalse;

 >returntrue;

}

>intobr(int a)

{ a = 5 - a;

 a %= 5;

 >return a;

}

>Polynom *>Polynom ::operator %(>Polynom *B)

{Polynom *>tmp =this;

 >if(tmp->deg <B->deg )

 {returntmp;

 }

 >for(int і = 0; і <=B->deg-tmp->deg; і++)

 >if(tmp->coef[i] >= 1)

 {inttmp_coef =tmp->coef[i];

 >tmp->coef[i] = 0;

 >for(int j = 1; j <=B->deg; j++)

 {tmp->coef[j] +=obr(B->coef[j])*tmp_coef;

 >tmp->coef[j] %= 5;

 }

 }

 >tmp =tmp->norm();

 >returntmp;

}

>voidPolynom ::operator++()

{boolflag =false;

 >for(int і =deg; і >= 0; і--)

 {coef[i]++;

 >coef[i] %= 5;

 >if(coef[i] == 0 )

 {flag =true;

 }

 >else

 >flag =false;

 >if(flag ==false )

 >break;

 }

 >if(flag )

 {int *>tmp = newint[deg+2];

 >tmp[0] = 1;

 >for(int і = 1; і <=deg+1; і++)

 {tmp[i] =coef[i-1];

 }

 >coef =tmp;

 >deg =deg+1;

 }

}

>char *>Polynom ::print()

{char *>s = newchar[deg*3+(deg-1)*3 +deg*3 +deg*3];

 >int і = 0,f = 0;

 >s[0] = 0;

 >while ( і <=deg )

 {if (>coef[i])

 {if(f)

 >strcat(s," + ");

 >f = 1;

 >switch(deg-i)

 {case 0:

 >wsprintfA(s, "%>s%d",s,coef[i]);

 >break;

          >case 1:

 >if(coef[i] == 1 )

 >wsprintfA(s, "%>sq",s);

 >else

 >wsprintfA(s, "%>s%d*q",s,coef[i]);

 >break;

          >default:

 >if(coef[i] == 1)

 >wsprintfA(s, "%>sq^%d",s,deg-i);

 >else

 >wsprintfA(s, "%>s%d*q^%d",s,coef[i],deg-i);

 };

 }

 і++;

 }

 >if(!f)

 >strcat(s, "0");

 >returns;

}

>boolTestPrimitive(Polynom *>poly,Polynom *>irr)

{Polynom *>tmp =poly;

 >Polynom *>one = newPolynom("1");

 >for(int і = 2; і <pow((double)5,irr->deg); і++)

 {poly = (*>poly) *tmp;

 >poly = (*>poly) %irr;

 >Form1->Memo1->Text =Form1->Memo1->Text + ">q^" + і + " =" + ' ';

 >Form1->Memo1->Text =Form1->Memo1->Text +poly->print();

 >Form1->Memo1->Lines->Add("");

 >if( *>poly ==one && і !=pow((double)5,irr->deg)-1 )

 {

 >Form1->Memo1->Text =Form1->Memo1->Text + і;

 >Form1->Memo1->Lines->Add("");

 >returnfalse;

 }

 }

 >returntrue;

}

>Polynom *>DecToBin(intq)

{stringm = "";

 >int a;

 >do

 {if(q % 2 == 0 )

 >m += "0";

 >else

 >m += "1";

 >q /= 2;

 }while(q != 0 );

 >Polynom *>poly = newPolynom(m.size());

 >for(int і = 0; і <m.size(); і++)

 >poly->coef[i] =m[m.size()-i-1] + 48;

 >returnpoly;

}

>Polynom *>FindPrimitiveElement(Polynom *>irr)

{Polynom *>test = newPolynom("4");

 >while(test->deg <=irr->deg )

 {

 (*>test)++;

 >Form1->Memo1->Text =Form1->Memo1->Text + ">q^" + 1 + " =" + ' ';

 >Form1->Memo1->Text =Form1->Memo1->Text +test->print();

 >Form1->Memo1->Lines->Add("");

 >if(TestPrimitive(test,irr) )

 >break;

 }

 >returntest;

}

__>fastcallTForm1::TForm1(TComponent*Owner)

 :TForm(Owner)

{

}

>void __>fastcallTForm1::Button1Click(TObject *>Sender)

{Polynom *>IrrPoly = newPolynom(LabeledEdit1->Text.c_str()); //Считиваем багаточлен

 >Memo1->Text =Memo1->Text + ">Неприводимий багаточлен: " +IrrPoly->print(); //Вивожу

 >Memo1->Lines->Add("");

 >Polynom *>prim =FindPrimitiveElement(IrrPoly); // Знаходимо примітивний елемент поля

 >LabeledEdit2->Text =prim->print(); Результати виконання програми:


Фундаментальна група

Мета роботи: вивчити означення й властивості фундаментальної групи топологічного простору. Познайомитися з визначенням клітинного комплексу, зі способом побудови клітинного комплексу шляхом послідовного приклеювання клітин. Навчитися ставити групи з допомогою їхнім виокремленням та його співвідношень (т. е. з допомогоюкопредставлений) і розпізнавати групи з їхкопредставлениям. Навчитися застосовувати алгоритм обчислення фундаментальної групи клітинного комплексу.

Списокгрупп-еталонов:

1. Циклічні групи:

 < x / =1>, xбудь-яке

2.Бинарние групидиедра:

= < x, y /== >, n 2

 

3.Бинарние групи тетраедра іоктаедра:

= < x, y / ==, >, n =1, 2

4. Групи виду:

= < x, y / >, >k 2,

5. Прямі твори вищевказаних груп на циклічні.

В усіх випадках індекс внизу показує число елементів груп.



На малюнку умовно зображений двомірний клітинний комплекс, тобто. топологічне простір,получающееся приклеюванням кількох двовимірні клітин (дисків) доодномерному комплексу (графу). Малюнок треба розуміти так: кожна «деталь» виду символізує вершину графа, кожна склейка «відростків» виду

1. – ребро. Наприклад, малюнок А символізує граф малюнку У.

Далі потрібно отриматикопредставление фундаментальної групи, при цьому проробимо таке:

1) По черги розрізаємо ребра графа, позначаючи їх літерами і вказуючи напрями до того часу, доки вийде дерево (пов'язаний граф без циклів), див. рис. нижче. Ці літери служитимуть утворюючими групи:


2)Виписиваем співвідношення (слова), які показують, як криві проходять по розрізали ребрам. Ці співвідношення такі: 1. 2. =1 3. =1 4. =1 5. =1 6. =13)Приводим виписанукопредставление докопредставлению одній з еталонних груп.

 >Введем У результаті виходить , саме  


Схожі реферати:

Навігація