discretize.utils.invert_blocks#
- discretize.utils.invert_blocks(A)[source]#
Invert a set of 2x2 or 3x3 matricies.
This is a shortcut function that will only invert 2x2 and 3x3 matrices. The function is broadcast over the last two dimensions of A.
- Parameters:
- A(…,
N
,N
)numpy.ndarray
the block of matrices to invert, N must be either 2 or 3.
- A(…,
- Returns:
- (…,
N
,N
)numpy.ndarray
the block of inverted matrices
- (…,
See also
numpy.linalg.inv
Similar to this function, but is not specialized to 2x2 or 3x3
inverse_2x2_block_diagonal
use when each element of the blocks is separated
inverse_3x3_block_diagonal
use when each element of the blocks is separated
Examples
>>> from discretize.utils import invert_blocks >>> import numpy as np >>> x = np.ones((1000, 3, 3)) >>> x[..., 1, 1] = 0 >>> x[..., 1, 2] = 0 >>> x[..., 2, 1] = 0 >>> As = np.einsum('...ij,...jk', x, x.transpose(0, 2, 1)) >>> Ainvs = invert_blocks(As) >>> As[0] @ Ainvs[0] array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])