有没有一种好方法可以降低朱莉娅多项式的系数

Is there a good way to drop coefficients of a Julia polynomial

提问人:Josh 提问时间:8/10/2023 最后编辑:Josh 更新时间:8/11/2023 访问量:65

问:

我正在用有理数的朱莉娅多项式进行计算。在运算后,我可能有一个高阶多项式,我想通过抛出高阶项来截断为较小阶的多项式。我在下面想出了一个解决方案。但是代码将运行数小时,我需要使事情尽可能优化。我基本上重新创建了一个新的 Poly。有没有更好的方法?

using Polynomials
R = Polynomial{Rational{BigInt}, :x}([1,2,2,2])
L = coeffs(R)
R = Polynomial{Rational{BigInt}, :x}(L[1:2])
Julia 多项式 系数下降

评论

0赞 Dan Getz 8/10/2023
对你有用吗?resize!(coeffs(R), N)
1赞 DNF 8/10/2023
你的问题有点不完整。Julia 没有内置多项式,所以你可能正在使用一些包。请包括有关哪个包的信息,并包括一个最小的工作示例,说明您是如何创建的。R

答:

0赞 Dan Getz 8/11/2023 #1

假设您使用的是 Polynomials.jl 包,我们有:

julia> using Polynomials

julia> R = Polynomial(Rational{BigInt}[1,2,3,4,5], :x)
Polynomial(1//1 + 2//1*x + 3//1*x^2 + 4//1*x^3 + 5//1*x^4)

julia> degree(R)
4

julia> resize!(coeffs(R), 3);

julia> R
Polynomial(1//1 + 2//1*x + 3//1*x^2)

julia> degree(R)
2

这可能略微使用内部结构,并且专门在包装中降低程度的功能可能会更好。我没有搜索足够的内容来查看是否有,但是如果有的话,那就是做这个简单的技巧是合理的。resize!

评论

0赞 Josh 8/11/2023
有趣的是,我会认为调整大小!将修改数组 coeffs(R),而不是实际修改 R。我想我不完全了解朱莉娅是如何工作的。
1赞 Josh 8/11/2023
我假设 coeffs(R) 是用于表示多项式的实际内部数组。我在哪里可以找到这种东西。另外,有谁知道快速傅里叶变换是否用于实现多项式乘法?
1赞 DNF 8/11/2023
我看不出这是以什么方式使用内部结构的。这似乎应该有效。
0赞 Dan Getz 8/11/2023
因为返回内部系数数组是最高性能的选项,而在 Julia 中,性能至关重要。这也允许您在自己的算法中实现高性能,这将使它感觉像是 Polynomials 包的原生,这是另一个 Julia 成语:使扩展与原生一样好。coeffs(R)