Az irreducibilitás vizsgálata

Schönemann-Eisenstein-kritérium

Ezt alaposan meg kellene néznie, azután megírni a bevezetést, miről lesz szó, mi nincs meg készen.

Hyperlink["poly","paclet:guide/PolynomialAlgebra"]

Használja, és jól használja az automatikus formázási lehetőségeket, és ne módosítson a beépítetteken (pl. cím). A képleteket mat módban írja, itt: Ctrl+9

Tétel. Legyen f(x) = (∑_(i=0)^n) (Subscript[a, i])·(x^i) egész együtthatós polinom. Ha létezik olyan p prím, hogy p ∤ (Subscript[a, n]), p ∣ (Subscript[a, i]) minden i∈{0,1,...,n-1}, de (p^2)∤ (Subscript[a, 0]), akkor f(x) irreducibilis.

A következő függvénnyel meg tudjuk vizsgálni, hogy egy adott polinomra teljesülnek - e a kritérium feltételei egy adott prímre.

f[x_]:=x^3+4(x^2)+6x+2
g[x_]:=x^3+9*x^2+6*x+3
h[x_]:=2x^3-36*x^7+8x^4+56x-128
Eisenstein[A_,p_]:=And[PolynomialQ[A,x],PrimeQ[p],Mod[Reverse[CoefficientList[A,x]],p][[1]]≠0 ,Plus@@Table[Mod[Reverse[CoefficientList[A,x]],p][[i]],{i,2,Exponent[A,x]+1}]==0 ,Mod[Reverse[CoefficientList[A,x]],p^2][[Exponent[A,x]+1]]≠0]

Eisenstein[f[x],2]
Eisenstein[f[x],3]
Eisenstein[g[x],2]
Eisenstein[g[x],3]

A polinomok irreducibilitására az is igaz, hogy f(x) irreducibilis ⇔ f(x+a) irreducibilis valamilyen a∈(SuperPlus[ℤ])-re. Vagyis ez azt jelenti, hogyha létezik olyan 'a' egész szám és 'p' prím, hogy f(x+a)-ra érvényesek a Schönemann-Eisenstein kritérium feltételei p-re nézve, akkor f(x)  irreducibilis. Ha f(x)-re nem teljesülnek a kritérium feltételei, akkkor a R(f,f') rezultáns segítségével meg tudjuk keresni azokat a prímeket és egész számokat, amelyekre meg kell vizsgálnunk f(x+a)-t.  Maga az algoritmus azt mondja, ha a rezultáns nulla, akkor f reducibilis. Ha nem nulla, akkor vegyük a rezultáns prímosztóit. Ezekre a prímekre kell megvizsgálnunk f(x+a)-t, mégpedig a∈{0,1,...,p-1}-re. Ha minden lehetséges prímet megvizsgáltunk minden lehetséges 'a'-ra és nem találtunk a kritériumnak megfelelő (p,a) párt, akkor f(x)-re nem teljesülnek a kritérium feltételei semmilyen prímre és semmilyen 'a' egész számra.

A következőkben felírjuk egy polinomnak az R(f,f') rezultánsát és azt,hogy mely prímekre kell f(x) eltoltjait megvizsgálni.

Rezultans[A_]:=If[PolynomialQ[A,x],Partition[Flatten[Join[IdentityMatrix[Exponent[D[A,x],x]]/. 1->Reverse[CoefficientList[A,x]],IdentityMatrix[Exponent[A,x]]/. 1->Reverse[CoefficientList[D[A,x],x]]]],Exponent[A*D[A,x],x]]]
RezultansOsztoi[A_]:=FactorInteger[Det[Rezultans[A]]][[All,1]]

Rezultans[f[x]]
RezultansOsztoi[f[x]]

Resultant

Newton-poligon

meredekseg[{{a_,b_},{c_,d_}}]:=(d-b)/(c-a)
MaxMer[A_,p_]:=Max[Map[meredekseg,Flatten[Table[{NewtonPontok[A,p][[i]],NewtonPontok[A,p][[i+j]]},{i,1,Length[NewtonPontok[A,p]]-1},{j,1,Length[NewtonPontok[A,p]]-i}],1]]]
g[A_,p_,k_]:=First[Flatten[Position[Join[Table[MaxMer[A,p]+1,{i,1,k}],Map[meredekseg,Table[{NewtonPontok[A,p][[k]],NewtonPontok[A,p][[j]]},{j,k+1,Length[NewtonPontok[A,p]]}]]],Min[Join[Table[MaxMer[A,p]+1,{i,1,k-1}],Map[meredekseg,Table[{NewtonPontok[A,p][[k]],NewtonPontok[A,p][[j]]},{j,k+1,Length[NewtonPontok[A,p]]}]]]]]]]
h[A_,p_]:=NestWhileList[g[A,p,#]&,1,#≠Length[NewtonPontok[A,p]]&]
NewtonPontok[A_,p_]:=If[PolynomialQ[A,x],Cases[Table[{i,IntegerExponent[Reverse[CoefficientList[A,x]],p][[i+1]]},{i,0,Length[CoefficientList[A,x]]-1}],{_,_Integer}]]
NewtonPolygonPontok[A_,p_]:=NewtonPontok[A,p][[h[A,p]]]
NewtonPolygon[A_,p_]:=Show[Graphics[{AbsolutePointSize[8],Red,Point[Complement[NewtonPontok[A,p],NewtonPolygonPontok[A,p]]]},Axes->True],ListLinePlot[NewtonPolygonPontok[A,p],Mesh->Full,MeshStyle->Directive[PointSize[Large],Green],PlotStyle->Directive[Blue,Thick],AxesOrigin->{0,0}]]

NewtonPontok[h[x],3]
NewtonPolygonPontok[h[x],3]
NewtonPolygon[h[x],3]