マトリクス演算
VBA 言語には変数として配列型が用意されているので、以下に示すようなベクトル
やマトリクスの演算が簡単に行える。数学で表記するベクトルやマトリクスの要素に付随す
る添字は配列名のカッコ内の引数で代表される。図4.1はそれらの対応関係を示す。
図4.1
(1) ベクトルの加減算
以上のようなベクトルの加減算は、それぞれのベクトルの要素を加減算すればよいので、
で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click() Dim a(10), b(10), c(10), d(10) With Worksheets("sheet1") n = .Cells(5, 2) End With For i = 1 To n With Worksheets("sheet1") a(i) = .Cells(5 + i, 3) b(i) = .Cells(5 + i, 6) End With Next i For i = 1 To n c(i) = a(i) + b(i) Next i For i = 1 To n With Worksheets("sheet1") .Cells(17 + i, 9) = c(i) End With Next i End Sub
Private Sub CommandButton2_Click() Dim a(10), b(10), c(10), d(10) With Worksheets("sheet1") n = .Cells(5, 2) End With For i = 1 To n With Worksheets("sheet1") a(i) = .Cells(5 + i, 3) b(i) = .Cells(5 + i, 6) End With Next i For i = 1 To n d(i) = a(i) - b(i) Next i For i = 1 To n With Worksheets("sheet1") .Cells(30 + i, 9) = d(i) End With Next i End Sub
(2) ベクトルの積
ここではベクトルの内積を考えると、結果はスカラーである。計算式は
で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click() With Worksheets("sheet1") n = .Cells(4, 2) End With Sum = 0 For i = 1 To n With Worksheets("sheet1") A = .Cells(5 + i, 3) B = .Cells(5 + i, 6) Sum = Sum + A * B .Cells(24, 3) = Sum End With Next i End Sub
(3) マトリクスの加減算
以上のようなマトリクスの加減算は、それぞれのマトリクスの要素同士を加減算すれば
よいので、 で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click() Range("C23:L32").Select Selection.ClearContents ActiveWindow.LargeScroll ToRight:=-1 Range("B4").Select With Worksheets("sheet1") n = .Cells(4, 2) End With For i = 1 To n For j = 1 To n With Worksheets("sheet1") A = .Cells(5 + i, 2 + j) B = .Cells(5 + i, 14 + j) C = A + B .Cells(22 + i, 2 + j) = C End With Next j Next i End Sub
Private Sub CommandButton2_Click() Range("O23:X32").Select Selection.ClearContents ActiveWindow.LargeScroll ToRight:=-1 Range("B4").Select With Worksheets("sheet1") n = .Cells(4, 2) End With For i = 1 To n For j = 1 To n With Worksheets("sheet1") A = .Cells(5 + i, 2 + j) B = .Cells(5 + i, 14 + j) C = A - B .Cells(22 + i, 14 + j) = C End With Next j Next i End Sub
(4) マトリクスの積
マトリクスの積は、それぞれのマトリクスの行ベクトルと列ベクトルの内積を要素と
して求められるので、で表現でき、次のプログラムで演算ができる。
コード
Private Sub CommandButton1_Click() Range("C23:L32").Select Selection.ClearContents ActiveWindow.LargeScroll ToRight:=-1 Range("B4").Select With Worksheets("sheet1") n = .Cells(4, 2) End With For i = 1 To n For j = 1 To n Sum = 0 For k = 1 To n With Worksheets("sheet1") A = .Cells(5 + i, 2 + k) B = .Cells(5 + k, 14 + j) Sum = Sum + A * B .Cells(22 + i, 2 + j) = Sum End With Next k Next j Next i End Sub