📜  计算多项式方程的Python程序

📅  最后修改于: 2022-05-13 01:55:34.099000             🧑  作者: Mango

计算多项式方程的Python程序

假设多项式的系数存储在列表中,以下文章包含计算多项式方程的程序。

例子:

# Evaluate value of 2x3 - 6x2 + 2x - 1 for x = 3
Input: poly[] = {2, -6, 2, -1}, x = 3
Output: 5

# Evaluate value of 2x3 + 3x + 1 for x = 2
Input: poly[] = {2, 0, 3, 1}, x = 2
Output: 23

# Evaluate value of 2x + 5 for x = 5
Input: poly[] = {2, 5}, x = 5
Output: 15

该等式将是以下类型:

c_{n}x^{n} + c_{n-1}x^{n-1} + c_{n-2}x^{n-2} + … + c_{1}x + c_{0}

我们将获得变量的值,我们必须计算此时多项式的值。为此,我们有两种方法。

方法

  • 天真的方法:使用 for 循环计算值。
  • 优化方法:使用霍纳方法计算值。

朴素的方法:

在这种方法中,将遵循以下方法。这是解决此类问题的最幼稚的方法。

  • 第一个系数c n将乘以x n
  • 然后系数c n-1将乘以x n-1
  • 将以上两步产生的结果相加
  • 这将一直持续到所有系数都被覆盖。

例子:

Python3
# 2x3 - 6x2 + 2x - 1 for x = 3
poly = [2, -6, 2, -1]
x = 3
n = len(poly)
  
# Declaring the result
result = 0
  
# Running a for loop to traverse through the list
for i in range(n):
  
    # Declaring the variable Sum
    Sum = poly[i]
  
    # Running a for loop to multiply x (n-i-1)
    # times to the current coefficient
    for j in range(n - i - 1):
        Sum = Sum * x
  
    # Adding the sum to the result
    result = result + Sum
  
# Printing the result
print(result)


Python3
# + poly[1]x(n-2) + .. + poly[n-1]
def horner(poly, n, x):
  
    # Initialize result
    result = poly[0]
  
    # Evaluate value of polynomial
    # using Horner's method
    for i in range(1, n):
  
        result = result*x + poly[i]
  
    return result
  
# Driver program to
# test above function.
  
  
# Let us evaluate value of
# 2x3 - 6x2 + 2x - 1 for x = 3
poly = [2, -6, 2, -1]
x = 3
n = len(poly)
  
print("Value of polynomial is:", horner(poly, n, x))


输出:

5

时间复杂度: O(n 2 )

优化方法:

Horner 的方法可用于在 O(n) 时间内评估多项式。为了理解这个方法,让我们考虑 2x 3 – 6x 2 + 2x – 1 的例子。 多项式可以被评估为 ((2x – 6)x + 2)x – 1. 想法是将结果初始化为系数x n在这种情况下为 2,重复将结果与 x 相乘并将下一个系数添加到结果中。最后返回结果。

蟒蛇3

# + poly[1]x(n-2) + .. + poly[n-1]
def horner(poly, n, x):
  
    # Initialize result
    result = poly[0]
  
    # Evaluate value of polynomial
    # using Horner's method
    for i in range(1, n):
  
        result = result*x + poly[i]
  
    return result
  
# Driver program to
# test above function.
  
  
# Let us evaluate value of
# 2x3 - 6x2 + 2x - 1 for x = 3
poly = [2, -6, 2, -1]
x = 3
n = len(poly)
  
print("Value of polynomial is:", horner(poly, n, x))

输出:

Value of polynomial is: 5

时间复杂度: O(n)