メニューに戻る

13:32 にページが自動更新されます。

Example21(1211) PAD

学籍番号
氏  名
n元一次方程式を共益勾配法で解くマクロ(Main)コードをPADから完成させなさい.
マクロ(Main)の開始Sub Main()
 課題提出に必要【学籍番号・氏名・課題番号の出力】 Call Header
 Long型変数で元数 n の宣言と初期化(H3セル) () 
 Double型配列変数で\(A\)[A]の宣言(要素番号1~nの2次元配列) () 
 Double型配列変数で\(x_k\)[xk]の宣言(要素番号1~nの1次元配列) () 
 Double型配列変数で\(b\)[b]の宣言(要素番号1~nの1次元配列) () 
 Double型配列変数で\(r_k\)[rk]の宣言(要素番号1~nの1次元配列) () 
 Double型配列変数で\(p_k\)[pk]の宣言(要素番号1~nの1次元配列) () 
 Double型配列変数で\(s_k\)[sk]の宣言(要素番号1~nの1次元配列) () 
 Long型変数でkの宣言と初期化(0) () 
 Long型変数でkmax[kmax]の宣言と初期化(1000) () 
 Double型変数でRk1[Rk1], Rk2[Rk2]の宣言 () 
 Double型変数で\( \alpha_k\)[ak], \(\beta_k \)[bk]の宣言 () 
 Double型変数で\( \delta \)[d]の宣言と初期化(0.9) () 
 Double型変数で\( \epsilon \)[e]の宣言と初期化(0.00001) () 
 j 繰り返し () 
 i 繰り返し () 
 \(A\)の初期化(n=5の場合F7~J11) () 
  () 
  () 
 j 繰り返し () 
 \(x_k\)の初期化(n=5の場合K7~K11) () 
  () 
 j 繰り返し () 
 \( b \)の初期化(n=5の場合L7~L11) () 
  () 
 \( r_k = b - A x_k \) () 
 \( p_k = r_k \) () 
 後判定繰り返し:条件 Rk2 ≧ \( \epsilon \) かつ k < kmax の間 () 
 \( s_k = A p_k \) () 
 Rk1 \( = \left( r_k, r_k \right) \) () 
 \( \alpha_k = \delta \times \displaystyle \frac{R_{k1}}{\left( p_k, s_k \right)} \) () 
 \( x_k = x_k + \alpha_k p_k \) () 
 \( r_k = r_k - \alpha_k s_k \) () 
  Rk2 \(= \left( r_k, r_k \right) \) () 
 \( \beta_k = \) Rk2 / Rk1 () 
 \( p_k = r_k + \beta_k p_k \) () 
 k = k + 1 () 
  () 
 j 繰り返し () 
 \(x_k\)の表示(n=5の場合K7~K11) () 
  () 
 kの表示(N7セル) () 
 Rk2の表示(M7セル) () 
マクロ(Main)の終了() 
kVector関数の定義
MatrixProVector関数の定義
InnerPro関数の定義
VectorDif関数の定義
VectorSum関数の定義


選択肢

(1)bk = Rk2/Rk1 (2)Dim Rk1 As Double, Rk2 As Double (3)Next i
(4)For i = 1 To n Step 1 (5)Dim A() As Double : ReDim A(1 To n, 1 To n) (6)Cells(7,13) = Rk2
(7)xk(j) = Cells(6+j, 11) (8)k = k + 1 (9)End Main
(10)Next j (11)A(j,i) = Cells(6+j, 5+i) (12)Dim ak As Double, bk As Double
(13)Next (14)Loop While Rk2 >= e and k < kmax (15)Dim rk() As Double : ReDim rk(1 To n)
(16)Sub End (17)Dim pk() As Double : ReDim pk(1 To n) (18)Dim n As Long : n = Cells(3,8)
(19)Dim xk() As Double : ReDim xk(1 To n) (20)pk() = VectorSum(rk(), kVector(bk, pk())) (21)rk() = VectorDif(b(), MatrixProVector(A(), xk())
(22)End Main() (23)Dim kmax As Long : kmax = 1000 (24)Dim b() As Double : ReDim b(1 To n)
(25)Dim sk() As Double : ReDim sk(1 To n) (26)Dim d As Double : d = 0.9 (27)Dim e As Double : e = 0.00001
(28)Rk2 = InnerPro(rk(), rk()) (29)Dim k As Long : k = 0 (30)b(j) = Cells(6+j, 12)
(31)End Sub (32)Cells(6+j, 11) = xk(j) (33)For Rk2 >= e and k < kmax
(34)sk() = MatrixProVector(A(), pk()) (35)ak = d * Rk1/InnerPro(pk(), sk()) (36)Do
(37)Rk1 = InnerPro(rk(), rk()) (38)Do While Rk2 >= e and k < kmax (39)xk() = VectorSum(b(), kVector(ak, pk()))
(40)pk() = rk() (41)Cells(7,14) = k (42)Loop
(43)For j = 1 To n Step 1 (44)rk() = VectorDif(b(), kVector(ak, sk()))