numpy.polynomial.polynomial.polyval#

polynomial.polynomial.polyval(x, c, tensor=True)[源代码]#

在点 x 处求多项式的值。

如果 c 的长度为 n + 1,则此函数返回的值为

\[p(x) = c_0 + c_1 * x + ... + c_n * x^n\]

仅当 x 是元组或列表时,才会将其转换为数组,否则将其视为标量。在任何一种情况下,x 或其元素都必须支持与自身以及与 c 的元素进行乘法和加法运算。

如果 c 是 1-D 数组,则 p(x) 的形状与 x 相同。如果 c 是多维的,则结果的形状取决于 tensor 的值。如果 tensor 为 True,则形状为 c.shape[1:] + x.shape。如果 tensor 为 False,则形状为 c.shape[1:]。请注意,标量具有形状 (,)。

系数中的尾随零将在求值中使用,因此出于效率考虑应避免使用它们。

参数:
xarray_like, 兼容对象

如果 x 是列表或元组,则将其转换为 ndarray,否则保持不变并视为标量。在任何一种情况下,x 或其元素都必须支持与自身以及与 c 的元素进行加法和乘法运算。

c类数组

系数数组按此顺序排列,使得度数为 n 的项的系数包含在 c[n] 中。如果 c 是多维的,则其余索引枚举多个多项式。在二维情况下,系数可以认为存储在 c 的列中。

tensorboolean, optional

如果为 True,则系数数组的形状将在右侧用 1 扩展,每个维度对应 x 的一个维度。标量对此操作的维度为 0。结果是 c 中的每个系数列都针对 x 的每个元素进行求值。如果为 False,则 x 会在求值过程中广播到 c 的列上。当 c 是多维的时,此关键字很有用。默认值为 True。

返回:
valuesndarray, 兼容对象

返回数组的形状如上所述。

备注

求值使用 Horner 方法。

使用通过 Polynomial.fit() 创建的多项式的系数时,请使用 p(x)polyval(x, p.convert().coef) 来正确处理域/窗口缩放,而不是 polyval(x, p.coef)

示例

>>> import numpy as np
>>> from numpy.polynomial.polynomial import polyval
>>> polyval(1, [1,2,3])
6.0
>>> a = np.arange(4).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> polyval(a, [1, 2, 3])
array([[ 1.,   6.],
       [17.,  34.]])
>>> coef = np.arange(4).reshape(2, 2)  # multidimensional coefficients
>>> coef
array([[0, 1],
       [2, 3]])
>>> polyval([1, 2], coef, tensor=True)
array([[2.,  4.],
       [4.,  7.]])
>>> polyval([1, 2], coef, tensor=False)
array([2.,  7.])