SimPEG.utils.inverse_2x2_block_diagonal#
- SimPEG.utils.inverse_2x2_block_diagonal(a11, a12, a21, a22, return_matrix=True, **kwargs)[source]#
- Invert a set of 2x2 matricies from vectors containing their elements. - Parameters
- a11, a12, a21, a22(n_blocks)numpy.ndarray
- All arguments a11, a12, a21, a22 are vectors which contain the corresponding element for all 2x2 matricies 
- return_matrixbool, optional
- True: Returns the sparse block 2x2 matrix M. 
- False: Returns the vectors containing the elements of each matrix’ inverse. 
 
 
- a11, a12, a21, a22(
- Returns
- (2 * n_blocks, 2 *n_blocks)scipy.sparse.coo_matrixorlistof(n_blocks)numpy.ndarray
- If return_matrix = False, the function will return vectors b11, b12, b21, b22. If return_matrix = True, the function will return the block matrix M 
 
- (2 * 
 - Notes - The elements of a 2x2 matrix A are given by: \[ \begin{align}\begin{aligned}A = \begin{bmatrix} a_{11} & a_{12} \\a_{21} & a_{22} \end{bmatrix}\end{aligned}\end{align} \]- For a set of 2x2 matricies, the elements may be stored in a set of 4 distinct vectors \(\mathbf{a_{11}}\), \(\mathbf{a_{12}}\), \(\mathbf{a_{21}}\) and \(\mathbf{a_{22}}\). For each matrix, inverse_2x2_block_diagonal ouputs the vectors containing the elements of each matrix’ inverse; i.e. \(\mathbf{b_{11}}\), \(\mathbf{b_{12}}\), \(\mathbf{b_{21}}\) and \(\mathbf{b_{22}}\) where: \[ \begin{align}\begin{aligned}A^{-1} = B = \begin{bmatrix} b_{11} & b_{12} \\b_{21} & b_{22} \end{bmatrix}\end{aligned}\end{align} \]- For special applications, we may want to output the elements of the inverses of the matricies as a 2x2 block matrix of the form: \[ \begin{align}\begin{aligned}M = \begin{bmatrix} D_{11} & D_{12} \\D_{21} & D_{22} \end{bmatrix}\end{aligned}\end{align} \]- where \(D_{ij}\) are diagonal matrices whose non-zero elements are defined by vector \(\mathbf{b_{ij}}\). Where n is the number of matricies, the block matrix is sparse with dimensions (2n, 2n). - Examples