[基于归纳的算法设计][1] 秦九韶算法

问题描述

给定一串实数 a n , a n − 1 , . . . , a 1 , a 0 a_n,a_{n-1},...,a_1, a_0 an,an1,...,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+an1xn1+...+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,an1,...,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 Pn1(x)=anxn1+an1xn2+...+a1

归纳证明
  1. P 1 ′ ( x ) = a n P'_{1}(x) = a_n P1(x)=an
  2. 根据归纳假设, P n ′ ( x ) = x P n − 1 ′ ( x ) + a 0 P'_{n}(x) =xP'_{n-1}(x) + a_0 Pn(x)=xPn1(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值