Python:我的多项式系数偏差10倍

时间:2016-11-17 01:40:01

标签: python python-3.x math polynomial-math

我正在用python学习科学计算。在练习中,我应该通过使用以下公式的根来生成多项式:

enter image description here

这是我的实施:

def poly(x,roots):            #Pass real and/or complex roots

    x = symbols(x)
    f = 1            
    for r in roots:
        f = f*(x - r)

    return expand(f)

当我测试时:

from sympy import expand
poly('x',[(-1/2), 5, (21/5), (-7/2) + (1/2)*sqrt(73), (-7/2) - (1/2)*sqrt(73)])

我明白了:

x**5 - 1.7*x**4 - 50.5*x**3 + 177.5*x**2 - 24.8999999999999*x - 63.0

但我应该得到:

10*x**5 - 17.0*x**4 - 505.0*x**3 + 1775.0*x**2 - 248.999999999999*x - 630.0

因此,一切都是10分之一。如果我设置f = 10,它会起作用,但我不明白为什么我应该这样做。我犯了一个明显的错误吗?谢谢!

2 个答案:

答案 0 :(得分:1)

虽然10x**5 + ...是正确的,但10 * p(x)r,这并不是真正的需要。你现在得到的答案也很好,你可以测试roots中的每个p(r)0c=np.array([2600.0]) In [3]: c=c.astype(np.float16) In [4]: c Out[4]: array([ 2600.], dtype=float16)

答案 1 :(得分:0)

x**5是正确的。

正如您在公式中所看到的那样,它没有系数。