求解 C 中的多项式(4,二阶)系统

Solve system of polynomials (4, second order) in C

本文关键字:二阶 系统 多项式 求解      更新时间:2023-10-16

我正在尝试使用 C++ 求解一个由 4 个二阶多项式方程组成的系统。解决系统的最快方法是什么,如果可能的话,你能链接或编写一些伪代码来解释它吗?我知道涉及 Groebners 基础或 QR 分解的解决方案,但我找不到关于它们如何工作以及如何实现它们的明确描述。也许关于多项式的有用信息:

    解决方案
  • 可能存在,也可能不存在,但我只对特定范围内的解决方案感兴趣(例如 [0,1] 中的 x,y,z,t)
  • 多项式的形式
  • 为:a + bx + cy + d*x*y = e + fz + gt + h*z*t(求解 x,y,z,t)。所有系数都是唯一的。
  • 多项式方程来自双线性插值。
  • 我尝试过找到一个精确的分析解决方案,但正如其他人所发布的那样,在 Mathematica 和其他方面求解大型多项式系统非常耗时

我只会使用用C++编写的通用求解器IPOPT。你可以用 [0, 1] 绑定约束来输入它,它实际上有助于 IPOPT 并使求解过程更快。

系统的稀疏性模式会改变吗?如果没有,那么您可以保存初始化步骤。不过我不是100%确定。无论哪种方式,与Mathematica中的分析解决方案相比,IPOPT都非常快。

你可以看看《数值配方》一书(c版第9章),其中描述了非线性方程组的解。有一个在线版本可以从他们的网站上查看 http://www.nr.com/.

由于他们的许可非常严格,也许您可以查看该方法,然后使用 gsl 等库对其进行调整。我没有尝试,但这个页面 http://na-inet.jp/na/gslsample/nonlinear_system.html 给出了一个如何使用 gsl 执行此操作的示例。