在Numpy中转换多项式变量

时间:2015-03-07 08:48:59

标签: python numpy sympy symbolic-math polynomial-math

我正在努力学习如何使用Numpy。考虑我有多项式的根。我用 coeff = np.polynomial.polynomial.polyfromroots(roots) 将多项式的系数作为数组。然后我用  print np.poly1d(coeff) 打印出多项式。让多项式为

  

x ^ 2 + 3x + 2

现在我如何转换变量

  

x现在是2 / x

这就是等式变为

  

(2 / x)^ 2 + 6 / x + 2

在scilab中,我可以使用horner函数执行此操作。 numpy有可能吗?

2 个答案:

答案 0 :(得分:1)

在SymPy中,这只是:

from sympy.abc import x

f = x**2 + 3*x + 2
g = f.subs({x:2/x})

导致:

print(g)
#2 + 6/x + 4/x**2

答案 1 :(得分:0)

结果表达式is not a polynomialSympy可能是更好的选择。

或者,您可以通过适当的数值因子

来缩放多项式的系数
coeff *= np.power(factor, np.arange(len(coefs)-1, -1, -1))   # factor=2 here

然后使用numpy中的多项式函数,变量1/x代替x