Related Articles

# Python program to Compute a Polynomial Equation

• Difficulty Level : Expert
• Last Updated : 12 Nov, 2020

The following article contains programs to compute a polynomial equation given that the coefficients of the polynomial are stored in a List.

Examples:

```# 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

```

The equation will be of type: We will be provided with the value of variable and we have to compute the value of the polynomial at at that point. To do so we have two approaches.

### Approach

• Naive Method: Using for loop to compute the value.
• Optimised Method: Using Horner’s Method for computing the value.

Naive method:

In this approach, the following methodology will be followed. This is the most naive approach to do such questions.

• First coefficient cn will be multiplied with xn
• Then coefficient cn-1 will be multiplied with xn-1
• The results produced in the above two steps will be added
• This will go on till all the coefficient are covered.

Example:

## 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)`

Output:

```5
```

Time Complexity: O(n2)

Optimized method:

Horner’s method can be used to evaluate polynomial in O(n) time. To understand the method, let us consider the example of 2x3 – 6x2 + 2x – 1. The polynomial can be evaluated as ((2x – 6)x + 2)x – 1. The idea is to initialize result as the coefficient of xn which is 2 in this case, repeatedly multiply the result with x and add the next coefficient to result. Finally, return the result.

## Python3

 `# + polyx(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))`

Output:

```Value of polynomial is: 5
```

Time Complexity: O(n)

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up