scipy.linalg.

invpascal#

scipy.linalg.invpascal(n, kind='symmetric', exact=True)[源代码][源代码]#

返回 n x n 帕斯卡矩阵的逆矩阵。

帕斯卡矩阵是一个包含二项式系数的矩阵,这些系数作为其元素。

参数:
n整数

要创建的矩阵的大小;即结果是一个 n x n 的矩阵。

种类str, 可选

必须是 ‘symmetric’、’lower’ 或 ‘upper’ 之一。默认是 ‘symmetric’。

精确bool, 可选

如果 exact 为 True,结果要么是一个类型为 numpy.int64 的数组(如果 n <= 35),要么是一个包含 Python 整数的对象数组。如果 exact 为 False,矩阵中的系数是通过使用 scipy.special.comb 计算的,且 exact=False。结果将是一个浮点数数组,并且对于大的 n,数组中的值将不是精确的系数。

返回:
invp(n, n) ndarray

帕斯卡矩阵的逆矩阵。

参见

pascal

注释

Added in version 0.16.0.

参考文献

[1]

“帕斯卡矩阵”, https://en.wikipedia.org/wiki/Pascal_matrix

[2]

Cohen, A. M., “帕斯卡矩阵的逆”, 数学公报, 59(408), 第111-112页, 1975年。

示例

>>> from scipy.linalg import invpascal, pascal
>>> invp = invpascal(5)
>>> invp
array([[  5, -10,  10,  -5,   1],
       [-10,  30, -35,  19,  -4],
       [ 10, -35,  46, -27,   6],
       [ -5,  19, -27,  17,  -4],
       [  1,  -4,   6,  -4,   1]])
>>> p = pascal(5)
>>> p.dot(invp)
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  0.,  1.]])

kindexact 使用的一个例子:

>>> invpascal(5, kind='lower', exact=False)
array([[ 1., -0.,  0., -0.,  0.],
       [-1.,  1., -0.,  0., -0.],
       [ 1., -2.,  1., -0.,  0.],
       [-1.,  3., -3.,  1., -0.],
       [ 1., -4.,  6., -4.,  1.]])