为什么Numpy在按次数排序多项式系数时不一致?

5

2
使用两种方法都有明显的优点:降序方式更加用户友好,符合大多数人书写多项式的方式。而增序方式意味着指数与单项式指数相匹配,在计算时非常方便。(就个人而言,我更喜欢增序惯例。) - Mark Dickinson
1
我认为更令人惊讶的是,他们有两个用于表示多项式的类...看起来他们应该选择一个并坚持使用它 :-) - mgilson
1
http://docs.scipy.org/doc/numpy/reference/routines.polynomials.html 也很有趣:“Polynomial建议用于新编码。” - Mark Dickinson
1
多项式包处理不同多项式基础上的截断级数,因此在这个意义上,增加的次数模仿了人们如何编写级数。此外,从数值的角度来看,希望系数随着次数的增加变得更小、更不重要,因此将它们放在最后是有意义的,可以忽略它们 ;) 正如上面所说,让索引对应于次数也很方便。 - Charles Harris
1个回答

8
根据SciPy关于NumPy的参考资料
在NumPy 1.4之前,numpy.poly1d是首选的类,并且为了保持向后兼容性仍然可用。但是,较新的Polynomial包比numpy.poly1d更完整,其方便类在numpy环境中表现更好。因此,建议在新编码时使用Polynomial。

1
http://docs.scipy.org/doc/numpy-1.10.1/reference/routines.polynomials.html#transition-notice 过渡通知确认了颠倒顺序。 - hpaulj
+1,谢谢,我对此感到非常困惑。我猜scipy.signals.bessel和相关函数仍然使用“旧”的顺序... - Rmano
1
这并没有解释为什么Polynomial包中系数的顺序是按照幂次递增,而在scipy.signal中则是按照幂次递减。例如,在处理DSP时,Scipy有像lfilter这样的函数,期望幂次递减的系数,z^0,z^-1等。当调用numpy的polyval函数时,必须以相反的顺序传递系数,因为numpy将它们用于项z^0,z^1等。此外,结果必须除以z^n,多项式的次数来进行补偿。因此,从这个角度来看,新的包对Scipy来说并不更友好,反而更差。 - mins
@mins: 使用 np.flip(coeffs_) 可以获得反转顺序的结果。 - JeeyCi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接