scipy.linalg.
invpascal#
- scipy.linalg.invpascal(n, kind='symmetric', exact=True)[source]#
返回 n x n 帕斯卡矩阵的逆矩阵。
帕斯卡矩阵是一个包含二项式系数作为其元素的矩阵。
- 参数:
- nint
要创建的矩阵的大小;也就是说,结果是一个 n x n 矩阵。
- kindstr, 可选
必须是 ‘symmetric’、‘lower’ 或 ‘upper’ 之一。默认值为 ‘symmetric’。
- exactbool, 可选
如果 exact 为 True,则结果将是类型为
numpy.int64
的数组(如果 n <= 35)或 Python 整数的对象数组。如果 exact 为 False,则矩阵中的系数使用scipy.special.comb
计算,其中 exact=False。结果将是一个浮点数组,对于较大的 n,数组中的值将不是精确的系数。
- 返回值:
- invp(n, n) ndarray
帕斯卡矩阵的逆矩阵。
另请参见
注释
在版本 0.16.0 中添加。
参考文献
[1]“Pascal 矩阵”,https://en.wikipedia.org/wiki/Pascal_matrix
[2]Cohen, A. M., “The inverse of a Pascal matrix”, Mathematical Gazette, 59(408), pp. 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.]])