いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)行列のトレース(対角成分の和)を求める

 Googleスプレッドシートで、行列のトレース(tr=正方行列の対角要素の和)を求める方法についてです。

  • 「=SUM(ARRAYFORMULA(行列*MUNIT(次数)))」という式で行列のトレースが求められます。

手順

 画像ではB2:D4の範囲に3行3列の行列が入力されています。
 これに対しF2セルに式を入力して行列のトレースを求めています。

 F2セル

=SUM(ARRAYFORMULA(B2:D4*MUNIT(3)))

 普通に考えるとまず対角成分の配列を求めるところからやりたくなりますが、これが案外困難です。
 そこで単位行列と*演算子で結び、対応する要素の積をそれぞれ求めることで対角成分以外を0に置き換えてからSUMで合計を求めています。
 なお次数(3)を即値で与えていますが行列から求める場合は「ROW(B2:D4)」とします。


 ちなみにこちらは上記の式からSUM関数を除いて実行した結果です。
 対角成分だけが残り、他の要素は0になっているのがわかります。