计算多项式方程的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
该等式将是以下类型:
我们将获得变量的值,我们必须计算此时多项式的值。为此,我们有两种方法。
方法
- 天真的方法:使用 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)