CylindricalDecompositionFunction[data][x1,x2,…]
x1,x2,…における円柱代数式を表す.
CylindricalDecompositionFunction
CylindricalDecompositionFunction[data][x1,x2,…]
x1,x2,…における円柱代数式を表す.
詳細
- CylindricalDecompositionFunction[…][x1,x2,…]はCylindricalDecomposition[expr, {x1,x2,…},"Function"]によって生成される.
- CylindricalDecompositionFunctionオブジェクトは半代数的集合の明示的にコンパクトな表現を与える.これを使ってさらに効率的な計算を行うことができる.
- CylindricalDecompositionFunctionは,集合の論理結合の計算,追加的な条件による集合の制限,変数の除去,集合の最適化を含む,半代数的集合の反復的計算によく使われる.
- x1,…,xn における円柱代数式は
の形をしている.ただし,
である.各
の形は
または
である.
と
は
の解集合で定義される連続的な代数関数である.
における
の解集合
はセルと呼ばれる.任意の
についてのセル
と
の
上への写像は,互いに素であるか同一であるかのどちらかである. - CylindricalDecompositionFunctionは円柱代数式のカプセル化された表現を与える.この表現は,CylindricalDecompositionFunctionやCylindricalDecomposition,あるいはReduce,Resolve,FindInstance,Solve,Minimize等のソルバへの入力の中で使われる際にしばしばより効率的である.
- NormalはCylindricalDecompositionFunctionオブジェクトを等式と不等式の明示的な論理結合に変換する.
例題
すべて開く すべて閉じる例 (2)
CylindricalDecomposition[x ^ 2 + y ^ 2 + z ^ 2 < 1, {x, y, z}, "Function"]Normal[%]f = CylindricalDecomposition[Exists[z, x ^ 2 + y ^ 2 + z ^ 2 ≤ 3 && z ^ 3 - 2 x y z == 2], {x, y}, "Function"]CylindricalDecomposition[f, {x, y}, "BoundaryFunction"]CylindricalDecomposition[f && x ^ 3 + y ^ 3 == x y, {x, y}, "Function"]スコープ (23)
基本的な用法 (7)
CylindricalDecomposition[x ^ 2 + y ^ 2 ≤ x y z && z ^ 2 - x y == 3, {x, y, z}, "Function"]CylindricalDecomposition[Sqrt[2]x ^ 2 + Root[# ^ 5 - 2# - 11&, 1]y ^ 2 < 1, {x, y}, "Function"]CylindricalDecomposition[E ^ Pi x ^ 2 + Pi ^ E y ^ 2 ≤ 77 && Log[2]x + Log[3]y == 2, {x, y}, "Function"]CylindricalDecomposition[Exists[z, x ^ 2 + y ^ 2 ≤ x y z && z ^ 2 - x y == 3], {x, y}, "Function"]一定の真理値を持つCylindricalDecompositionFunctionを簡約するとTrueまたはFalseになる:
CylindricalDecomposition[ForAll[z, x ^ 2 + y ^ 2 ≤ x y z && z ^ 2 - x y == 3], {x, y}, "Function"]最初の引数が実数であるCylindricalDecompositionFunctionは自動的に簡約される:
CylindricalDecomposition[x ^ 4 + y ^ 4 ≤ z && z ^ 3 - x y == 1, {x, y, z}, "Function"]% /. x -> 1 / 2% /. y -> -2 / 3Normal[%]CylindricalDecompositionFunctionオブジェクトを以降の計算に使う:
f = CylindricalDecomposition[x ^ 2 + y ^ 2 ≤ 3 && x ^ 3 - y ^ 2 ≥ 1, {x, y}, "Function"]代数的マッピングを使ってCylindricalDecompositionFunctionを合成する:
g = CylindricalDecomposition[Head[f][x ^ 2, Sqrt[y]], {x, y}, "Function"]CylindricalDecompositionFunctionオブジェクトと多項式不等式の論理結合を使う:
CylindricalDecomposition[!g || f && x y ≤ 1, {x, y}, "Function"]ブール演算 (2)
定量化された系のCylindricalDecompositionFunction解
を計算する:
f = CylindricalDecomposition[Exists[z, x ^ 2 + 2 x y - 3y ^ 3 + z ^ 3 <= 1 && 1 + x + x y - x ^ 2 z ≥ z ^ 2], {x, y}, "Function"]g = CylindricalDecomposition[!f, {x, y}, "Function"]CylindricalDecomposition[f || g, {x, y}]異なる2つの定量化された系のCylindricalDecompositionFunction解を計算する:
f = CylindricalDecomposition[Exists[t, x y z ≤ t ^ 2 x + 1 && t ^ 3 ≤ x ^ 2 + y z], {x, y, z}, "Function"]g = CylindricalDecomposition[ForAll[t, x y z ≤ t ^ 2 && t ^ 3 ≤ t x ^ 2 + y z + t ^ 4], {x, y, z}, "Function"]CylindricalDecomposition[Xor[f, g], {x, y, z}, "Function"]等式と不等式を解く (2)
定量化された系のCylindricalDecompositionFunction解
を計算する:
f = CylindricalDecomposition[Exists[t, x ^ 2 - t y z ≤ 1 && t ^ 3 ≤ x ^ 2 + y z], {x, y, z}, "Function"]CylindricalDecomposition[f && x y z == x ^ 2 - y ^ 2, {x, y, z}, "Function"]CylindricalDecompositionFunctionオブジェクト,方程式,不等式の論理結合を解く:
f = CylindricalDecomposition[ForAll[t, x y z ≤ t ^ 2 && t ^ 3 ≤ t x ^ 2 + 2 x y - z t ^ 4], {x, y, z}, "Function"]g = CylindricalDecomposition[x ^ 2 ≤ y z + z ^ 3, {x, y, z}, "Function"]CylindricalDecomposition[f && x y z ≥ 1 || g && x ^ 2 + y ^ 2 == z ^ 2, {x, y, z}, "Function"]限定子の消去 (3)
定量化されたCylindricalDecompositionFunctionオブジェクトから限定子を消去する:
f = CylindricalDecomposition[x y t ≤ t ^ 3 + 1 && z ≤ t z ^ 2 + 2 x t - y z, {x, y, z, t}, "Function"]変数が式に現れるのと同じ順序で定量化されている場合に限定子を消去する:
CylindricalDecomposition[ForAll[z, Exists[t, f]], {x, y}, "Function"]CylindricalDecomposition[Exists[z, ForAll[t, f]], {x, y}, "Function"]CylindricalDecomposition[Exists[{z, t}, f], {x, y}, "Function"]CylindricalDecompositionFunctionオブジェクトを含む系から限定子を消去する:
f = CylindricalDecomposition[ForAll[t, x y z ≤ t ^ 2 && t ^ 3 ≤ x ^ 2 + 2 x y - z t ^ 4], {x, y, z}, "Function"]g = CylindricalDecomposition[x ^ 2 ≤ y z - z ^ 3, {x, y, z}, "Function"]CylindricalDecomposition[Exists[z, f && x y z == 1 || g && x ^ 2 + y ^ 2 > z ^ 2], {x, y}, "Function"]ineqs = x y z ≤ z ^ 4 - 1 && x > z ^ 2 - y z;f = CylindricalDecomposition[ineqs, {x, y, z}, "Function"]g = CylindricalDecomposition[ineqs, {x, z, y}, "Function"]定量化された変数が自由変数の後で式に現れる場合は,消去は速い:
(ez1 = CylindricalDecomposition[Exists[z, f], {x, y}, "Function"])//Timing(ey1 = CylindricalDecomposition[Exists[y, g], {x, z}, "Function"])//Timing異なる変数順で構築された式からの限定子の消去は,はるかに遅くなる:
(ez2 = CylindricalDecomposition[Exists[z, g], {x, y}, "Function"])//Timing(ey2 = CylindricalDecomposition[Exists[y, f], {x, z}, "Function"])//TimingCylindricalDecomposition[Equivalent[ez1, ez2], {x, y}]CylindricalDecomposition[Equivalent[ey1, ey2], {x, z}]位相操作 (5)
解の領域とその境界のCylindricalDecompositionFunction表現を求める:
CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "Function"]CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "BoundaryFunction"]解の領域とその閉包のCylindricalDecompositionFunction表現を求める:
CylindricalDecomposition[x^4 > x^2 + y^2, {x, y}, "Function"]CylindricalDecomposition[x^4 > x^2 + y^2, {x, y}, "ClosureFunction"]解の領域とその内部のCylindricalDecompositionFunction表現を求める:
CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "Function"]CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "InteriorFunction"]解の領域とその外部のCylindricalDecompositionFunction表現を求める:
CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "Function"]CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "ExteriorFunction"]解の領域とその連結成分のCylindricalDecompositionFunction表現を求める:
CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "Function"]CylindricalDecomposition[x^4 ≥ x^2 + y^2, {x, y}, "ComponentsFunction"]ソルバへの入力としてのCylindricalDecompositionFunction (4)
CylindricalDecompositionFunctionを使って最適化制約を指定する:
f = CylindricalDecomposition[Subscript[∀, z]Subscript[∃, w]3 z^2 w + (x + y) z^4 - 1 == (x^3 - x y + y^2 - 1) w^2, {x, y}, "Function"]MinValue[{(x + 1) ^ 2 + (y + 7) ^ 2, f}, {x, y}]方程式,不等式,CylindricalDecompositionFunctionの制約を含む系を解く:
f = CylindricalDecomposition[Subscript[∃, z](x^2 + 2 x y - 5 y^3 + z^3 - x^2 z == 0 && y^2 - 3 x y - x^3 - z x^2 == 0), {x, y}, "Function"]Solve[x ^ 2 + y ^ 2 == 1 && f, {x, y}, Reals]FindInstanceを使ってCylindricalDecompositionFunctionを含む系についての解の例を求める:
f = CylindricalDecomposition[Subscript[∃, z](x^2 + z^3 == 1 - x y && 1 + x^2 y - y z^4 == 7), {x, y}, "Function"]FindInstance[f && x ^ 3 - x y + y ^ 2 == 1, {x, y}]CylindricalDecompositionFunctionの解集合の各連結成分に含まれる点を少なくとも1つずつ求める:
f = CylindricalDecomposition[Subscript[∃, z](x^2 + 2 x y - 3 y^3 + z^3 ≤ 1 && 1 + x y - x^2 z^4 ≥ 7), {x, y}, "Function"]SemialgebraicComponentInstances[f, {x, y}]アプリケーション (4)
p1 = CylindricalDecomposition[Exists[z, -2 x^2 + x^4 + y^2 + 2 x^2 y^2 - 2 y^4 + y^6 + 3 z^2 - 6 y^2 z^2 + 3 y^4 z^2 - 3 z^4 + 3 y^2 z^4 + z^6 == 0], {x, y}, "Function"]p2 = CylindricalDecomposition[Exists[z, x^2 - x^4 + y^2 - 2 x^2 y^2 - y^4 + 2 y^2 z - 2 z^2 + x^2 z^2 - y^2 z^2 + 2 z^3 - z^4 == 0], {x, y}, "Function"]CylindricalDecomposition[p1 && p2, {x, y}, "Function"]proj = CylindricalDecomposition[Subscript[∃, z](x^6 - 4 x^2 y^2 + 3 x^4 y^2 + 3 x^2 y^4 + y^6 - 4 x^2 y^2 z^2 ≤ 0 && x^2 + y^2 + z^2 ≤ 1), {x, y}, "Function"]{max, pt} = Maximize[{x^5 + y^5, proj}, {x, y}]RegionPlot[{proj, x^5 + y^5 ≤ max}, {x, -1, 1}, {y, -1, 1}, PlotPoints -> 30, Epilog -> {PointSize[Large], Red, Point[{x, y} /. N[pt]]}]//QuietCylindricalDecomposition[y^2 == x (-1 + x^4), {x, y}, "Function"]CylindricalDecomposition[y^2 == x (-1 + x^4), {x, y}, "ComponentsFunction"]CylindricalDecomposition[(x^2 + y^2) (x (2 + x) + y^2) < 8 x y^2, {x, y}, "Function"]CylindricalDecomposition[(x^2 + y^2) (x (2 + x) + y^2) < 8 x y^2, {x, y}, "ComponentsFunction"]特性と関係 (5)
CylindricalDecomposition[x ^ 2 + y ^ 2 + z ^ 2 ≤ 1, {x, y, z}, "Function"]デフォルトで,CylindricalDecompositionは明示的な等式と不等式として書かれた式を与える:
CylindricalDecomposition[x ^ 2 + y ^ 2 + z ^ 2 ≤ 1, {x, y, z}]CylindricalDecompositionFunctionのNormalは等しく,しばしば直接計算された式と同一である:
Normal[%%] === %カプセル化形式の円柱代数式は続く計算でより効率的なことが多い:
qf = Subscript[∃, u]x^2 + y^2 + z^2 + x y z u + u^4 == 1;
qg = Subscript[∃, v]x + 3 y z v^2 + v^4 < 3;{f1, g1} = {CylindricalDecomposition[qf, {x, y, z}, "Function"], CylindricalDecomposition[qg, {x, y, z}, "Function"]};{f2, g2} = {CylindricalDecomposition[qf, {x, y, z}], CylindricalDecomposition[qg, {x, y, z}]};CylindricalDecompositionFunctionオブジェクトに対する操作は速い:
Timing[CylindricalDecomposition[f1 && g1, {x, y, z}, "Function"]]明示的な等式と不等式として書かれた円柱楕円式に対する操作は,はるかに遅くなることが多い:
TimeConstrained[CylindricalDecomposition[f2 && g2, {x, y, z}], 300]FindInstanceを使ってCylindricalDecompositionFunctionオブジェクトを満たす点を求める:
CylindricalDecomposition[x ^ 3 + y ^ 3 ≥ x y + 1, {x, y}, "Function"]FindInstance[%, {x, y}]SemialgebraicComponentInstancesは,半代数集合の各連結成分で少なくとも1つの点を与える:
SemialgebraicComponentInstances[x ^ 2 - y ^ 2 > 1, {x, y}]CylindricalDecompositionFunctionは複数のセルをまとめてよりコンパクトな表現にする:
CylindricalDecomposition[x ^ 2 - y ^ 2 > 1, {x, y}, "Function"]SemialgebraicComponentInstancesは,より少ない点で十分なことが分かった:
SemialgebraicComponentInstances[%, {x, y}]GenericCylindricalDecompositionは半代数集合の表現を低次元の部分まで計算する:
CylindricalDecomposition[x ^ 2 + y ^ 2 ≤ 1 || x == 1, {x, y}]GenericCylindricalDecomposition[x ^ 2 + y ^ 2 ≤ 1 || x == 1, {x, y}]Method{"CylindricalDecompositionFunctionOutput"True}を使ってCylindricalDecompositionFunctionの結果を得る:
GenericCylindricalDecomposition[x ^ 2 + y ^ 2 ≤ 1 || x == 1, {x, y}, Method -> {"CylindricalDecompositionFunctionOutput" -> True}]考えられる問題 (1)
CylindricalDecompositionFunctionは,非厳密な引数を与えられると,比較のために引数の非厳密な値を使うが,厳密な結果を生成する:
CylindricalDecomposition[6x ^ 2 + 16y ^ 2 < 5, {x, y}, "Function"]% /. x -> 0.5Normal[%]おもしろい例題 (1)
disk[{x0_, y0_}, r_] := (x - x0) ^ 2 + (y - y0) ^ 2 < r ^ 2f = CylindricalDecomposition[disk[{-7 / 4, 9 / 4}, 1 / 3] || disk[{9 / 4, 9 / 4}, 1 / 3] || (disk[{0, 0}, 5] && !disk[{2, 2}, 1] && !disk[{-2, 2}, 1] && (!disk[{0, -1}, Sqrt[5]] || disk[{0, 1}, 3])), {x, y}, "Function"]RegionPlot[f, {x, -5, 5}, {y, -5, 5}]テキスト
Wolfram Research (2020), CylindricalDecompositionFunction, Wolfram言語関数, https://reference.wolfram.com/language/ref/CylindricalDecompositionFunction.html.
CMS
Wolfram Language. 2020. "CylindricalDecompositionFunction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/CylindricalDecompositionFunction.html.
APA
Wolfram Language. (2020). CylindricalDecompositionFunction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CylindricalDecompositionFunction.html
BibTeX
@misc{reference.wolfram_2026_cylindricaldecompositionfunction, author="Wolfram Research", title="{CylindricalDecompositionFunction}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/CylindricalDecompositionFunction.html}", note=[Accessed: 07-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_cylindricaldecompositionfunction, organization={Wolfram Research}, title={CylindricalDecompositionFunction}, year={2020}, url={https://reference.wolfram.com/language/ref/CylindricalDecompositionFunction.html}, note=[Accessed: 07-September-2026]}