代码之家  ›  专栏  ›  技术社区  ›  Blackclaws

判定多项式不等式组是否有解的快速算法

  •  0
  • Blackclaws  · 技术社区  · 10 年前

    我正在寻找一种快速算法,它可以确定n个变量中k个多项式不等式的给定系统是否有解(我不需要解)

    对于k>n

    我读过关于柱面代数分解的书,但到目前为止还没有找到比这更好的东西。

    编辑:

    它是关于实数上具有实数系数的多项式。

    4 回复  |  直到 10 年前
        1
  •  1
  •   Lutz Lehmann    10 年前

    任何其他解决方案都是未知的。你必须在某种CAD中列举组件,每个组件至少找到一个点,然后检查这些点是否满足不等式。

    你可以阅读巴苏、波拉克、罗伊的现代方法: "Algorithms in real algebraic geometry"

        2
  •  1
  •   Sergio Parreiras    9 年前

    Maple的包装常规链有一个命令IsEmpty?

    命令IsEmpty(sys,R)检查约束集sys的零集是否为空。sys中的约束可以是由R的多项式给出的任何多项式方程、不等式或不等式。这假设R具有特征零。

    我不确定使用的算法是什么,但请看:

    夏、碧灿和路阳。“分离半代数系统实解的算法”,《符号计算杂志》34,第5期(2002):461-477。

        3
  •  1
  •   Thomas    9 年前

    确定一个多项式不等式系统是否可行是一个非常困难的数学问题,许多关于代数几何的研究都与此有关。

    除了柱面代数分解之外,这些集合也有交替定理。最显著的结果是 Stengle's Positivstellensatz 大致上说,如果它是不可行的,那么你可以通过以积极的方式组合来自约束的积极性要求来证明它是不可能的,因此结果是-1。这种矛盾证明是不可行的。

    从算法上来说,找到这些证书可能非常糟糕,但你可以看看所谓的集合的矩松弛。这些是稍大的集合,其可行性可以通过半定规划来决定。这方面的算法很成熟。

    总的来说,存在一个越来越大的凸优化问题的层次,在这些问题中,您最终找到了不可行问题的解决方案。当然,在实践中,所有这些都可能被数值问题等破坏 yalmip

        4
  •  -1
  •   Lajos Arpad    10 年前

    假设参数是真的,你可以找到多项式的根(假设你将n包含在多项式中),并且解将是X大于0的区间集。

    您还可以使用导数的结果来确定函数的趋势。