\( \displaystyle \vec{A} = B \vec{C} \)
\( \vec{A} \) : 配列変数 Ans
\( B \) : 二次元配列変数 Matrix()
\( \vec{C} \) : 配列変数 Vector()
Start |
|||||
Long型変数 n の宣言と セル B2 で初期化 |
Dim n As Long: n = Cells(2,2) | ||||
Double型配列変数 Matrix の動的宣言、 二次元 第一要素番号1 から n 第二要素番号1 から n |
Dim Matrix() As Double: ReDim Matrix(1 To n, 1 To n) | ||||
Double型配列変数 Vector の動的宣言、 要素番号1 から n |
Dim Vector() As Double: ReDim Vector(1 To n) | ||||
繰返し変数 iとj の宣言 Long型 |
Dim i As Long: Dim j As Long | ||||
i = 1, n, 1 |
j = 1, n, 1 |
Matrix(j, i) に Cells(2 + j, i + 1) を代入. |
For i = 1 To n Step 1 For j = 1 To n Step 1 Matrix(j, i) = Cells(2 + j, i + 1) Next j Next i |
||
i = 1, n, 1 |
Vector(i) に Cells(11, i + 1) を代入. |
For i = 1 To n Step 1 Vector(i) = Cells(11, i + 1) Next i |
|||
Double型配列変数 Ans の宣言 |
Dim Ans() As Double | ||||
Ans() に MatrixProVector (Matrix(), Vector()) の結果を代入. |
Ans() = MatrixProVector(Matrix(), Vector()) | ||||
i = 1, n, 1 |
Cells(11 + i, 2) に Ans(i) を代入. |
For i= 1 To n Step 1 Cells(11 + i, 2) = Ans(i) Next i |
|||
End |
関数の宣言
Function MatrixProVector(【仮引数の宣言】)【関数の戻り値の宣言】
End Function
【仮引数の宣言】ByRef A1() As Double, ByRef A2() As Double
【関数の戻り値の宣言】As Double()
\( \displaystyle \vec{A} = B \vec{C} \)
\( \vec{A} \) : 戻り値 Double型配列変数 S()
\( B \) : 仮引数 Double型配列変数 A1() 【二次元】
\( \vec{C} \) : 仮引数 Double型配列変数 A2() 【一次元】
Start |
Function MatrixProVector(【仮引数の宣言】)【関数の戻り値の宣言】 | ||||
Long型変数 LB の宣言と 仮引数の配列変数 A1 の 第一次元の最小要素番号で初期化 |
Dim LB As Long: LB = LBound(A1) | ||||
Long型変数 UB の宣言と 仮引数の配列変数 A1 の 第一次元の最大要素番号で初期化 |
Dim UB As Long: UB = UBound(A1) | ||||
Double型配列変数 S の動的宣言 要素番号を LB から UB に設定 |
Dim S() As Double: ReDim S(LB to UB) | ||||
繰返し変数 i, j の宣言 Long型 |
Dim i As Long: Dim j As Long | ||||
j = LB, UB, 1 |
S(j) を 0 で初期化. |
For j = LB To UB Step 1 S(j) = 0# |
|||
i = LB, UB, 1 |
S(j) に S(j) + A1(j, i) * A2(i) を代入. |
For i = LB To UB Step 1 S(j) = S(j) + A1(j, i) * A2(i) Next i Next j |
|||
関数 MatrixProVector の戻り値を S() に設定. |
MatrixProVector = S() | ||||
End |
End Function |