Go to the first, previous, next, last section, table of contents.

### `asq`, `af`, `af_noalg`

`asq(poly)`
  :: 代数体上の 1 変数多項式の無平方分解
`af(poly,alglist)`
`af_noalg(poly,defpolylist)`
  :: 代数体上の 1 変数多項式の因数分解

return
  リスト
poly
  多項式
alglist
  `root` のリスト
defpolylist
  `root` を表す不定元と定義多項式のペアのリスト

- いずれも ``sp'` で定義されている.
- `root` を含まない場合は整数上の函数が呼び出され高速であるが, `root` を含む場合には, `cr_gcda()` が起動されるためしばしば 時間がかかる.
- `af()` は, 基礎体の指定, すなわち第 2 引数の, `root` のリスト の指定が必要である.
- `alglist` で指定される `root` は, 後で定義されたものほど前の 方に来なければならない.
- `af(F,AL)` において, `AL` は代数的数のリストであり, 有理数体の 代数拡大を表す. `AL=[An,...,A1]` と書くとき, 各 `Ak` は, それより 右にある代数的数を係数とした, モニックな定義多項式で定義されていなければ ならない.

      [1] A1 = newalg(x^2+1);
      [2] A2 = newalg(x^2+A1);
      [3] A3 = newalg(x^2+A2*x+A1);
      [4] af(x^2+A2*x+A1,[A2,A1]);
      [[x^2+(#1)*x+(#0),1]]

  `af_noalg` では, poly に含まれる代数的数 ai を不定元 vi で置き換える. `defpolylist` は, [[vn,dn(vn,...,v1)],...,[v1,d(v1)]] なるリストである. ここで di(vi,...,v1) は ai の定義多項式において 代数的数を全て vj に置き換えたものである.

      [1] af_noalg(x^2+a2*x+a1,[[a2,a2^2+a1],[a1,a1^2+1]]);
      [[x^2+a2*x+a1,1]]

- 結果は, 通常の無平方分解, 因数分解と同様 [因子, 重複度] のリストである. `af_noalg` の場合, 因子 に現れる代数的数は, defpolylist に従って不定元に置き換えられる.
- 重複度を込めた因子の全ての積は, poly と定数倍の違いがあり得る.

    [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]]

`参照`
  section `cr_gcda`, section `fctr`, `sqfr`

Go to the first, previous, next, last section, table of contents.