メニューに戻る

\( \displaystyle \vec{A} = B \vec{C} \)
\( \vec{A} \) : 配列変数 Ans
\( B \) : 二次元配列変数 Matrix()
\( \vec{C} \) : 配列変数 Vector()

Example17 (Main) の PAD
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() 【一次元】

関数 MatrixProVector の PAD
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