上一主题

numpy.triu

下一主题

numpy.mat

numpy.vander

numpy.vander(x, N=None, increasing=False)[source]

生成Vandermonde矩阵。

输出矩阵的列是输入向量的幂。幂的阶数由增加的布尔参数决定。具体地,当增加为False时,i输出列是按N - i - 1这样的在每行中具有几何级数的矩阵被命名为Alexandre-Theophile Vandermonde。

参数:

x:array_like

1-D输入数组。

N:int,可选

输出中的列数。如果未指定N,则返回正方形数组(N = len(x) / t1>)。

增加:bool,可选

列的权力的顺序。如果为True,则功率从左到右增加,如果为False(默认值),则它们相反。

版本1.9.0中的新功能。

返回:

out:ndarray

Vandermonde矩阵。如果增加是假,则第一列是x^(N-1),第二个x^(N-2)如果增加为真,则列为x ^ 0, x ^ 1, ..., t4 > x ^(N-1)

例子

>>> x = np.array([1, 2, 3, 5])
>>> N = 3
>>> np.vander(x, N)
array([[ 1,  1,  1],
       [ 4,  2,  1],
       [ 9,  3,  1],
       [25,  5,  1]])
>>> np.column_stack([x**(N-1-i) for i in range(N)])
array([[ 1,  1,  1],
       [ 4,  2,  1],
       [ 9,  3,  1],
       [25,  5,  1]])
>>> x = np.array([1, 2, 3, 5])
>>> np.vander(x)
array([[  1,   1,   1,   1],
       [  8,   4,   2,   1],
       [ 27,   9,   3,   1],
       [125,  25,   5,   1]])
>>> np.vander(x, increasing=True)
array([[  1,   1,   1,   1],
       [  1,   2,   4,   8],
       [  1,   3,   9,  27],
       [  1,   5,  25, 125]])

正方形Vandermonde矩阵的行列式是输入向量的值之间的差的乘积:

>>> np.linalg.det(np.vander(x))
48.000000000000043
>>> (5-3)*(5-2)*(5-1)*(3-2)*(3-1)*(2-1)
48