- 前回の解答
Sub 行列の和()
Dim x() As Single, y() As Single, z() As Single, i As Integer, j As Integer, gyou1 As Integer, retu1 As Integer, gyou2 As Integer, retu2 As Integer
Sheets(1).Select
i = 1
Do While Cells(i, 1) <> "" And IsNumeric(Cells(i, 1))
i = i + 1
Loop
gyou1 = i - 1
i = 1
Do While Cells(1, i) <> "" And IsNumeric(Cells(1, i))
i = i + 1
Loop
retu1 = i - 1
Sheets(2).Select
i = 1
Do While Cells(i, 1) <> "" And IsNumeric(Cells(i, 1))
i = i + 1
Loop
gyou2 = i - 1
i = 1
Do While Cells(1, i) <> "" And IsNumeric(Cells(1, i))
i = i + 1
Loop
retu2 = i - 1
If gyou1 = gyou2 And retu1 = retu2 Then
ReDim x(gyou1, retu1)
ReDim y(gyou1, retu1)
ReDim z(gyou1, retu1)
Sheets(1).Select
For i = 1 To gyou1
For j = 1 To retu1
x(i, j) = Cells(i, j)
Next j
Next i
Sheets(2).Select
For i = 1 To gyou1
For j = 1 To retu1
y(i, j) = Cells(i, j)
Next j
Next i
For i = 1 To gyou1
For j = 1 To retu1
z(i, j) = x(i, j) + y(i, j)
Next j
Next i
Sheets(3).Select
For i = 1 To gyou1
For j = 1 To retu1
Cells(i, j) = z(i, j)
Next j
Next i
Else
Sheets(3).Select
Msgbox ("行列の型が異なるので足し算できません")
End If
End Sub
- 行列の積
以前載せた練習問題
をまだ考えていない人は、プログラミングの前にまずこの問題をノートで考えてください。今回は、行列の掛け算のプログラムを考えます。
まず、2行2列の行列の掛け算から計算しましょう。
=
の掛け算をすると、
となります。これをプログラムで書くと、
c(1,1)=a(1,1)*b(1,1)+a(1,2)*b(2,1)
c(1,2)=a(1,1)*b(1,2)+a(1,2)*b(2,2)
c(2,1)=a(2,1)*b(1,1)+a(2,2)*b(2,1)
c(2,2)=a(2,1)*b(1,2)+a(2,2)*b(2,2)
となります。 - 練習問題1
次の行列の掛け算をするプログラムを書きなさい。
- このままではもっと大きな行列の計算ができないので、For文を使って書き直します。
まず、Cの成分ごとに4行に分けて書いている部分をFor i=1 to 2 For j=1 to 2 c(i,j)=a(i,1)*b(1,j)+a(i,2)*b(2,j) Next j Next i
のようにFor文による繰り返しで書きます。さらに、c(i,j)=a(i,1)*b(1,j)+a(i,2)*b(2,j)の部分もFor文による繰り返しを使ってFor i=1 to 2 For j=1 to 2 c(i,j)=0 For k=1 to 2 c(i,j)=c(i,j)+a(i,k)*b(k,j) Next k Next j Next i
のように書きます。 - 練習問題2
2行2列に限らず,行列の型を数えて、掛け算できる時には掛け算をし,掛け算できないときは出来ないと表示するプログラムを書きなさい。
Amazonブラックフライデー、11月29日〜12月6日に開催
-
Amazonは、年末最後のビッグセール「Amazonブラックフライデー」を2024年11月29日(金)0時〜12月6日(金)23時59分まで開催する。セール開催に先駆け、先行セールを27日と28日に実施する。
プライム会...
0 件のコメント:
コメントを投稿