matrix-inversion

Matrix inversion techniques.

#include <mathtoolbox/matrix-inversion.hpp>

Block Matrix Inversion

About

Inverse of a block (partitioned) matrix

where and are square matrices, can be calculated as

This technique is useful particularly when is relatively large (compared to ) and is known.

API

This module provides the following function:

Eigen::MatrixXd GetInverseUsingUpperLeftBlockInverse(const Eigen::MatrixXd& matrix,
                                                     const Eigen::MatrixXd& upper_left_block_inverse);

where upper_left_block_inverse corresponds to .

Performance (Casual Comparison)

When was a random matrix, and the size of was 3,000 and that of was 2,999, a naive approach (i.e., the LU decomposition from Eigen) took 5847 milliseconds to obtain while the block inversion approach took only 121 milliseconds.

Useful Resources