python - 评估多项式系数

标签 python python-3.x iteration

我正在尝试编写一个函数,它将多项式 p(x) 的系数列表 (a0, a1, a2, a3.....a n) 和值 x 作为输入。该函数将返回 p(x),这是在 x 处计算的多项式的值。

一个n次多项式,系数a0,a1,a2,a3......an是函数

p(x)= a0+a1*x+a2*x^2+a3*x^3+.....+an*x^n

所以我不确定如何解决这个问题。我在想我需要一个范围,但我怎样才能让它能够处理 x 的任何数字输入?我不希望你们给出答案,我只是需要一点启动。我需要 for 循环、while 循环还是递归?

def poly(lst, x)

我需要遍历列表中的项目,我是否为此使用索引,但如何让它遍历未知数量的项目?

我想我可以在这里使用递归:

    def poly(lst, x):
        n = len(lst)
        If n==4:
           return lst[o]+lst[1]*x+lst[2]*x**2+lst[3]*x**3
        elif n==3:
           return lst[o]+lst[1]*x+lst[2]*x**2
        elif n==2:
           return lst[o]+lst[1]*x
        elif n==1:
           return lst[o]
        else:
            return lst[o]+lst[1]*x+lst[2]*x**2+lst[3]*x**3+lst[n]*x**n

这适用于 n<=4,但我收到一个索引错误:list index out of range for n>4,但不明白为什么。

最佳答案

最有效的方法是使用霍纳规则向后计算多项式。在 Python 中很容易做到:

# Evaluate a polynomial in reverse order using Horner's Rule,
# for example: a3*x^3+a2*x^2+a1*x+a0 = ((a3*x+a2)x+a1)x+a0
def poly(lst, x):
    total = 0
    for a in reversed(lst):
        total = total*x+a
    return total

关于python - 评估多项式系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927229/

相关文章:

python - 无法提取所需的文本部分并丢弃某些元素中的其余部分

javascript - 有人能解释一下为什么我们在这段代码中使用花括号 "{}"吗?

c++ - 动态链接和 Python SWIG (C++) 在 C++ 中工作在 python 中失败

python - Plotly:如何更改散点图散点图的配色方案?

python - 列表理解中的 "If...or..."语句?

python - 在python中使用cv2.findContours()时发生ValueError。 ->没有足够的值来解压(预期3,得到2)

java - 在列表上完成迭代后只需要一个警告。每次迭代没有一个警告器

C:None-Recursive函数变为递归函数

python - 使用计数器对象计算文件中的单词数

python - 如何使用拆分或正则表达式从 python 中的字符串获取子字符串