【发布时间】:2015-06-10 07:12:07
【问题描述】:
我想在整数环上快速分解多项式(原始多项式具有整数系数,所有因子都具有整数系数)。
例如我想将4*x^6 + 20*x^5 + 29*x^4 - 14*x^3 - 71*x^2 - 48*x分解为(2*x^4 + 7*x^3 + 4*x^2 - 13*x - 16)*(2*x + 3)*x。
我应该选择哪种算法来避免代码的复杂性和方法的低效(谈到算术运算的总量和内存消耗)?
我将使用 C 编程语言。
例如,也许有一些针对ring of integers modulo prime number 的多项式分解的好算法?
【问题讨论】:
-
为什么不用matlab或类似的?
-
@NickRosencrantz,通常我使用 Sage Math 来实现这样的目标。但现在我正在实现很大程度上依赖于多项式分解的算法,并且还有 GPU(基于 Cuda 或 Opencl)作为目标平台。所以应该是C。
-
也许运行牛顿法,求因子,多项式除法,重复。
-
您必须意识到 F(Z, x) 上的因式分解不能比 Z 上的因式分解更快。下一步是使用 Viete 的幻影,并对系数进行因式分解。无论如何,祝你好运。
-
@petRUShka:你能分享你的 C 代码吗?
标签: c performance algorithm polynomial-math polynomials