问题:
- 给定 x, 计算多项式
直接表达
import numpy as np
def p_n(x,a_n:list):
ans = 0
for i in range(len(a_n)):
ans += np.power(x,i)*a_n[i]
return ans
p_n(2,[i for i in range(20)])
18874370
- 其中 需要进行k次乘法,所以很复杂。
秦九韶算法 (Horner 算法)
def Horner(x,a_n:list):
n = len(a_n)-1
def b_n(x,i):
if i == n: return a_n[i] # b_n = a_n
return a_n[i]+ b_n(x,i+1)*x # b_{n-1} = a_{n-1} + b_n*x
return b_n(x,0)
Horner(2,[i for i in range(20)])
18874370
- 只需n 次乘法和n 次加法即可得到一个多项式的值。