我正在用python學習科學計算。在演習中,我應該用它的根用這個公式來生成多項式:Python:我的多項式係數偏差10倍
這是我實現:
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
,它的工作原理,但我不明白爲什麼我應該這樣做。我是否犯了一個明顯的錯誤?謝謝!
該公式沒有顯示出來。你能解決這個問題嗎? –
symbols()是做什麼的? –
您正在構造具有特定根的多項式。如果你將它的係數乘以任何數字,根將保持不變。 – mingaleg