如何绘制具有给定多项式系数的曲线?
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
使用 Python 我有一个包含多项式系数的数组,比方说
polynomial = [1,2,3,4]
这意味着等式: y = 4x³ + 3x² + 2x + 1 (所以数组是倒序的)
现在如何在 Jupyter Notebook 中将其绘制成视觉曲线?
有一个类似的问题:
我需要导入什么才能做到这一点?
首先,您必须决定情节中 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