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
帕斯卡矩阵的逆矩阵。
参见
注释
Added in version 0.16.0.
参考文献
[1][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.]])
kind 和 exact 使用的一个例子:
>>> 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.]])