いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)指定した配列を要素とする対角行列を生成する

 Googleスプレッドシートで、対角成分を配列として指定することで任意の対角行列を生成する方法についてです。

  • 「=ARRAYFORMULA(配列*MUNIT(配列の長さ))」という式で、配列を成分(要素)とする対角行列が作れます。

手順

f:id:accs2014:20200702043729p:plain:right:w450

 B3:E3に並んでいる4つの値を対角成分とする対角行列を生成するものとします。

 B6セルに次のように入力します。 

=ARRAYFORMULA(B3:E3*MUNIT(4))

 配列と単位行列を単に「*」でつなぐのがポイントです。
 

f:id:accs2014:20200702043732p:plain:right:w400

 結果はこうなります。
 もちろん単に「=ARRAYFORMULA({1,4,3,2}*MUNIT(4))」という式でも同じ結果になります。

 なお「*」の前後は逆でも同じ結果になります。
 また、配列は縦に並んでいても同じ結果になります(これは行列が単位行列であるためで、一般の行列に対しては異なる結果となります)。

 

f:id:accs2014:20200702043736p:plain:right:w400

 より端的な例です。SEQUENCE関数を使うことで対角成分が1,2,3…となる対角行列が生成できます。
 式は次のようになります。

=ARRAYFORMULA(SEQUENCE(4)*MUNIT(4))