多項式方程式系(単に多項式系と呼ばれることもある)は、f i がいくつかの変数x 1 、 ... 、x nに関する多項式であるような、ある体 k 上の連立方程式f 1 = 0、 ...、f h = 0の集合である。
多項式系の解とは、k の代数的に閉じた体拡大 K に属し、すべての式を真にする x の値の集合のことである。kが有理数体の場合、各解はkの体拡大に属し、それが複素数体の部分体と同型であるため、一般にKは複素数体であると仮定される。
本稿では、解を求める方法、すなわちすべての解を見つける方法、あるいはそれらを記述する方法について述べる。これらの方法はコンピュータ上での実装を前提としているため、計算(等式判定を含む)が容易かつ効率的な体k、すなわち有理数体と有限体に重点を置いている。
特定の集合に属する解を探すことは、一般的に非常に難しい問題であり、与えられた有限体における解の場合を除き、この記事の範囲外である。すべての成分が整数または有理数である解の場合には、ディオファントス方程式を参照のこと。

多項式方程式系の簡単な例は次のとおりです。
その解は、 ( x , y ) = (1, 2), (2, 1), (-1, -2), (-2, -1) の4組です。これらの解は代入によって簡単に確認できますが、他の解が存在しないことを証明するには、さらに作業が必要です。
本稿の主題は、そのような例の一般化の研究と、解を計算するために用いられる方法の説明である。
多項式方程式系、または 多項式システムとは、方程式の集合のことである。
ここで、各f hは、整数係数または何らかの固定体(多くの場合、有理数体または有限体)の係数を持つ不定元x 1 、 ...、 x m の多項式です。[ 1 ]実数などの他の係数体は、その要素をコンピュータで表現できないため、あまり使用されません(計算には実数の近似値のみを使用でき、これらの近似値は常に有理数です)。
多項式系の解とは、その多項式系のすべての式を満たす ( x 1 , ..., x m ) の値の組のことです。解は複素数、あるいはより一般的には係数を含む代数的に閉じた体で求められます。特に、標数ゼロの場合、すべての複素解が求められます。実数解や有理数解を求めるのははるかに難しい問題であり、この記事では扱いません。
解の集合は必ずしも有限ではありません。たとえば、システムの解は
解集合が有限であっても、一般に解の閉形式表現は存在しない(単一の方程式の場合、これはアーベル・ルフィニの定理である)。
図に示すバース曲面は、3変数6次方程式1つに還元された多項式系の解の幾何学的表現です。その多数の特異点のいくつかが画像上に示されています。これらは、 3変数5次方程式4つの系の解です。このような過剰決定系は一般には解を持ちません(つまり、係数が特定されていない場合)。有限個の解を持つ場合、ベズーの定理により、その数は最大で5³ = 125です。しかし、6次曲面の特異点の場合、解の最大数は65であり、バース曲面によって達成されることが示されています。
方程式の数が変数の数より多い場合、システムは過剰決定である。複素解を持たない場合(または、係数が複素数でない場合、係数を含む代数的に閉じた体で解を持たない場合)、システムは矛盾している。ヒルベルトの零点定理によれば、これは 1 が方程式の最初の項の線形結合(係数として多項式を持つ)であることを意味する。ほとんどの過剰決定システムは、ランダムな係数で構築すると矛盾するが、すべてではない。たとえば、システムx 3 – 1 = 0、x 2 – 1 = 0は過剰決定である(方程式が 2 つあるが未知数は 1 つだけ)が、解x = 1を持つため矛盾していない。
方程式の数が変数の数より少ない場合、そのシステムは不確定である。不確定システムは、矛盾しているか、無限に多くの複素解(または方程式の係数を含む代数的に閉じた体における解)を持つ。これは可換代数の重要な結果であり、特にヒルベルトのヌルシュテレンザッツとクルルの主イデアル定理に関わる。
有限個の複素解(または代数的に閉じた体における解)を持つ系は、零次元である。この用語は、解の代数多様体の次元がゼロであるという事実に由来する。無限個の解を持つ系は、正次元であると言われる。
変数の数と同じ数の方程式を持つ零次元システムは、しばしば「良好に振る舞う」と言われる。[ 3 ]ベズーの定理は、方程式の次数がd 1 , ..., d nである良好に振る舞うシステムには、最大でd 1 ⋅⋅⋅ d n個の解しか存在しないと主張している。この上限は厳密である。すべての次数がdに等しい場合、この上限はd nとなり、変数の数に対して指数関数的になる。(代数学の基本定理は、 n = 1 の特殊な場合である。)
この指数関数的な挙動は多項式系の解法を困難にし、例えばベズーの限界が25を超える系(3次方程式が3つ、または2次方程式が5つある場合)を自動的に解くことができるソルバーが少ない理由を説明している。
多項式系を解くための最初のステップは、それが矛盾しているか、0次元であるか、正の次元であるかを判断することです。これは、方程式の左辺のグレブナー基底を計算することで行うことができます。このグレブナー基底が1に縮小される場合、その系は矛盾しています。すべての変数について、グレブナー基底の何らかの要素の先頭の単項式がその変数の純粋なべき乗である場合、その系は0次元です。このテストでは、最も良い単項式の順序(つまり、一般的に最も速い計算につながる順序)は、通常、段階的逆辞書式順序(grevlex)です。
システムが正次元の場合、解は無限に存在する。したがって、それらを列挙することは不可能である。この場合、解を求めるということは、「解の関連する性質を容易に抽出できるような解の記述を見つけること」を意味するにすぎない。しかし、そのような記述は一般的に受け入れられていない。実際、代数幾何学のほぼすべての分野に関わる、さまざまな「関連する性質」が存在する。
正次元系に関するこのような問題の自然な例として、有理数体上の多項式系が有限個の実数解を持つかどうかを判定し、それらを計算する問題が挙げられます。この問題の一般化として、多項式系の実数解の集合の各連結成分において少なくとも1つの解を見つける問題があります。これらの問題を解決するための古典的なアルゴリズムは円筒代数分解ですが、これは計算量が2倍指数関数的であるため、非常に小さな例を除いては実際には使用できません。
零次元システムの場合、解を求めるにはすべての解を計算する必要があります。解を出力する方法は2種類あります。最も一般的な方法は、実数解または複素数解に対してのみ可能で、解の数値近似を出力することです。このような解は数値解と呼ばれます。解は、近似誤差の上限が与えられ、かつこの上限が異なる解を区別する場合に、検証済みとみなされます。
解を表現するもう1つの方法は代数的表現と呼ばれます。これは、零次元システムの場合、解がシステムの係数の体kの代数的閉包に属するという事実を利用します。代数的閉包で解を表現する方法はいくつかあり、以下で説明します。これらの方法はすべて、1つまたは複数の単変数方程式を解くことによって解の数値近似を計算することを可能にします。この計算には、近似係数を持つ多項式の根を計算することは非常に不安定な問題であるため、解ごとに1つの単変数多項式のみを解く表現を使用するのが望ましいです。
三角方程式は、 gが三角多項式である方程式g = 0です。このような方程式は、その中の正弦と余弦を展開し(和と差の公式を使用)、sin( x )とcos( x )を 2 つの新しい変数sとcに置き換え、新しい方程式s 2 + c 2 – 1 = 0を追加することによって、多項式システムに変換できます。
例えば、アイデンティティのため
方程式を解く
これは多項式系を解くことと同等である。
このシステムの各解( c 0 , s 0 )に対して、 0 ≤ x < 2 πを満たす方程式の一意の解x が存在する。
この単純な例では、連立方程式が方程式よりも解きやすいかどうかは明らかではないかもしれません。より複雑な例では、方程式を直接解くための体系的な方法は存在しませんが、対応する連立方程式を自動的に解くためのソフトウェアは利用可能です。
q個の要素を持つ有限体k上の連立方程式を解く場合、主にkの解に関心があります。kの要素は方程式x q – x = 0の解と全く同じなので、解をkに制限するには、各変数x iに対して方程式x i q – x i = 0を追加すれば十分です。
代数体の要素は通常、その体の生成元における多項式として表され、その生成元は一変数多項式方程式を満たします。係数が数体に属する多項式系を扱うには、この生成元を新しい変数とみなし、生成元の方程式を系の方程式に加えるだけで十分です。したがって、数体上の多項式系を解くことは、有理数上の別の系を解くことに帰着します。
例えば、システムに有理数上のシステムは、方程式r 2 2 – 2 = 0を追加し、置き換えることによって得られます。他の方程式ではr 2を使用します。
有限体の場合、同じ変換によって、体kが素数位数を持つと常に仮定することができる。
解を表す一般的な方法は、零次元の正則鎖を用いることである。このような鎖は、 1 ≤ i ≤ nを満たすすべてのiに対して、次の式が成り立つような多項式の列f 1 ( x 1 )、f 2 ( x 1 , x 2 )、 ...、f n ( x 1 , ...、x n )から構成される。
このような規則的な連鎖には、三角形の方程式系が関連付けられている。
このシステムの解は、最初の単変数方程式を解き、その解を他の方程式に代入し、次に単変数となった2番目の方程式を解く、という手順で得られます。正則連鎖の定義によれば、f iから得られる単変数方程式の次数はd iであり、したがって、この解法プロセスに多重根が存在しないことを前提として、システムはd 1 ... d n個の解を持ちます(代数学の基本定理)。
零次元多項式方程式系はすべて、有限個の正則連鎖と等価(つまり、同じ解を持つ)である。次の系のように3つの解を持つ場合、複数の正則連鎖が必要になることもある。
任意の多項式システム(必ずしもゼロ次元ではない)[ 4 ]を正則な鎖(または正則な半代数システム)に三角分解するアルゴリズムがいくつか存在する。
また、ゼロ次元の場合に特有のアルゴリズムもあり、この場合、直接アルゴリズムと同等の性能を発揮します。このアルゴリズムは、まず次数付き逆辞書式順序 (grevlex)のGröbner 基底を計算し、次に FGLM アルゴリズム[ 5 ]によって辞書式 Gröbner 基底を導出し、最後に Lextriangular アルゴリズム[ 6 ]を適用するというものです。
この解の表現は、有限体における係数に対しては完全に都合が良い。しかし、有理係数の場合、次の2つの点に注意する必要がある。
最初の問題は Dahan と Schost によって解決されました。[ 7 ] [ 8 ]与えられた解の集合を表す正則チェーンの集合の中に、係数が入力システムのサイズに関して明示的に制限され、ほぼ最適な境界を持つ集合があります。この集合は等射影分解と呼ばれ、座標の選択のみに依存します。これにより、等射影分解を効率的に計算するためのモジュール方式の使用が可能になります。[ 9 ]
2番目の問題は、通常、形状補題と呼ばれる特殊な形式の正則チェーンを出力することで解決されます。この形状補題では、最初の d i を除くすべての d i が1に等しくなります。このような正則チェーンを取得するには、インデックス0が与えられた分離変数と呼ばれる別の変数を追加する必要がある場合があります。以下で説明する有理単変数表現を使用すると、正則チェーンまたは Gröbner 基底のいずれかから開始して、Dahan–Schost 境界を満たすこのような特殊な正則チェーンを計算できます。
有理単変数表現(RUR)は、F. Rouillierによって導入された、有理数上のゼロ次元多項式系の解の表現である。[ 10 ]
ゼロ次元システムの RUR は、変数の線形結合x 0 (分離変数と呼ばれる)と方程式のシステムで構成されます[ 11 ]
ここで、hは次数Dのx 0に関する単変数多項式であり、g 0、...、g n は次数がD未満のx 0に関する単変数多項式である。
有理数上の零次元多項式系が与えられた場合、RURは次の性質を持つ。
例えば、前のセクションのシステムでは、変数の線形結合のうち、x、y、x + yの倍数を除くすべてのものが分離変数です。t = x – y / 2 を分離変数として選択すると、RUR は次のようになります。
RURは、アルゴリズムに依存せず、与えられた分離変数に対して一意に定義され、根の重複度を保持します。これは、一般に重複度を保持しない三角分解(等射影分解を含む)との顕著な違いです。RURは、等射影分解と同様に、比較的小さな係数を持つ出力を生成するという特性を持っています。
ゼロ次元システムの場合、RURは単一の単変数多項式を解き、それを有理関数に代入することで、解の数値を取得することを可能にします。これにより、任意の精度で解の認証済み近似値を生成することができます。
さらに、 RURの単変数多項式h ( x₀ )は因数分解することができ、これにより各既約因子に対応するRURが得られます。これは、与えられたイデアルの素分解(すなわち、イデアルの根基の素分解)を提供します。実際には、特に多重度の高いシステムの場合、これにより係数がはるかに小さい出力が得られます。
三角分解や等射影分解とは異なり、RURは正の次元では定義されない。
非線形方程式系全般に対応するように設計された一般的な数値アルゴリズムは、多項式系にも適用できます。しかし、一般的には、一般的な手法ではすべての解を見つけることができないため、特定の手法を用いる方が望ましいでしょう。特に、一般的な手法で解が見つからない場合でも、必ずしも解が存在しないことを意味するわけではありません。
とはいえ、ここで言及する価値のある方法が2つある。
これは、方程式の数が変数の数と等しいと仮定する半数値的な方法です。この方法は比較的古いものですが、ここ数十年で劇的に改善されました。[ 13 ]
この方法は3つのステップに分かれています。まず、解の数の上限を計算します。この上限はできるだけ正確でなければなりません。そのため、少なくとも4つの異なる方法で計算し、最良の値、例えばは保持されます。
第2段階では、システムが多項式方程式が生成され、正確に計算しやすい解。この新しいシステムは同じ数です。変数の数と、同じ数方程式の集合であり、解くべきシステムと同じ一般的な構造を持つ。。
次に、 2つのシステム間のホモトピーが考慮されます。これは、例えば、2つのシステム間の直線で構成されますが、特にシステム内の特異点を回避するために、他の経路も考慮される場合があります。
ホモトピー連続は、パラメータを変形することから成ります。0から1へ、そしてこの変形中の解。これにより、以下の望ましい解が得られます。.以下は、もし解決策の解から導き出されるニュートン法による。ここでの難しさは、の値を適切に選択することである。数が大きすぎると、ニュートン法の収束が遅くなり、解の経路から別の経路に飛び移ってしまう可能性があります。逆に数が小さすぎると、ステップ数が増えすぎて処理速度が低下します。
RURから解の数値を導き出すのは簡単そうに見える。単変数多項式の根を計算し、それを他の式に代入すればよいだけだからだ。しかし、これはそう簡単ではない。なぜなら、ある多項式の根における別の多項式の評価は非常に不安定だからだ。
したがって、一変数多項式の根は、一度定義すれば必ず得られるとは限らない高精度で計算する必要がある。この要件を満たすアルゴリズムは2つ存在する。
零次元システムを自動的に解くことができるソフトウェアパッケージは少なくとも4つあります(「自動」とは、入力と出力の間に人間の介入が不要であり、したがってユーザーが解法に関する知識を必要としないことを意味します)。零次元システムの解法に役立つ可能性のあるソフトウェアパッケージは他にもいくつかあります。それらのいくつかは、自動解法ツールの後にリストされています。
Mapleの関数RootFinding[Isolate]は、有理数上の任意の多項式系を入力として受け取り(係数の一部が浮動小数点数の場合は、有理数に変換されます)、実数解を(オプションで)有理数の区間または任意精度の浮動小数点近似値として出力します。システムが0次元でない場合は、エラーとして通知されます。
F. Rouillierによって設計されたこのソルバーは、内部的にはまずグレブナー基底を計算し、次に有理単変数表現を計算して、そこから解の必要な近似値を導き出します。数百個までの複素解を持つシステムに対して、日常的に機能します。
有理単変量表現は、Maple関数Groebner[RationalUnivariateRepresentation]を使用して計算できます。
有理単変数表現からすべての複素解を抽出するには、単変数多項式の複素根を任意の精度で計算するMPSolveを使用できます。入力変数の式に根を代入すると非常に不安定になる可能性があるため、解が安定するまで、精度を毎回2倍にしてMPSolveを複数回実行することをお勧めします。
2番目のソルバーはPHCpack [ 13 ] [ 16 ]で、J. Verscheldeの指導の下で作成されました。PHCpackはホモトピー連続法を実装しています。このソルバーは、変数と同じ数の方程式を持つ多項式系の孤立した複素解を計算します。
3番目のソルバーは、DJ Bates、JD Hauenstein、AJ Sommese、およびCW Wamplerによって作成されたBertini [ 17 ] [ 18 ]です。Bertiniは、適応精度を備えた数値ホモトピー連続法を使用します。PHCpackとBertiniはどちらも、0次元の解集合を計算するだけでなく、正の次元の解集合を扱うことができます。
4つ目のソルバーは、Marc Moreno-Maza氏とその共同研究者によって作成されたMapleライブラリRegularChainsです。このライブラリには、正則連鎖を用いて多項式系を解くための様々な関数が含まれています。