简体   繁体   中英

How to plot curve with given polynomial coefficients?

using Python I have an array with coefficients from a polynomial, let's say

polynomial = [1,2,3,4]

which means the equation: y = 4x³ + 3x² + 2x + 1 (so the array is in reversed order)

Now how do I plot this into a visual curve in the Jupyter Notebook? There was a similar question: Plotting polynomial with given coefficients but I didn't understand the answer (like what is a and b?).

And what do I need to import to make this happen?

First, you have to decide the limits for x in your plot. Let's say x goes from -2 to 2. Let's also ask for a hundred points on our curve (this can be any sufficiently large number for your interval so that you get a smooth-looking curve)

Let's create that array:

lower_limit = -2
upper_limit = 2
num_pts = 100
x = np.linspace(lower_limit, upper_limit, num_pts)

Now, let's evaluate y at each of these points. Numpy has a handy polyval() that'll do this for us. Remember that it wants the coefficients ordered by highest exponent to lowest, so you'll have to reverse the polynomial list

poly_coefs = polynomial[::-1] # [4, 3, 2, 1]
y = np.polyval(poly_coefs, x)

Finally, let's plot everything:

plt.plot(x, y, '-r')

在此处输入图像描述

You'll need the following imports:

import numpy as np
from matplotlib import pyplot as plt

If you don't want to import numpy , you can also write vanilla python methods to do the same thing:

def linspace(start, end, num_pts):
    step = (end - start) / (num_pts - 1)
    return [start + step * i for i in range(num_pts)]

def polyval(coefs, xvals):
    yvals = []
    for x in xvals:
        y = 0
        for power, c in enumerate(reversed(coefs)):
            y += c * (x ** power)
        yvals.append(y)
    return yvals

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM