如何在X处评估多项式和系数的形状 NumPy数组为每个维度进行扩展

  • Post category:Python

要在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的矩阵,表示多项式的系数。第一行表示二阶项系数,第二行表示一阶项系数,第三行表示常数项系数。

然后,我们可以定义两个一维数组xy,表示需要计算多项式的点:

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])

这里,xy分别对应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