マトリクス演算

 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

	

 

サンプル