问题描述
给定一串实数 a n , a n − 1 , . . . , a 1 , a 0 a_n,a_{n-1},...,a_1, a_0 an,an−1,...,a1,a0 以及一个实数 x x x,计算多项式 P n ( x ) = a n x n + a n − 1 x n − 1 + . . . + a 1 x + a 0 P_n(x)=a_nx^{n}+a_{n-1}x^{n-1}+...+a_1x+a_0 Pn(x)=anxn+an−1xn−1+...+a1x+a0的值。
归纳假设
令
P
k
′
(
x
)
P'_{k}(x)
Pk′(x) 为由数组
[
a
n
,
a
n
−
1
,
.
.
.
,
a
1
,
a
0
]
[a_n,a_{n-1},...,a_1, a_0]
[an,an−1,...,a1,a0] 前
k
k
k 项表示的多项式。
假设已知如何计算
P
n
−
1
′
(
x
)
=
a
n
x
n
−
1
+
a
n
−
1
x
n
−
2
+
.
.
.
+
a
1
P'_{n-1}(x)=a_nx^{n-1}+a_{n-1}x^{n-2}+...+a_1
Pn−1′(x)=anxn−1+an−1xn−2+...+a1
归纳证明
- P 1 ′ ( x ) = a n P'_{1}(x) = a_n P1′(x)=an
- 根据归纳假设, P n ′ ( x ) = x P n − 1 ′ ( x ) + a 0 P'_{n}(x) =xP'_{n-1}(x) + a_0 Pn′(x)=xPn−1′(x)+a0
由1,2得: P n ′ ( x ) P'_{n}(x) Pn′(x) 可计算,而 P n ′ ( x ) P'_{n}(x) Pn′(x) 也等于 P n ( x ) P_{n}(x) Pn(x)。证毕。
算法实现
def Polynomial_Evaluation(a, x):
""" 输出P (多项式在x上的值)
Args:
a (list): 多项式的系数, a = [a0, a1, ... , an]
x (float): 实数
"""
P = a[-1]
for i in range(len(a), 0, -1):
P = x * P + a[i-1]
return P