Python:我的多项式系数相差 10 倍
Python: my polynomial coefficients are off by a factor of 10
我正在 python 学习科学计算。在练习中,我应该通过使用以下公式的根来生成多项式:
这是我的实现:
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
,它会起作用,但我不明白为什么我应该这样做。我犯了一个明显的错误吗?谢谢!
x**5
正确。
正如您在公式中看到的,它没有系数。
虽然 10x**5 + ...
是正确的,但 10 * p(x)
并不是真正需要的。您现在得到的答案也很好,您可以测试 roots
中的每个 r
,p(r)
是 0
。
我正在 python 学习科学计算。在练习中,我应该通过使用以下公式的根来生成多项式:
这是我的实现:
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
,它会起作用,但我不明白为什么我应该这样做。我犯了一个明显的错误吗?谢谢!
x**5
正确。
正如您在公式中看到的,它没有系数。
虽然 10x**5 + ...
是正确的,但 10 * p(x)
并不是真正需要的。您现在得到的答案也很好,您可以测试 roots
中的每个 r
,p(r)
是 0
。