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

### `dp_nf`, `dp_nf_mod`, `dp_true_nf`, `dp_true_nf_mod`

`dp_nf(indexlist,dpoly,dpolyarray,fullreduce)`
`dp_nf_mod(indexlist,dpoly,dpolyarray,fullreduce,mod)`
  :: 分散表現多項式の正規形を求める. (結果は定数倍されている可能性あり)
`dp_true_nf(indexlist,dpoly,dpolyarray,fullreduce)`
`dp_true_nf_mod(indexlist,dpoly,dpolyarray,fullreduce,mod)`
  :: 分散表現多項式の正規形を求める. (真の結果を `[分子, 分母]` の形で返す)

return
  `dp_nf()` : 分散表現多項式, `dp_true_nf()` : リスト
indexlist
  リスト
dpoly
  分散表現多項式
dpolyarray
  配列
fullreduce
  フラグ
mod
  素数

- 分散表現多項式 dpoly の正規形を求める.
- `dp_nf_mod()`, `dp_true_nf_mod()` の入力は, `dp_mod()` など により, 有限体上の分散表現多項式になっていなければならない.
- 結果に有理数, 有理式が含まれるのを避けるため, `dp_nf()` は 真の値の定数倍の値を返す. 有理式係数の場合の `dp_nf_mod()` も同様 であるが, 係数体が有限体の場合 `dp_nf_mod()` は真の値を返す.
- `dp_true_nf()`, `dp_true_nf_mod()` は, `[nm,dn]` なる形のリストを返す. ただし, nm は係数に分数, 有理式を含まない分散表現多項式, dn は 数または多項式で nm/dn が真の値となる.
- dpolyarray は分散表現多項式を要素とするベクトル, indexlist は正規化計算に用いる dpolyarray の要素のインデックス のリスト.
- fullreduce が 0 でないとき全ての項に対して簡約を行う. fullreduce が 0 のとき頭項のみに対して簡約を行う.
- indexlist で指定された多項式は, 前の方のものが優先的に使われる.
- 一般には indexlist の与え方により函数の値は異なる可能性があるが, グレブナ基底に対しては一意的に定まる.
- 分散表現でない固定された多項式集合による正規形を多数求める必要がある場合 に便利である. 単一の演算に関しては, `p_nf`, `p_true_nf` を 用いるとよい.

    [0] load("gr")$
    [64] load("katsura")$
    [69] K=katsura(4)$
    [70] dp_ord(2)$
    [71] V=[u0,u1,u2,u3,u4]$
    [72] DP1=newvect(length(K),map(dp_ptod,K,V))$
    [73] G=gr(K,V,2)$
    [74] DP2=newvect(length(G),map(dp_ptod,G,V))$
    [75] T=dp_ptod((u0-u1+u2-u3+u4)^2,V)$
    [76] dp_dtop(dp_nf([0,1,2,3,4],T,DP1,1),V);
    u4^2+(6*u3+2*u2+6*u1-2)*u4+9*u3^2+(6*u2+18*u1-6)*u3+u2^2
    +(6*u1-2)*u2+9*u1^2-6*u1+1
    [77] dp_dtop(dp_nf([4,3,2,1,0],T,DP1,1),V);
    -5*u4^2+(-4*u3-4*u2-4*u1)*u4-u3^2-3*u3-u2^2+(2*u1-1)*u2-2*u1^2-3*u1+1
    [78] dp_dtop(dp_nf([0,1,2,3,4],T,DP2,1),V);
    -11380879768451657780886122972730785203470970010204714556333530492210
    456775930005716505560062087150928400876150217079820311439477560587583
    488*u4^15+...
    [79] dp_dtop(dp_nf([4,3,2,1,0],T,DP2,1),V);
    -11380879768451657780886122972730785203470970010204714556333530492210
    456775930005716505560062087150928400876150217079820311439477560587583
    488*u4^15+...
    [80] @78==@79;
    1

`参照`
  section `dp_dtop`, section `dp_ord`, section `dp_mod`, `dp_rat`, section `p_nf`, `p_nf_mod`, `p_true_nf`, `p_true_nf_mod`.

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