如何绘制具有给定多项式系数的曲线?

How to plot curve with given polynomial coefficients?

使用 Python 我有一个包含多项式系数的数组,比方说

polynomial = [1,2,3,4]

这意味着等式: y = 4x³ + 3x² + 2x + 1 (所以数组是倒序的)

现在如何在 Jupyter Notebook 中将其绘制成视觉曲线? 有一个类似的问题: 但我不明白答案(比如什么是a和b?)。

我需要导入什么才能做到这一点?

首先,您必须决定情节中 x 的限制。比方说 x 从 -2 到 2。我们还要求曲线上有一百个点(对于您的间隔,这可以是任何足够大的数字,以便您获得平滑的曲线)

让我们创建该数组:

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

现在,让我们在每个点上评估 y。 Numpy 有一个方便的 polyval() 可以为我们做这件事。请记住,它希望系数从最高指数到最低指数排序,因此您必须反转 polynomial 列表

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

最后,让我们绘制所有内容:

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

您需要导入以下内容:

import numpy as np
from matplotlib import pyplot as plt

如果你不想导入numpy,你也可以写普通的python方法来做同样的事情:

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