【问题标题】:Transforming polynomial variable in Numpy在 Numpy 中转换多项式变量
【发布时间】:2015-03-07 08:48:59
【问题描述】:

我正在尝试学习如何使用 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中可以吗?

【问题讨论】:

  • 也许你想用 Sympy...

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


【解决方案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

【讨论】:

    【解决方案2】:

    生成的表达式is not a polynomialSympy 在这里可能是更好的选择。

    或者,您可以通过适当的数值因子来缩放多项式的系数,

    coeff *= np.power(factor, np.arange(len(coefs)-1, -1, -1))   # factor=2 here
    

    然后使用 numpy 中的多项式函数,使用变量 1/x 而不是 x

    【讨论】:

    • 谢谢 Saullo 和 rth。我会调查 sympy。
    • @taz 我使用 SymPy 添加了答案
    猜你喜欢
    • 2020-06-14
    • 2022-06-20
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多