invpascal — SciPy v1.15.2 Manual (original) (raw)

scipy.linalg.

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

Returns the inverse of the n x n Pascal matrix.

The Pascal matrix is a matrix containing the binomial coefficients as its elements.

Parameters:

nint

The size of the matrix to create; that is, the result is an n x n matrix.

kindstr, optional

Must be one of ‘symmetric’, ‘lower’, or ‘upper’. Default is ‘symmetric’.

exactbool, optional

If exact is True, the result is either an array of typenumpy.int64 (if n <= 35) or an object array of Python integers. If exact is False, the coefficients in the matrix are computed usingscipy.special.comb with exact=False. The result will be a floating point array, and for large n, the values in the array will not be the exact coefficients.

Returns:

invp(n, n) ndarray

The inverse of the Pascal matrix.

Notes

Added in version 0.16.0.

References

[2]

Cohen, A. M., “The inverse of a Pascal matrix”, Mathematical Gazette, 59(408), pp. 111-112, 1975.

Examples

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.]])

An example of the use of kind and 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.]])