🐡

122. 逆行列と連立一次方程式

2023/03/22に公開

【問題概要】
与えられた正方行列の逆行列を求めるプログラムを作成せよ。また、逆行列を用いて与えられた連立一次方程式を解くプログラムも作成せよ。

【解説】
逆行列とは、正方行列 A に対して、A と逆行列 A^-1 の積が単位行列になるような行列のことを言います。つまり、A*A^-1 = I (Iは単位行列) が成り立ちます。

逆行列を求めるには、Gauss-Jordan法やLU分解などの手法があります。ここでは、Gauss-Jordan法を用いた逆行列の求め方について説明します。

Gauss-Jordan法は、連立一次方程式を解くための手法の一つであり、係数行列の拡大行列を単位行列に変換することができます。具体的には、以下の手順で逆行列を求めます。

行列 A と単位行列 I を横に並べた拡大行列を作成する。
拡大行列を上三角行列に変換するため、掃き出し法を行う。
上三角行列を対角線上から左下に向かって掃き出し、単位行列に変換する。
行列 A が上三角行列に変換されたとき、単位行列の部分が逆行列になる。
また、逆行列を用いて連立一次方程式を解くには、以下の手順を行います。

連立一次方程式 Ax = b の左辺の行列 A の逆行列 A^-1 を求める。
x = A^-1 * b を計算することで、方程式の解 x を求める。
【関連する問題】
Atcoderの「Matrix Inversion」問題が、本問題と関連があります。以下は、その問題の情報です。

「Matrix Inversion」
https://atcoder.jp/contests/abc150/tasks/abc150_f
レーティング難易度(★): 2200
ACした回答者に絞った場合のレーティング帯の範囲(数値): 1721 - 2797
レーティング難易度(%): 40.7%
レーティング(数値): 2133
AC率(%): 12.4%
ACしたスコアの高い回答者: https://atcoder.jp/users/maspy
解説ブログ: https://maspypy.com/atcoder-参加感想

Discussion