# Matrix Inversion

Inverse[m] | find the inverse of a square matrix |

Matrix inversion.

Here is a simple 2×2 matrix.

Out[1]= | |

This gives the inverse of

. In producing this formula,

*Mathematica* implicitly assumes that the determinant

is nonzero.

Out[2]= | |

Multiplying the inverse by the original matrix should give the identity matrix.

Out[3]= | |

You have to use

Together to clear the denominators, and get back a standard identity matrix.

Out[4]= | |

Here is a matrix of rational numbers.

Out[5]= | |

*Mathematica* finds the exact inverse of the matrix.

Out[6]= | |

Multiplying by the original matrix gives the identity matrix.

Out[7]= | |

If you try to invert a singular matrix,

*Mathematica* prints a warning message, and returns the input unchanged.

Out[8]= | |

If you give a matrix with exact symbolic or numerical entries, *Mathematica* gives the exact inverse. If, on the other hand, some of the entries in your matrix are approximate real numbers, then *Mathematica* finds an approximate numerical result.

Here is a matrix containing approximate real numbers.

Out[9]= | |

This finds the numerical inverse.

Out[10]= | |

Multiplying by the original matrix gives you an identity matrix with small round-off errors.

Out[11]= | |

You can get rid of small off-diagonal terms using

Chop.

Out[12]= | |

When you try to invert a matrix with exact numerical entries, *Mathematica* can always tell whether or not the matrix is singular. When you invert an approximate numerical matrix, *Mathematica* can usually not tell for certain whether or not the matrix is singular: all it can tell is, for example, that the determinant is small compared to the entries of the matrix. When *Mathematica* suspects that you are trying to invert a singular numerical matrix, it prints a warning.

*Mathematica* prints a warning if you invert a numerical matrix that it suspects is singular.

Out[13]= | |

This matrix is singular, but the warning is different, and the result is useless.

Out[14]= | |

If you work with high-precision approximate numbers, *Mathematica* will keep track of the precision of matrix inverses that you generate.

This generates a 6×6 numerical matrix with entries of 20-digit precision.

This takes the matrix, multiplies it by its inverse, and shows the first row of the result.

Out[16]= | |

This generates a 20-digit numerical approximation to a 6×6 Hilbert matrix. Hilbert matrices are notoriously hard to invert numerically.

The result is still correct, but the zeros now have lower accuracy.

Out[18]= | |

Inverse works only on square matrices. "Advanced Matrix Operations" discusses the function PseudoInverse, which can also be used with nonsquare matrices.