- 前回の解答
Sub 掛算() Dim x() As Single, y() As Single, z() As Single Dim gyou1 As Integer, gyou2 As Integer, retsu1 As Integer, retsu2 As Integer Dim i As Integer, j As Integer, k As Integer Sheets(1).Select i = 1 Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1)) i = i + 1 Loop gyou1 = i - 1 j = 1 Do While Selection.Cells(1, j) <> "" And IsNumeric(Selection.Cells(1, j)) j = j + 1 Loop retsu1 = j - 1 Sheets(2).Select i = 1 Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1)) i = i + 1 Loop gyou2 = i - 1 j = 1 Do While Selection.Cells(1, j) <> "" And IsNumeric(Selection.Cells(1, j)) j = j + 1 Loop retsu2 = j - 1 If retsu1 = gyou2 Then ReDim x(gyou1, retsu1) ReDim y(gyou2, retsu2) ReDim z(gyou1, retsu2) Sheets(1).Select For i = 1 To gyou1 For j = 1 To retsu1 x(i, j) = Selection.Cells(i, j) Next j Next i Sheets(2).Select For i = 1 To gyou2 For j = 1 To retsu2 y(i, j) = Selection.Cells(i, j) Next j Next i For i = 1 To gyou1 For j = 1 To retsu2 z(i, j) = 0 For k = 1 To retsu1 z(i, j) = z(i, j) + x(i, k) * y(k, j) Next k Next j Next i Sheets(3).Select For i = 1 To gyou1 For j = 1 To retsu2 Selection.Cells(i, j) = z(i, j) Next j Next i Else Sheets(3).Select Selection.Cells(1, 1) = "ベクトルの型が異なるので掛け算できません" End If End Sub
- 履き出し法
この問題をExcelを使って解きましょう。まず係数の部分と定数項の部分を Excelのセルに入力します。
まずこの係数部分と定数項を配列に読み込んで、Sheets(3)の(1,1)セルから順に 表示します。A B C 2 4 4 2 -1 -6 2 3 -2 Sheet1 A B C 18 -2 -6 Sheet2 するとこのようになります。Sub 連立一次方程式1() Dim x(3, 4) As Single Dim i As Integer, j As Integer Sheets(1).Select For i = 1 To 3 For j = 1 To 3 x(i, j) = Selection.Cells(i, j) Next j Next i Sheets(2).Select For i = 1 To 3 x(i, 4) = Selection.Cells(i, 1) Next i Sheets(3).Select Cells(1, 1).Select For i = 1 To 3 For j = 1 To 4 Selection.Cells(i, j) = x(i, j) Next j Next i End Sub
A B C D 2 4 4 18 2 -1 -6 -2 2 3 -2 -6 Sheet3 - 履き出し法の実行
自分で計算する手順を考えながら、プログラムを書きます。
途中経過もExcelに出力すると分かりやすいです。
A B C D 2 4 4 18 2 -1 -6 -2 2 3 -2 -6 1 2 2 9 (1,1)成分を1にするために第1行を(1,1)成分で割ります 2 -1 -6 -2 2 3 -2 -6 1 2 2 9 0 -5 -10 -20 (2,1)成分を0にするために第2行から第1行×(2,1)成分を引きます 0 -1 -6 -24 (3,1)成分を0にするために第3行から第1行×(3,1)成分を引きます Sheet3 Sub 連立一次方程式2() Dim x(3, 4) As Single Dim i As Integer, j As Integer, basho As Integer Sheets(1).Select For i = 1 To 3 For j = 1 To 3 x(i, j) = Selection.Cells(i, j) Next j Next i Sheets(2).Select For i = 1 To 3 x(i, 4) = Selection.Cells(i, 1) Next i Sheets(3).Select basho = 1 Cells(basho, 1).Select For i = 1 To 3 For j = 1 To 4 Selection.Cells(i, j) = x(i, j) Next j Next i Rem (1,1)成分を1にするために第一行を(1,1)成分で割るプログラムを書いてください。 basho = basho + 4 Cells(basho, 1).Select For i = 1 To 3 For j = 1 To 4 Selection.Cells(i, j) = x(i, j) Next j Next i Rem (2,1)成分を0にするために第二行から第一行の(2,1)成分倍を引くプログラムを書いてください。 Rem (3,1)成分を0にするために第三行から第一行の(3,1)成分倍を引くプログラムを書いてください。 basho = basho + 4 Cells(basho, 1).Select For i = 1 To 3 For j = 1 To 4 Selection.Cells(i, j) = x(i, j) Next j Next i End Sub
- 演習問題
1. 上のプログラムにおいて、Rem 文で書いている手順をBasicのプログラムで書きなさい。
最後まで解くとこうなります。A B C D E(ここは説明です) 2 4 4 18 2 -1 -6 -2 2 3 -2 -6 1 2 2 9 (1,1)成分を1にするために第1行を(1,1)成分で割ります 2 -1 -6 -2 2 3 -2 -6 1 2 2 9 0 -5 -10 -20 (2,1)成分を0にするために第2行から第1行×(2,1)成分を引きます 0 -1 -6 -24 (3,1)成分を0にするために第3行から第1行×(3,1)成分を引きます 1 2 2 9 0 1 2 4 (2,2)成分を1にするために第2行を(2,2)成分で割ります 0 -1 -6 -24 1 0 -2 1 (1,2)成分を0にするために第1行から第2行×(1,2)成分を引きます 0 1 2 4 0 0 -4 -20 (3,2)成分を0にするために第3行から第2行×(3,2)成分を引きます 1 0 -2 1 0 1 2 4 0 0 1 5 (3,3)成分を1にするために第3行を(3,3)成分で割ります 1 0 0 11 (1,3)成分を0にするために第1行から第3行×(1,3)成分を引きます 0 1 0 -6 (2,3)成分を0にするために第2行から第3行×(2,3)成分を引きます 0 0 1 5 Sheet3
ドコモ、リユース品「iPhone 13 Pro」を最大44,000円割引、A+品が46,200円から
-
ドコモの公式オンラインストア「ドコモオンラインショップ」にて、docomo Certified(認定リユース品)の「iPhone 13
Pro」を新規契約またはMNP契約(のりかえ)で購入すると、本体代金が44,000円...
0 件のコメント:
コメントを投稿