Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

複素多項式系

はじめに

Mathematica 関数のReduceResolveFindInstanceを使うと,方程式および不等式で表すことのできる広範な問題を解くことができる.これらの関数では,与えられた問題を,アルゴリズムで解くことのできる問題の列に還元しようと試みるヒューリスティックが使われる.この他にも,特別の性質を満足するクラスの問題に適用可能な多数のアルゴリズムが使われる.このドキュメントでは,複素多項式系として知られる問題のクラスを解くのに使われるアルゴリズムを説明する.また,返された答の構造の特徴を示し,複素多項式系を解く際にさまざまな面で影響を及ぼすオプションについて述べる.
複素多項式系とは,整方程式と不等式で構築された式
を,下のように論理結合子および量限定子を使って結合したものである.
変数xxまたはx内に現れることを束縛出現,その他の部分に現れることを自由出現という.複素多項式系に変数x の自由出現がある場合,x はその系の自由変数という.複素多項式系に量限定子が含まれない場合は,quantifier-freeという.
以下は,自由変数xyz を持つ複素多項式系の例である.
Mathematica では量限定子は,関数Exists ()およびForAll ()を使って表す.
複素多項式系はすべて,次のような冠頭標準形
に変換することができる.ここで,それぞれのQi は量限定子またはであり, (x1, ..., xn;y1, ..., ym)はquantifier-freeである.
quantifier-freeの複素多項式系はすべて,選言標準形に変換することができる.
ここで,それぞれのi, j は整方程式あるいは不等式である.
ReduceResolveFindInstanceは常に複素多項式系を冠頭標準形に,そのquantifier-free部を選言標準形にし,方程式と不等式の両辺を減算して以下の形式にする.
以下のセクションでは,常に系がこの形式に変換されたものと想定する.
Reduce を使うと,任意の複素多項式系を解くことができる.解(についてを拡張した後)は項の選言で,以下の形式となる.
ここでx1, ..., xn は系の自由変数,各gi は多項式,各ri は根号かRootオブジェクトを使って表される代数関数であり,連言項(2)はない可能性がある.各ri (x1, ..., xi-1)は正しく定義されている.つまり,ri の分母およびRootオブジェクトの主要項は,連言(2)に先行する項を満足するいかなる (x1, ..., xi-1)についてもゼロにならないということである.
系(1)を解く.
In[1]:=
Click for copyable input
Out[1]=
Resolveは任意の複素多項式系から量限定子を除去することができる.変数が指定されていなければ,結果は次の項
の論理結合となる(ここでfg は多項式,各xi は系の自由変数である).入力で変数が指定されていれば,ResolveReduceと同じ答を与える.
以下で系(1)から量限定子を除去する.
In[2]:=
Click for copyable input
Out[2]=
FindInstanceは任意の複素多項式系を扱うことができ,複素数解の例,あるいは空リスト(系に解がない場合)を与える.複数の例が要求された場合,例は系のすべての解からランダムに生成されるので,RandomSeedオプションの値に依存する可能性がある.1つの例が要求された場合は,1つの例だけを生成するより高速なアルゴリズムが使われ,返される例は常に同じものになる.
以下で系(1)の解を求める.
In[3]:=
Click for copyable input
Out[3]=
複素多項式系を解くときに使われる主なツールは,グレブナー基底アルゴリズム[1]である.これはMathematica ではGroebnerBasis関数として直接利用することができる.

グレブナー基底

理論

このセクションでは,グレブナー基底の理論を簡単に紹介する.ここでは,Mathematica で複素多項式系を解く場合に使用されるアルゴリズムを説明するのに必要な性質だけを提示する.詳細は[1, 2]等を参照のこと.[2]でmonomial(単項式)と呼ばれているものは,[1]ではterm(項),またその逆となっている点に注意する.このドキュメントでは[1]で使われている用語を使用する.
x1, ..., xn 中の単項式は,非負の整数ei を持つ形式x1e1...xnen の式である.
ここで,M=M (x1, ..., xn)x1, ..., xnの単項式すべての集合であるとする.単項式順序はM 上では線形順序であり,すべてのtM について1t となる.t1t2 はすべてのt1, t2, s Mについてt1st2s となることを示す.
R が体,整数領域,体上の一変数多項式の領域のいずれかであるとする.また,QuotRem が次のように定義される関数R2R であるとする.その定義とは「R が体であれば,Quot (a, b)=a/bRem (a, b)=0となる.R が整数領域であれば,Quot およびRem は整数商と-|b|/2<Rem (a, b)≤|b|/2の剰余関数である.R が,体の一変数多項式の領域であれば,Quot およびRem は多項商と剰余関数である」というものである.
aがR の非零要素でm が単項式であるときの積t=a m は項と呼ばれる.
M 上の単項式順序を として,fR[x1, ..., xn]\{0}とする.f の先頭単項式LM (f)-fで現れる最大の単項式,fの主係数LC (f)fLM (f)での係数であり,f の先頭項LT (f)は積LC (f)LM (f)となる.
単項式順序では,R[x1, ..., xn]のイデアルI のグレブナー基底は,多項式の有限集合G である.ここでは,fI のそれぞれについて,LT (f)LT (g)で割り切れるようなgG が存在する.すべてのイデアルI はグレブナー基底を持つ(証明は[1]等を参照のこと).
pR[x1, ..., xn]\{0}として,mR[x1, ..., xn]が単項式だとしよう.mLM (p)で割り切れ,aRem (a, LC (p))ならば,項t=a mp を法として可約である.t p を法として可約ならば,p を法とするt の簡約化は多項式
となる.ここでRem (a, LC (p))≠0ならばLT (Red (t, p))=Rem (a, LC (p))mとなり,それ以外の場合はLM (Red (t, p))mとなる点に注意する.
fR[x1, ..., xn]で,PR[x1, ..., xn]\{0}の順序付き有限部分集合であるとする.fP の要素を法として可約な項が含まれていれば,fP を法として可約である.P を法としたf の簡約化Red (f, P)は次の手順で定義される.P の要素を法として可約なf の項の集合RT が空集合でないときに,-最大の単項式を持つ項tRT を取り,tp を法として可約であるような最初のpP を取り,f の項tRed (t, p)で置換するのである.この手順の後続するステップで選ばれる項t の単項式は,-降鎖を形成し,各単項式は最大k 回現れる.ここでkP の要素数であるため,手順は終了する.
グレブナー基底G は,すべてのgGについてgG\{g}を法として可約ではなく,かつ,R が整数領域LC (g)>0である場合,半簡約化されているという.
Mathematica 関数のGroebnerBasisは半簡約化されたグレブナー基底を返す.以下の説明では,グレブナー基底はすべて半簡約化されたものと仮定する.ここでは,基底多項式はモニックである必要はないので,文献で定義されている既約グレブナー基底と同じものではない.単項式順序が固定されているときは,各イデアルが一意の既約グレブナー基底を持つ.ここで定義する半簡約化されたグレブナー基底は,R の可逆元による乗算までしか一意ではない(性質 2を参照のこと).
性質 1R[x1, ..., xn]のイデアルI のグレブナー基底をG とし,fR[x1, ..., xn]とする.この場合,Red (f, G)=0のとき,かつそのときに限りfI である.
これは,定義の簡単な結果として成り立つ.
性質 2:同じ単項式順序でのイデアルI の2つのグレブナー基底をG={g1, ...gk}およびH={h1, ...hm}とする.また,GH の要素が先頭単項式によって順序付けられているとする.この場合,k=m となり,R が整数領域の場合はすべての1≤ik についてgi=hi となる.それ以外の場合はR の任意の逆元ci についてgi=ci hi となる.
証明:LM (f)=LM (g)ならば,LT (f)g を法として可約であるか,LT (g)f を法として可約であるかのどちらかとなる.よって,グレブナー基底の要素の先頭単項式はすべて異なる.一般性を失わずにkm と仮定する.帰納法を使うために,jk と固定し,すべてのi<j について,R の可逆元ci についてはgi=ci hi であると仮定する.R が整数領域ならば,ci=1である.一般性を失わずにLM (gj)LM (hj)と仮定する.gjI に属しているので,LT (gj)LT (hi) で割り切れるようなi が存在する.よってLM (hi)LM (gj)で,ijとなる.i<jならば,gjhi を法として可約である.また,ここでgi=ci hi を法とすることもできそうであるが,これはありえない.なぜならば,G が半簡約化されているからである.従って,i=jLM (gj)=LM (hj)であり,LT (gj)LT (hj)で割り切れる.同様にLT (hj)LT (gj)で割り切れる.よって,LT (gj)=cjLT (hj)となるようなR の可逆元cj が存在する.R が整数領域ならば,LC (gj)LC (hj)は正となり,cj=1となる.r=cjhj-gjとしてみよう.ここでr≠0であると仮定する.rIに属するので,一部のi<j についてLT (r)LT (gi)で割り切れなければならない. がそれぞれLM (r)におけるgj およびhjの係数であるとする.R が体であるなら,gj の項 LM (r)gi を法として可約である.これはG が半簡約化されているという仮定に反する.R が体の一変数多項式の領域ならば,
であるので,gjgi を法として可約であるか,hjhi=cigi を法として可約であるかのどちらかとなる.しかし,後者はGH が半簡約化されているという前提に反する.最後にR を整数領域とする.gjgi を法として可約ではなく,hjhi=giを法として可約ではないので,-LC (gi)/2<LC (gi)/2および-LC (gi)/2< LC (gi)/2となる.LT (r)LT (gi)で割り切れるので,-LC (gi)<LC (r)=-<LC (gi)は不可能である.従ってr=0が成り立つので,gj=cj hjとなる.j についての帰納法により,すべてのjkについてgj=cj hjが成り立つ.k<m ならば,hk+1gj(このときjk)を法として可約であり,hk+1hj=cj-1gjを法として可約である.よって,k=mとなり,性質 2が証明される.
性質 3IR[x1, ..., xn]のイデアルで,fR[x1, ..., xn]であり,GR[x1, ..., xn, y]のイデアル<I, 1-y f> のグレブナー基底であるとする.この場合,R の可逆元c についてG={c} が成り立つとき,かつそのときに限りf I の基底になる.
イデアルにR の可逆元が含まれるなら,GroebnerBasisは常に{1}を返す.
証明:まず,
は,任意の非負の整数k のときイデアルJ=<I, 1-y f> に属す.ゆえに,f I の基底に属していれば,1はJ に属す.G J のグレブナー基底なので,要素c の主係数は1を割り切るようなものでなければならない.ゆえにcRの可逆元である.G は半簡約化されており,どの項もc で割り切れるので,G={c}となる.ここでR の可逆元c についてG={c}であると仮定する.1はJ に属するので,
が成り立つ.ここで各aiI に属し,各biR[x1, ..., xn]に属す.y のベキ乗での係数を比較することで,I を法とする方程式b01bibi-1f1≤im-1のとき),bm-1f0が導かれる.次に,bifi0≤im-1のとき),I を法とするfm0という方程式になる.従って,fIの基底に属す.これで性質 3が証明される.
さらに技術的な以下の性質は,複素多項式系を解く際に重要である.
性質 4y を含む単項式がyを含まないものよりも大きくなるような単項式順序での[x1, ..., xn, y]のイデアルI のグレブナー基底をG とする.また,y について最小の正の次数d を持つG の要素をhy についてのh の主係数をc (x1, ..., xn)y に依存しないG の要素すべてを{h1, ..., hs}とする.ここで,任意の多項式pI および点 (a1, ..., an, b)について,c (a1, ..., an)≠0hi (a1, ..., an)=01≤isのとき),h (a1, ..., an, b)= 0ならば,p (a1, ..., an, b)= 0である.
証明:ph で割ったときの擬剰余ry の多項式と考える.
phI に属すので,rI に属す.性質 1により,G によるr の簡約はゼロでなければならない.y についてのr の次数はd よりも小さいので,ry に依存するG のどの要素によっても簡約されない.そこで
が成り立ち,r (a1, ..., an, b)=0も成り立つ.c (a1, ..., an)≠0なので,(1)はp (a1, ..., an, b)= 0であることを示しており,これで性質 4が証明される.

Mathematica 関数のGroebnerBasis

Mathematica 関数のGroebnerBasisは,半簡約化されたグレブナー基底を求める.このセクションでは,複素多項式系の解法で使用されるGroebnerBasisのオプションを説明する.
オプション名
デフォルト値
CoefficientDomainAutomatic係数であると仮定されるオブジェクトの種類
MethodAutomatic基底を計算するのに使われるメソッド
MonomialOrderLexicographic単項式の順序付けに使う基準

複素多項式系の解法で使われるGroebnerBasisのオプション

CoefficientDomain

このオプションは係数の領域R を指定する.デフォルトのAutomatic設定では,係数領域は入力に存在する数値係数によって生成された体になる.
Integers整数領域
InexactNumbers[prec]精度prec の非厳密数
Polynomials[x]x の多項式領域
RationalFunctionsGroebnerBasisに与えられた変数リストにはない変数の有理関数体
Rationals有理数体

CoefficientDomainで使える設定

係数領域RGroebnerBasisModulusオプションの設定に依存する.Modulus->pという設定では,素数p についての係数領域は体p,また,CoefficientDomain->RationalFunctionsのときはp 上の有理関数体となる.

Method

デフォルト設定のMethod->Automaticでは,GroebnerBasisでBuchbergerアルゴリズムの変形が使われる.この他に使えるアルゴリズムはグレブナーウォークで,グレブナー基底をより簡単な単項式順序で計算してから,要求される難しい単項式順序に変換するものである.これは,要求された順序で直接グレブナー基底を計算するよりも速いことが多い.特に入力の多項式が簡単な順序のグレブナー基底であることが分かっている場合に有効である.設定Method->AutomaticではGroebnerBasisでデフォルトのCoefficientDomain->RationalsおよびMonomialOrder->Lexicographicのグレブナーウォークが使われる.
GroebnerBasis[polys,vars,Method->{"GroebnerWalk","InitialMonomialOrder"->order1},MonomialOrder->order2]
order1のグレブナーウォークを見付け,それをorder2のグレブナー基底に変換するためにグレブナーウォーク法を使う

グレブナーウォーク法を使ったグレブナー基底の変換

MonomialOrder

このオプションは,単項式順序を指定する.値は指定された単項式順序のいずれか,あるいは重み行列のどちらかである.以下の表はx1d1...xndn x1e1...xnenとなる条件を与える.
Lexicographicd1=e1...di-1=ei-1
DegreeLexicographicd1+...+dn<e1+...+en (d1+...+dn=e1+...+end1=e1...di-1=ei-1di<ei)
DegreeReverseLexicographicd1+...+dn<e1+...+en (d1+...+dn=e1+...+endn=en...di+1=ei+1di<ei)

単項式順序

QE(量限定子除去)では,量限定子変数を含む単項式が含まないものよりも大きくなるような順序が必要である.Lexicographic順序はこの条件を満足するが,次のEliminationOrderの方が通常計算が速い.
ここでd は合計次数,X は自由変数,Y は量限定子変数,mini は単項式,DRLDegreeReverseLexicographic順序を表している.
EliminationOrderを使うときは,除去変数を指定したGroebnerBasisシンタックスが必要である.
GroebnerBasis[polys,xvars,yvars,MonomialOrder->EliminationOrder]
EliminationOrderでグレブナー基底を見付ける

除去順序におけるグレブナー基底

MonomialOrder->EliminationOrderと設定されているGroebnerBasisでは,デフォルトでyvars を含む多項式を結果から削除し,xvarsの基底多項式だけを返す.基底多項式をすべて得るためには,GroebnerBasisOptionsグループのシステムオプションEliminateFromGroebnerBasisの値を変更しなければならない(Mathematica はQE法でこのオプションを局所的に変更する).オプション値は以下のように変更することができる.
SetSystemOptions["GroebnerBasisOptions"->{"EliminateFromGroebnerBasis"->False}].
オプション名
デフォルト値
"EliminateFromGroebnerBasis"TrueMonomialOrder->EliminationOrderに設定されたGroebnerBasisで除去変数を含む多項式を削除するかどうか

システムオプションEliminateFromGroebnerBasis

以下によりからy が除去される.答となる多項式は,その零点が,もとの2つの方程式の解集合を (x1, x2)平面上に投影したときのZariski閉包となるようなものである.
In[4]:=
Click for copyable input
Out[4]=
解集合を (x1, x2)平面上へ投影したときの厳密な記述は,すべての基底多項式に依存する.x1あるいはx2がゼロのときは,2番目の基底多項式はゼロにはならないことに注意する.
In[5]:=
Click for copyable input
Out[6]=
システムオプションをデフォルト値に戻す.
In[7]:=
Click for copyable input
Resolveにより (x1, x2)平面上への解集合の投影の正確な記述が得られる.
In[8]:=
Click for copyable input
Out[8]=

決定問題

決定問題とは,すべての変数が存在量化された系である.つまり,以下の形式の系のことである.
ここでx1, ..., xn はすべての変数となっている.決定問題を解くことは,それがTrueFalseのどちらと等価であるかを判定すること,言い換えれば,量限定子を含まない整方程式および不等式の系 (x1, ..., xn)が解を持つかどうかを判定することである.
この決定問題を解くことで,行列式がゼロである2次方程式が2つの異なる根を持つことはないことが証明される.
In[9]:=
Click for copyable input
Out[9]=
以下の恒等式
を仮定すると,いかなる決定問題を解くことも,以下の形式の有限個の決定問題を解くことに還元できる.
ヒルベルトの零点定理(Nullstellensatz)およびグレブナー基底の性質 3により,
は,任意の単項式順序の
が{1}と異なるとき,かつ,そのときに限り複素数解を持つ.
次はx2+y22 xy x≠-1が複素数解を持つことを示している.
In[10]:=
Click for copyable input
Out[10]=
これはx2+y22 xy x2≠1が複素数解を持たないことを示している.
In[11]:=
Click for copyable input
Out[11]=
Mathematica で決定問題を解く場合,GroebnerBasisの計算で使われる単項式順序は,{z}が除去変数リストとして指定されたMonomialOrder->EliminationOrderである.この設定は,z を含む単項式の方が,含まないものよりも大きくなるような単項式順序に相当し,z を含まない単項式の順序は次数逆辞書式順序になる.不等式条件がない場合は,z を導入する必要はなく,MathematicaMonomialOrder->DegreeReverseLexicographicという設定を使う.

QE(量限定子除去)

複素多項式系にはどれも,それと等価のquantifier-freeの複素多項式系が存在する.このことは,半代数的構成可能集合(quantifier-freeの整方程式および不等式の系の解集合)の投影が,半代数的構成可能集合であるというシュヴァレー(Chevalley)の定理に従っている([3]を参照).QEは指定された複素多項式系と等価のquantifier-freeの複素多項式系を見付ける手続きである.Mathematica では,複素多項式系のQEはResolveで実行される.また,QEは複素多項式の解法もしくは解の例の探索の第1段階として,ReduceおよびFindInstanceでも使われる.
以下の系から量限定子を除去することにより,2次方程式が少なくとも2つの異なる零点を持つための条件が与えられる.
In[12]:=
Click for copyable input
Out[12]=
Mathematica では,複素多項式系に以下のようなQE法が使われる.例えば,次の恒等式があるとする.
どのような複素多項式系から量限定子を除去することも,下の系から単一の存在記号を有限回数除去することに還元される.
(1)から量限定子を除去するために,Mathematica ではまず,y を含む単項式がy を含まないものよりも大きくなるような単項式順序で,方程式のグレブナー基底
を計算する.
使用される単項式順序は,EliminationOrderである.ここで{y}は除去変数リストで指定されており,すべての基底多項式は維持されている
Gy に依存する多項式を含まないならば,(1)と等価のquantifier-freeの系は,G のすべての要素をゼロとし,y の多項式としてのg の係数の少なくとも1つがゼロではないとすることで得ることができる.これ以外の場合は,y の最低の正の次数d を持つG の要素をh とし,yh の主係数をc (x1, ..., xn)とし,y に依存しないG の要素すべてを{h1, ..., hs}とする.これで(1)は,2つの系の選言
および
に分割できる.(2)から量限定子を除去するために,QEが再帰的に呼び出される.{c, f1, ..., fk}で生成されるイデアルは,{f1, ..., fk}で生成されるイデアルを厳密に含んでいるので,多項式環がネーターであるという性質により,再帰が有限であると保証される.
c{f1, ..., fk}で生成されるイデアルの基底に属すなら(これは厳密に1が
に属すときである),(3)はFalseと等価になる.そうでない場合は,gdh で割ったときの擬剰余をy の多項式として
とする.これで(3)はquantifier-freeの系
と等価になる.(3)が(4)を意味することを示すために, (a1, ..., an)が(3)を満足すると仮定する.c (a1, ..., an)≠ 0となり,
が成り立つようなbが存在する.{h1, ..., hs}およびh{f1, ..., fk}で生成されるイデアルに属すので,
およびh (a1, ..., an, b)=0が成り立つ.従って,
を示す
が成り立つ.(4)が(3)を意味することを示すために, (a1, ..., an)が(4)を満足すると仮定する.すると,
が成り立つ.h (a1, ..., an, y)は次数d の多項式で,r (a1, ..., an, y)dより低い次数の非零の多項式なので,h (a1, ..., an, y) (y-b)m で割り切れるが,ある1≤mdについてはr (a1, ..., an, y)は割り切れないようなh (a1, ..., an, y)の根b がある.g (a1, ..., an, b)がゼロならば,g (a1, ..., an, y)d (y-b)m で割り切れるだろうが,これはr (a1, ..., an, y) (y-b)mで割り切れるということを意味するので,ありえない.従って,g (a1, ..., an, b)≠0となる.性質 4pG であるすべての多項式についてp (a1, ..., an, b)= 0であることを示している.G{f1, ..., fk}で生成されるイデアルのグレブナー基底なので,
となり,これでQE法の正確性が証明される.
以下で,から量限定子を除去する.ここでg=1h=-y+x1+x2c=-1である.c は非零の定数なので,(2)はFalseとなり,等価のquantifier-freeの系は(4)で与えられる.また,g は非零の定数なので,(4)はとなる.
In[13]:=
Click for copyable input
Out[14]=
以下で系のオプションをデフォルト値に戻す.
In[15]:=
Click for copyable input

任意の複素多項式系

FindInstance

FindInstanceでは任意の複素多項式系を扱うことができ,複素数解の例,あるいは空リスト(解のない系の場合)を与える.複数の例が要求された場合,例はReduceによって与えられた系のすべての解からランダムに生成される.1つの例が要求された場合は,1つの例だけを生成する,より高速なアルゴリズムが使われる.以下に挙げるのは,1つの例だけを見付ける,あるいは系に解がないことを証明するアルゴリズムである.
系に全称記号()が含まれる場合,QEアルゴリズムを使って,系が存在記号()だけを含むようになるまで,あるいは系がquantifier-freeになるまで,最内部の量限定子を削除していく.
は, (x1, ..., xn, y1, ..., ym)に解があるとき,かつ,そのときに限り解を持つ.また, (x1, ..., xn, y1, ..., ym)の解が (a1, ..., an, b1, ..., bm)であるならば,(1)の解は (b1, ..., bm)である.つまり,存在記号だけを含む系で解の例を見付けるためには,quantifier-freeの系の例が見付かるだけで十分なのである.さらに,1≤im のときに (a1, ..., an)i (x1, ..., xn)のいずれかの解であるとき,かつ,そのときに限り, (a1, ..., an)
の解となるので,
の解の例を見付ける方法を示すことで十分なのである.まず,MonomialOrder->EliminationOrderという設定でz に依存する多項式を除去し,{f1, ..., fk, 1-g z}GroebnerBasis G を計算する(不等式条件がない場合は,GMonomialOrder->DegreeReverseLexicographicと設定した{f1, ..., fk}GroebnerBasisである).もしG に1が含まれる場合,解はない.含まれない場合は,次数逆辞書式順序のG によって生成されたイデアルを法とする非常に独立な部分集合の中で,最大基数の{x1, ..., xn}の部分集合S を計算する([1]のセクション9.3を参照のこと).S={xn-d+1, ..., xn}となるように{x1, ..., xn}を並べ替え,G で生成されたイデアルの辞書式順序GroebnerBasis H を計算する.Mathematica ではH を計算するために,グレブナーウォーク法が使われる.
1≤in-d のときそれぞれの変数xi について,xi には依存するが{x1, ..., xi-1}には依存しないH の元の中で,最小の先頭単項式を持つ多項式hiH を選ぶ.hi の主係数をxi の多項式ci とする.ciS にない変数に依存するならば,Hci で生成されたイデアルの辞書式順序グレブナー基底をH に代入する.以下は,この操作により,SH で生成されるイデアルを法として強く独立であるよう維持されることを示す.従って,H を有限(多項式環のネーター性による)回拡大した後,hi の主係数ci1≤in-d ですべて{xn-d+1, ..., xn}にのみ依存するようになることがある.多項式集合P について,P の要素の共通零点集合をZ (P)とする.Z (G)Z (H)の両方とも次元がd で,Z (H)Z (G)であるため,Z (H)d 次元の既約成分はZ (G)の成分でもある.gZ (G)のどの既約成分上でもゼロにならないので,Z (H)d 次元既約成分上でもゼロにならない.よって,Hg のグレブナー基底には,{xn-d+1, ..., xn}にのみ依存する多項式t が含まれる.p=t c1...cn-dが成り立つとしよう.(2)の解を求めるために,p (an-d+1, ..., an)≠0となるような最後のd 個の座標{an-d+1, ..., an}を選ぶ.1≤in-dではすべて,ci (an-d+1, ..., an)≠0なので,性質 4により,i=n-d, ..., 1のときaihi (xi, ai+1, ..., an)の最初の根に選ばれるなら, (a1, ..., an)Z (H)Z (G)である.さらにg (a1, ..., an)≠0となる.そうでないと, (a1, ..., an)Z (H{g})に属すことになり,t (an-d+1, ..., an)= 0を意味する.しかしこのようなことは,pt で割り切れるため,ありえないのである.
前述のアルゴリズムの正確さを証明するためには,S にない変数に依存するciH を拡大すると,H で生成されるイデアルを法としたS の強い独立性が維持されることを示さなければならない.任意の1≤in-d で,ciS にない変数に依存すると仮定する.Ii+1[xi+1, ..., xn]H[xi+1, ..., xn]で生成されたイデアルを表し,Ji+1[xi+1, ..., xn]Ii+1ci で生成されたイデアルを表すとする.このときJi+1には[xn-d+1, ..., xn]の非零要素は含まれない.これを証明するために,p[xi+1, ..., xn]qIi+1のときにr=p ci+qJi+1[xn-d+1, ..., xn]\{0}であるとする.ここでdegxi (t)<k のときhi= cixik+t が成り立ち,
H で生成されたイデアルに属し,gi= r xik+p t も同様である.これはhi の選択に反する.というのは,gi の頭単項式はxi に依存しており,hi の頭単項式よりも厳密に小さいからである.従って,Z (Ji+1)Ad= (d){xn-d+1, ..., xn}上への投影はAd で密である.また,Z (Ii+1)の次元はd なので,ci は,Ad への投影がAd で密であるようなZ (Ii+1)の任意の既約成分Ci+1上でゼロでなければならない.Z (Ii+1)d 次元集合Z (H)の投影のZariski閉包なので,Ci+1Z (H)の既約成分C の投影のZariski閉包に含まれる.Z (ci)Cd 次元なので,ciC 上でゼロであり,C Ad への投影はAd で密である.これにより,SHci で生成されたイデアルを法として強く独立であることが証明される.
以下は,H を拡大する必要がある例である.ここではS={x3}h1= (x2-x3) x1c1=x2-x3I2=< (x2-x3)2 (x2-2 x3)>である.c1I2の2つの1次元成分のうちのどちらかでゼロである.
In[16]:=
Click for copyable input
Out[16]=
H c1 で拡大すると,すべて{x3}の強い独立性を維持しながら,x3 だけに依存(実際は定数も)するci となる.
In[17]:=
Click for copyable input
Out[17]=

Reduce

Reduceでは,任意の複素多項式系を解くことができる.第1段階として,ReduceQEアルゴリズムを使って量限定子を除去する.得られたquantifier-freeの系が選言であるならば,選言の各項は別々に解かれ,解は項の解の選言として与えられる.従って,問題は以下の形式
のquantifier-freeの系を解くことに簡約される.まず,変数次数{z, xn, ..., x1}MonomialOrder->Lexicographic{f1, ..., fk, 1-g z}GroebnerBasis G を計算し,z に依存しない多項式を選ぶ.すると,G=0 g (x1, ..., xn)≠0の解集合は(3)の解集合と等しく,gG の零点集合Z (G)のどの成分上でも消失しない.G に1が含まれるならば(3)には解はない.それ以外の場合は,j>i のときにxi には依存するがxj には依存しないG の要素の集合Gi が,空にはならないような各1≤in について,xi の最低の正の次元を持つGi の要素hi を選ぶ.hi の主係数ci のうちの1つがZ (G)上でゼロ,つまり,G で生成されるイデアルの基底に属すなら,G を,Gci で生成されるイデアルの辞書式順序グレブナー基底で置換する.ここで,系を
の2つに分割し,選言(4)の最後の項以外のすべてについて再帰的に解法を呼び出す.代数集合cij=0G=0は厳密にG=0に含まれているので,再帰は有限である.cig すべての積がG で生成されるイデアルの基底に属すならば,最後の項には解がない.そうでない場合は,性質 4により,最終項の解集合は
と等しくなる.条件cij≠0は,Roots[hij=0, xij]で与えられる解(基底あるいはRootオブジェクトとして表される)すべてが正しく定義されていることを保証する.Reduceは返される不等式条件を簡約するために,複数の因数の削除,前の不等式条件と共通の因数の削除,モジュロhij の還元,Z (G)上で非零の因数の削除等,いくつかの操作を実行する.

オプション

Reduce,Resolve,FindInstanceのオプション

複素多項式系を解くためのMathematica 関数には,操作方法を制御するオプションが数多く備わっている.このセクションでは,そのようなオプションを要約する.
オプション名
デフォルト値
BacksubstitutionFalseReduceおよびResolveによって与えられた,指定された変数を持つ解を,逆置換によってアンワインドするかどうか
CubicsFalse3次方程式の解を表すのにカルダノの公式(Cardano formulas)を使うかどうか
QuarticsFalse4次方程式の解を表すのにカルダノの公式を使うかどうか

複素多項式系の動作に影響を与えるReduceResolveのオプション

オプション名
デフォルト値
WorkingPrecision計算で使用する作業精度.デフォルト設定はシステムオプション.作業精度の値はRootsの呼出しにだけ影響を及ぼす

複素多項式系の動作に影響を与えるReduceResolveFindInstanceのオプション

Backsubstitution

Reduceはデフォルトで,変数リストの前の方に現れる変数を使って,それ以降に現れる変数の解を表すことができる.
In[18]:=
Click for copyable input
Out[18]=
Backsubstitution->Trueと設定すると,Reduceは方程式の右辺から変数を除去するために逆置換を使う.
In[19]:=
Click for copyable input
Out[19]=

CubicsとQuartics

Reduceはデフォルトでは,3次および4次方程式を解くのにカルダノの公式を使わない.
In[20]:=
Click for copyable input
Out[20]=
オプションCubicsおよびQuarticsTrueと設定すると,Reduceで3次および4次方程式を解くのにカルダノの公式を使うことができる.
In[21]:=
Click for copyable input
Out[21]=

WorkingPrecision

WorkingPrecisionを有限数に設定すると,Reduceは多項式の根を求めるために数値解法を使う.
In[22]:=
Click for copyable input
Out[22]=

ReduceOptionsグループのシステムオプション

ここで挙げるのは,複素多項式系でのReduceResolveFindInstanceの動作に影響を及ぼすReduceOptionsグループのシステムオプションである.これらのオプションは以下のように設定する.
SetSystemOptions["ReduceOptions"->{"option name"->value}].
オプションFinitePrecisionGBTrueに設定する.
In[23]:=
Click for copyable input
以下でFinitePrecisionGBの値をチェックする.
In[24]:=
Click for copyable input
Out[24]=
オプションFinitePrecisionGBをデフォルト値のFalseに戻す.
In[25]:=
Click for copyable input
オプション名
デフォルト値
"FinitePrecisionGB"False作業精度の有限値をGroebnerBasisの呼出しで使うかどうか
"ReorderVariables"False指定された変数の順序をReduceResolveで変更してもよいかどうか

複素多項式系でのReduceResolveFindInstanceの動作に影響を及ぼすReduceOptionsグループのオプション

FinitePrecisionGB

Reduceでデフォルトで,GroebnerBasisCoefficientDomain->Automaticの設定で使う.つまり,WorkingPrecisionを有限数prec に設定しても,入力が厳密であるならGroebnerBasisでは厳密な計算が使われるということである.
In[26]:=
Click for copyable input
Out[28]=
システムオプションを"FinitePrecisionGB"->Trueとすると,ReduceGroebnerBasisCoefficientDomain->InexactNumbers[prec]の設定で使う.
In[29]:=
Click for copyable input
Out[30]=
有限精度を使うと,GroebnerBasisの計算速度が格段に向上することがある.しかし,数値計算は精度の損失のために失敗するか,誤った答を出す可能性がある.数値計算は通常,厳密なGroebnerBasisの計算をしてから数値根の探索をするよりも精度の劣る結果を与える.
In[31]:=
Click for copyable input
Out[31]=
これは,結果がその精度までは等しいことを示している.
In[32]:=
Click for copyable input
Out[32]=
In[33]:=
Click for copyable input

ReorderVariables

Reduceはデフォルトでは,指定された変数の順序を変えることができない.変数リストの前の方に現れる変数は,それより後に現れる変数の解を表すために使うことができるが,その逆はできない.
In[34]:=
Click for copyable input
Out[34]=
システムオプションを"ReorderVariables"->Trueと設定すると,Reduceは方程式が解きやすくなるような変数順序を選ぶことができる.
In[35]:=
Click for copyable input
Out[35]=
In[36]:=
Click for copyable input

参考文献

[1] Becker T. and V. Weispfenning. Gröbner Bases. Springer-Verlag (1993)

[2] Cox D., J. Little, and D. O'Shea. Ideals, Varieties, and Algorithms. Springer-Verlag (1996)

[3] Łojasiewicz S. Introduction to Complex Analytic Geometry. Springer-Verlag (1991)

Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team