[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5 代数的数に関する函数のまとめ


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.1 newalg

newalg(defpoly)

:: root を生成する.

return

代数的数 (root)

defpoly

多項式

[0] A0=newalg(x^2-2);
(#0)
参照

defpoly


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.2 defpoly

defpoly(alg)

:: root の定義多項式を返す.

return

多項式

alg

代数的数 (root)

[1] defpoly(A0);
t#0^2-2
参照

newalg, alg, algv


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.3 alg

alg(i)

:: インデックスに対応する root を返す.

return

代数的数 (root)

i

整数

[2] x+#0;
syntax error
0
[3] alg(0);
(#0)
参照

newalg, algv


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.4 algv

algv(i)

:: alg(i) に対応する不定元を返す.

return

多項式

i

整数

[4] var(defpoly(A0));
t#0
[5] t#0;
syntax error
0
[6] algv(0);
t#0
参照

newalg, defpoly, alg


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.5 simpalg

simpalg(rat)

:: 有理式に含まれる代数的数を簡単化する.

return

有理式

rat

有理式

[7] simpalg((1+A0)/(1-A0));
simpalg undefined
return to toplevel
[7] load("sp")$
[46] simpalg((1+A0)/(1-A0));
(-2*#0-3)
[47] simpalg((2-A0)/(2+A0)*x^2-1/(3+A0));
(-2*#0+3)*x^2+(1/7*#0-3/7)
[48] simpalg((x+1/(A0-1))/(x-1/(A0+1))); 
(x+(#0+1))/(x+(-#0+1))

[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.6 algptorat

algptorat(poly)

:: 多項式に含まれる root を, 対応する不定元に置き換える.

return

多項式

poly

多項式

[49] algptorat((-2*alg(0)+3)*x^2+(1/7*alg(0)-3/7));
(-2*t#0+3)*x^2+1/7*t#0-3/7
参照

defpoly, algv


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.7 rattoalgp

rattoalgp(poly,alglist)

:: 多項式に含まれる root に対応する不定元を root に 置き換える.

return

多項式

poly

多項式

alglist

リスト

[51] rattoalgp((-2*algv(0)+3)*x^2+(1/7*algv(0)-3/7),[alg(0)]);
(-2*#0+3)*x^2+(1/7*#0-3/7)
参照

alg, algv


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.8 cr_gcda

cr_gcda(poly1,poly2)

:: 代数体上の 1 変数多項式の GCD

return

多項式

poly1 poly2

多項式

[76] X=x^6+3*x^5+6*x^4+x^3-3*x^2+12*x+16$
[77] Y=x^6+6*x^5+24*x^4+8*x^3-48*x^2+384*x+1024$
[78] A=newalg(X);
(#0)
[79] cr_gcda(X,subst(Y,x,x+A));
x+(-#0)
参照

gr, hgr, gr_mod, dgr, asq, af, af_noalg


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.9 sp_norm

sp_norm(alg,var,poly,alglist)

:: 代数体上でのノルムの計算

return

多項式

var

poly の主変数

poly

1 変数多項式

alg

root

alglist

root のリスト

[0] load("sp")$
[39] A0=newalg(x^2+1)$                 
[40] A1=newalg(x^2+A0)$
[41] sp_norm(A1,x,x^3+A0*x+A1,[A1,A0]);
x^6+(2*#0)*x^4+(#0^2)*x^2+(#0)
[42] sp_norm(A0,x,@@,[A0]);            
x^12+2*x^8+5*x^4+1
参照

res, asq, af, af_noalg


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.10 asq, af, af_noalg

asq(poly)

:: 代数体上の 1 変数多項式の無平方分解

af(poly,alglist)
af_noalg(poly,defpolylist)

:: 代数体上の 1 変数多項式の因数分解

return

リスト

poly

多項式

alglist

root のリスト

defpolylist

root を表す不定元と定義多項式のペアのリスト

[98] A = newalg(t^2-2);
(#0)
[99] asq(-x^4+6*x^3+(2*alg(0)-9)*x^2+(-6*alg(0))*x-2);
[[-x^2+3*x+(#0),2]]
[100] af(-x^2+3*x+alg(0),[alg(0)]);
[[x+(#0-1),1],[-x+(#0+2),1]]
[101] af_noalg(-x^2+3*x+a,[[a,x^2-2]]);
[[x+a-1,1],[-x+a+2,1]]
参照

cr_gcda, fctr, sqfr


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.11 sp, sp_noalg

sp(poly)
sp_noalg(poly)

:: 最小分解体を求める.

return

リスト

poly

多項式

[101] L=sp(x^9-54);
[[x+(-#2),-54*x+(#1^6*#2^4),54*x+(#1^6*#2^4+54*#2),
54*x+(-#1^8*#2^2),-54*x+(#1^5*#2^5),54*x+(#1^5*#2^5+#1^8*#2^2),
-54*x+(-#1^7*#2^3-54*#1),54*x+(-#1^7*#2^3),x+(-#1)],
[[(#2),t#2^6+t#1^3*t#2^3+t#1^6],[(#1),t#1^9-54]]]
[102] for(I=0,M=1;I<9;I++)M*=L[0][I];
[111] M=simpalg(M);
-1338925209984*x^9+72301961339136
[112] ptozp(M);
-x^9+54
参照

asq, af, af_noalg, defpoly, algptorat, sp_norm.


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.12 set_field

set_field(rootlist)

:: 代数体を基礎体として設定する.

return

0

rootlist

root のリスト

[0] A=newalg(x^2+1);
(#0)
[1] B=newalg(x^3+A);
(#1)
[2] C=newalg(x^4+B);
(#1)
[3] set_field([C,B,A]);
0
参照

algtodalg, dalgtoalg, dptodalg, dalgtodp


[ << ] [ < ] [] [ > ] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

9.5.13 algtodalg, dalgtoalg, dptodalg, dalgtodp

algtodalg(alg)

:: 代数的数 algDAlg に変換する.

dalgtoalg(dalg)

:: DAlg dalg を代数的数に変換する.

dptodalg(dp)

:: 分散多項式 dpDAlg に変換する.

dalgtodp(dalg)

:: DAlg dalg を分散多項式に変換する.

return

代数的数, DAlg または [分散多項式,分母] なるリスト

alg

root を含む代数的数

dp

有理数係数分散多項式

[0] A=newalg(x^2+1);
(#0)
[1] B=newalg(x^3+A*x+A);
(#1)
[2] set_field([B,A]);
0
[3] C=algtodalg((A+B)^10);
((408)*<<2,1>>+(103)*<<2,0>>+(-36)*<<1,1>>+(-446)*<<1,0>>
+(-332)*<<0,1>>+(-218)*<<0,0>>)
[4] dalgtoalg(C);
((408*#0+103)*#1^2+(-36*#0-446)*#1-332*#0-218)
[5] D=dptodalg(<<10,10>>/10+2*<<5,5>>+1/3*<<0,0>>);
((-9)*<<2,1>>+(57)*<<2,0>>+(-63)*<<1,1>>+(-12)*<<1,0>>
+(-60)*<<0,1>>+(1)*<<0,0>>)/30
[6] dalgtodp(D);
[(-9)*<<2,1>>+(57)*<<2,0>>+(-63)*<<1,1>>+(-12)*<<1,0>>
+(-60)*<<0,1>>+(1)*<<0,0>>,30]
参照

set_field


[ << ] [ < ] [] [ > ] [ >> ]

この文書は3月 29, 2024texi2html 5.0を用いて生成されました。