在 3 个未知变量上找到 N 多项式方程组的数值解的快速算法是什么?

What is a fast algorithm to find a numeric solution of a system of N polynomial equations on 3 unknown variables?

我正在寻找一种快速算法来求解包含 3 个未知变量的 N 个多项式方程组。也就是说,给定 3 个函数 F0(x,y,z), F1(x,y,z)... FN(x,y,z),我想找到 x, y, z 使得 F0(x,y,z) = F1(x,y,z) = ... = FN(x,y,z) = 0

我试过在几个不同的地方找到解决方案,但我只能找到关于代数几何或密码学等主题的非常高级的论文。不过,我需要的是一种 simple/quick 算法,该算法 returns 是一种快速数值解。有这样的算法吗?

求解多个变量的多项式方程是一个难题。在一般情况下,在多项式时间内这样做 is Smale's 17th problem. 您不太可能会找到一种快速简单的算法来真正起作用。

您可以查看 Cox、Little 和 O'Shea 的 "Ideals, varieties, and algorithms",了解 Groebner 碱基的介绍。 Buchberger 的算法为给定的多项式理想找到 Groebner 基础。您可以使用 Groebner 基为多项式生成的理想找到给定多项式系统的所有解,尽管解的形式有点笨拙。

牛顿法是求解多变量非线性方程组的基本方法。天真地应用,牛顿的方法是启发式的;即使存在解决方案,它也不会总是找到系统的解决方案。然而,if牛顿法收敛,then它收敛得非常快。因此,Smale 提出的理论问题的挑战在于找到一个可证明的良好初始猜测来启动牛顿方法。

Beltran and Pardo made considerable progress on Smale's 17th problem, giving an algorithm that works on the average for systems with bounded degree using real-number arithmetic. This has since been turned into a finite-precision algorithm by Briquel, Cucker, Pena, and Roshchina。尽管它们很吸引人,但我不知道这些想法的任何实现或任何实现尝试---我们离拥有 可用代码 仍然非常非常远求解多项式方程组。

在您最后的评论中,您将最初的问题简化为一个更简单的问题,即直线 x(t)=a+b*t 和曲面 G(x)=0 的交集。通过简单地将直线插入曲面方程,您可以获得单变量问题 F(t)=G(a+b*t)=0。在那里,您可以使用单变量牛顿法或无导数法作为伊利诺斯法(带有扭曲的正则法)或布伦茨法。仍然存在识别符号变化间隔的全球性问题。在那里你要么从表面的形式中得到一些想法,要么你必须将函数制成表格。同伦延拓也可以发挥作用,因为附近的线通常会有附近的根。