C++ 库:进行多项式算术的常用库是什么?

计算科学 线性代数 算法 C++ 图书馆 多项式
2021-12-05 08:45:22

我需要知道哪些库(在 C++ 中)专门在一个字段上支持多项式算术。所以我可以给它一个域上多项式系数的数组,它返回该域上多项式的根。它还应该支持大整数,因为系数和根是大整数。

出于安全原因,我的多项式是在素数的有限域上定义的。所以总是可以将其转换为一个领先系数为 1 的多项式。

我试过 NTL,但它显然不支持大整数类型的系数!

2个回答

一个可以做你想做的事情的包是Singular它是用 C++ 编写的,据我了解,有一个名为 libSingular 的库,它允许其他程序使用它的特性(其中包括求解有限域上的多项式方程和大整数算术)。

另一个可以满足您要求的选项是FLINT它是用 C 编写的,但我相信他们的功能具有 C++ 包装器。

据我所知,在任何域上的任意多项式的求根应该是一个试错过程。如果您不处理任何特殊类型的多项式,我看不出任何库将如何帮助您。找到多项式模 p 的根的快速算法在那里,例如这里您还可以尝试用 C 编写的 Pari 库,它具有该算法的实现。>4

如果您可以将多项式分解为较低次数的较小多项式,以便您可以轻松搜索根,您可以使用中国剩余定理组合结果并获得原始多项式的根。

如果你有你正在使用的多项式的特殊属性,你可以利用它。我会建议您更具体地了解您正在处理的问题,而不是一次又一次地在不同的网站上发布相同的问题。

我应该发表评论,但我还没有必要的声誉。一旦我清楚地了解您正在处理的内容,我将尝试更新答案。请随时在您的帖子和评论中分享您迄今为止所做的努力。谢谢你。

编辑:您还可以在此处查看查找多项式根的算法。始终可以选择使用现有包提供的数据结构并在您认为合适的情况下混合它们。