PolynomialReduce[poly,{poly1,poly2,…},{x1,x2,…}]
polyi によって poly を簡約したリストを返す.求まるリストは{{a1,a2,…},b}の形であり,b は最小で,poly は a1 poly1+a2 poly2+…+b に等しい.
PolynomialReduce
PolynomialReduce[poly,{poly1,poly2,…},{x1,x2,…}]
polyi によって poly を簡約したリストを返す.求まるリストは{{a1,a2,…},b}の形であり,b は最小で,poly は a1 poly1+a2 poly2+…+b に等しい.
詳細とオプション
- 多項式 b は,このいずれの項も任意の polyi の先頭の項で割ることができないという属性を持つ.
- polyi が xiについてのグレブナー(Gröbner)基底になっている場合,その属性によりPolynomialReduceは一意に定まる余りを求められる.
- 多項式を簡約した結果は,一般に,単項式に割り当てられた順序に依存する.この順序は xiの順序の影響を受ける.
- GroebnerBasisに関して与えられるオプション
-
MonomialOrder Lexicographic 単項式の並び順を決定する基準 CoefficientDomain Rationals 係数とみなされるオブジェクトの型 Modulus 0 数値係数の法 - PolynomialReductionは被約多項式 b だけを計算する.
例題
すべて開く すべて閉じる例 (1)
スコープ (1)
多項式を,グレブナー(Gröbner)基底ではない多項式のリストを法として簡約する:
f = 2x ^ 3 + y ^ 3 + 3y;
polys = {x ^ 2 + y ^ 2 - 1, x y - 2};
gb = GroebnerBasis[polys, {x, y}]fがpolysによって生成されたイデアルに属していたとしても,剰余は零ではない:
PolynomialReduce[f, polys, {x, y}]fが,polysに生成されたイデアルに属している場合,gbを法とした剰余は零でなければならない:
PolynomialReduce[f, gb, {x, y}]オプション (4)
CoefficientDomain (1)
デフォルトで,PolynomialReduceはパラメータの有理関数体上で作用する:
polys = {a x ^ 2 + 5 y - 1, 2 x + x y - y ^ 2};
poly = a ^ 2 x - x y + y ^ 2 - 3;gb1 = GroebnerBasis[polys, {x, y}, CoefficientDomain -> RationalFunctions]PolynomialReduce[poly, gb1, {x, y}]gb2 = GroebnerBasis[polys, {x, y}, CoefficientDomain -> Integers]PolynomialReduce[poly, gb2, {x, y}, CoefficientDomain -> Integers]gb3 = GroebnerBasis[polys, {x, y}, CoefficientDomain -> Rationals]PolynomialReduce[poly, gb3, {x, y}, CoefficientDomain -> Rationals]グレブナー基底を計算し,近似演算を使ってpolyを簡約する:
gb4 = GroebnerBasis[polys, {x, y}, CoefficientDomain -> InexactNumbers[20]]使われる精度はグレブナー基底の精度に基づいて自動的に選ばれる:
PolynomialReduce[poly, gb4, {x, y}, CoefficientDomain -> InexactNumbers]Modulus (1)
グレブナー基底を計算し,7を法とする整数上で多項式を簡約する:
polys = {3 x ^ 2 + y z - 5 x - 1, 2 x + 3 x y + y ^ 2, x - 3 y + x z - 2 z ^ 2};
poly = z ^ 9 - x ^ 2 y ^ 3 - 3 x y ^ 2 z + 11y z ^ 2 + x ^ 2 z ^ 2 - 5;
gb = GroebnerBasis[polys, {x, y, z}, Modulus -> 7];
PolynomialReduce[poly, gb, Modulus -> 7]MonomialOrder (1)
デフォルトで,PolynomialReduceはLexicographic単項式順序を使う:
polys = {3 x ^ 2 + y - 5 x - 1, 2 x + 3 x y + y ^ 2};
poly = x y - 3 x y ^ 2 + 11y + x ^ 3;gb1 = GroebnerBasis[polys, {x, y}]PolynomialReduce[poly, gb1, {x, y}]GroebnerBasisが許容する任意のMonomialOrderを使うことができる:
gb2 = GroebnerBasis[polys, {x, y}, MonomialOrder -> DegreeReverseLexicographic]PolynomialReduce[poly, gb2, {x, y}, MonomialOrder -> DegreeReverseLexicographic]Tolerance (1)
p = x ^ 14 + 3.00001 * x ^ 10 - 7.99998 * x ^ 7 - 25.00002 * x ^ 6 + 3.00001 * x ^ 13 + 9.00006 * x ^ 9 - 3.00001 * x ^ 5 - 2.00001 * x ^ 8 - 6.00005 * x ^ 4 + 16.00004 * x + 2.00001;d = -2.0001465223696937 + 3.0002401628321618 * x ^ 5 + 1. * x ^ 6;PolynomialReduce[p, {d}, x, CoefficientDomain -> InexactNumbers]PolynomialReduce[p, {d}, x, CoefficientDomain -> InexactNumbers, Tolerance -> 0.01]アプリケーション (3)
多項式が1組の多項式によって生成されたイデアルに属するかどうかテストする:
f = x ^ 6 - 14x ^ 3 - y ^ 4 + 49;
g = x ^ 5 - y ^ 5;
polys = {x ^ 2 - y ^ 3 - 5, y ^ 2 - x ^ 3 + 7};
gb = GroebnerBasis[polys, {x, y}]剰余がゼロなので,f は polys によって生成されたイデアルに属する:
PolynomialReduce[f, gb, {x, y}][[2]]剰余がゼロではないので,g は polys によって生成されたイデアルには属さない:
PolynomialReduce[g, gb, {x, y}][[2]]新旧の変数を関連付ける方程式を使って多項式の変数を置換する:
poly = (x + y) ^ 2;
eqns = {a == x ^ 2 + y ^ 2, b == x y};
gb = GroebnerBasis[eqns, {x, y}]{qs, r} = PolynomialReduce[(x + y) ^ 2, gb, {x, y}]poly == r /. ToRules[And@@eqns]//Expand{p1, p2} = {x ^ 2 + y ^ 2, x y};gb = GroebnerBasis[{f1 - p1, f2 - p2}, {x, y}]Last[PolynomialReduce[(x + y) ^ 4, gb, {x, y}]]% /. {f1 -> p1, f2 -> p2}//Factor特性と関係 (4)
f = x ^ 2 - 2x y ^ 2 + y ^ 3 + 7;
polys = {x ^ 2 - y ^ 2 - 3, x y - 5};
{qs, r} = PolynomialReduce[f, polys, {x, y}]f は係数 qs の polys と剰余 r の線形結合である:
f == qs.polys + r//ExpandPolynomialReductionを使って被約多項式 r だけを計算する:
PolynomialReduction[f, polys, {x, y}]簡約してゼロになる場合にのみ,その多項式はグレブナー基底が生成したイデアルに属する:
{p1, p2} = {x ^ 2 + y ^ 2 + z ^ 2 - 1, x - 2y ^ 3 - 3};{g1, g2} = GroebnerBasis[{p1, p2}, {x, y, z}]次は,p1がイデアル{g1,g2}に属することを示している:
PolynomialReduce[p1, {g1, g2}, {x, y, z}]単変数のPolynomialReduceはPolynomialQuotientRemainderに等しい:
PolynomialReduce[x ^ 5 - 3x + 7, {2x ^ 3 - 5x + 11}, x]PolynomialQuotientRemainder[x ^ 5 - 3x + 7, 2x ^ 3 - 5x + 11, x]p = x**x**y**x**y + 2 y**x**y**x + 3 x**y;
qq = {2 x**y**x + 3 x**x + 4 y + 5, 3 y**x**x + 4 y**x - 5 x + 6};{fs, r} = NonCommutativePolynomialReduce[p, qq, {x, y}]NonCommutativeExpand[p - Plus@@MapThread[Construct, {fs, qq}] - r]考えられる問題 (1)
PolynomialReduceは,同じ入力でも変数の順序が違うと異なる結果を与えることがある:
polys = {x ^ 2 - y ^ 3 - 5, y ^ 3 - x ^ 3 + 7};
newpoly = x ^ 5 + (x + y) ^ 2;
PolynomialReduce[newpoly, polys, {x, y}]PolynomialReduce[newpoly, polys, {y, x}]テクニカルノート
-
▪
- 多項式の代数演算
履歴
1996 で導入 (3.0)
テキスト
Wolfram Research (1996), PolynomialReduce, Wolfram言語関数, https://reference.wolfram.com/language/ref/PolynomialReduce.html.
CMS
Wolfram Language. 1996. "PolynomialReduce." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PolynomialReduce.html.
APA
Wolfram Language. (1996). PolynomialReduce. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PolynomialReduce.html
BibTeX
@misc{reference.wolfram_2026_polynomialreduce, author="Wolfram Research", title="{PolynomialReduce}", year="1996", howpublished="\url{https://reference.wolfram.com/language/ref/PolynomialReduce.html}", note=[Accessed: 01-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_polynomialreduce, organization={Wolfram Research}, title={PolynomialReduce}, year={1996}, url={https://reference.wolfram.com/language/ref/PolynomialReduce.html}, note=[Accessed: 01-November-2026]}