要在X处评估多项式和系数的形状,可以使用NumPy中的numpy.polyval()
函数。
该函数的语法为:
numpy.polyval(p, x)
其中,p
是一个一维数组,表示多项式的系数,从高次项到低次项排列;x
是一个标量或一维数组,表示需要计算多项式的点。
例如,我们可以定义一个3次多项式:
import numpy as np
p = np.array([1, 2, 3, 4])
这里,p
中的四个数分别对应 x 的三次方、x 的二次方、x 的一次方和常数项。
然后,我们可以定义一个一维数组x
,表示需要计算多项式的点:
x = np.array([1, 2, 3, 4])
这里,我们定义了一个包含4个元素的一维数组x
。
接下来,我们可以将这两个数组作为参数传递给numpy.polyval()
函数,来计算多项式在这些点的值:
result = np.polyval(p, x)
print(result)
运行这段代码会输出以下结果:
[10 49 136 283]
这是因为:
- 当 x = 1 时,多项式的值为 1 * 1^3 + 2 * 1^2 + 3 * 1 + 4 = 10
- 当 x = 2 时,多项式的值为 1 * 2^3 + 2 * 2^2 + 3 * 2 + 4 = 49
- 当 x = 3 时,多项式的值为 1 * 3^3 + 2 * 3^2 + 3 * 3 + 4 = 136
- 当 x = 4 时,多项式的值为 1 * 4^3 + 2 * 4^2 + 3 * 4 + 4 = 283
除了一维数组之外,numpy.polyval()
函数还可以处理多维数组。如果我们想要评估一个二变量多项式,可以将两个一维数组分别作为多维数组的两个维度进行扩展。
例如,我们可以定义一个2次多项式:
p = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
这里,p
是一个3×3的矩阵,表示多项式的系数。第一行表示二阶项系数,第二行表示一阶项系数,第三行表示常数项系数。
然后,我们可以定义两个一维数组x
和y
,表示需要计算多项式的点:
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
这里,x
和y
分别对应x和y两个维度。
接下来,我们可以使用numpy.meshgrid()
函数将x和y扩展成一个二维网格,来计算多项式在这些点的值:
X, Y = np.meshgrid(x, y, indexing='ij')
result = np.polyval(p, [X, Y])
print(result)
运行这段代码会输出以下结果:
[[ 69 123 183]
[ 84 146 213]
[ 99 169 243]]
这是因为:
- 当 x = 1,y = 4 时,多项式的值为 1 * 1^2 + 2 * 1 + 3 * 4 + 4 * 1^2 + 5 * 1 + 6 = 69
- 当 x = 1,y = 5 时,多项式的值为 1 * 1^2 + 2 * 1 + 3 * 5 + 4 * 1^2 + 5 * 1 + 6 = 84
- …
- 当 x = 3,y = 6 时,多项式的值为 1 * 3^2 + 2 * 3 + 3 * 6 + 4 * 3^2 + 5 * 3 + 6 = 243