- 転置行列を計算します。
Sub Range45()
Dim A As Range, B As Range
Set A = Sheet1.Range("C15:D16")
Set B = Sheet1.Range("F15:G16")
A.EntireRow.Clear
A.Rows(1) = Array(0.7, -0.7)
A.Rows(2) = Array(0.7, 0.7)
B = Application.Transpose(A)
End Sub
Transpose で、 A の転置行列を B に書き出します。
| 転置行列 |
| | C | D | E | F | G | H |
| 15 | 0.7 | -0.7 | | 0.7 | 0.7 | |
| 16 | 0.7 | 0.7 | | -0.7 | 0.7 | |
- 行列の積を計算します。
Sub Range46()
Dim A As Range, B As Range, C As Range
Set A = Sheet1.Range("C15:D16")
Set B = Sheet1.Range("F15:F16")
Set C = Sheet1.Range("H15:H16")
A.EntireRow.Clear
A.Rows(1) = Array(0.7, -0.7)
A.Rows(2) = Array(0.7, 0.7)
B(1) = 1
B(2) = 0
C = Application.MMult(A, B)
End Sub
MMult で、行列 A と 行列 B の積を C に書き出します。
| 行列の積 |
| | C | D | E | F | G | H |
| 15 | 0.7 | -0.7 | | 1 | | 0.7 |
| 16 | 0.7 | 0.7 | | 0 | | 0.7 |
- 行列式を計算します。
Sub Range47()
Dim A As Range, B As Range
Set A = Sheet1.Range("C15:D16")
Set B = Sheet1.Range("F15")
A.EntireRow.Clear
A.Rows(1) = Array(0.7, -0.7)
A.Rows(2) = Array(0.7, 0.7)
B = Application.MDeterm(A)
End Sub
MDeterm で、行列 A の行列式を計算します。
| 行列式 |
| | C | D | E | F | G | H |
| 15 | 0.7 | -0.7 | | 0.98 | | |
| 16 | 0.7 | 0.7 | | | | |
- 逆行列を計算します。
Sub Range48()
Dim A As Range, B As Range
Set A = Sheet1.Range("C15:D16")
Set B = Sheet1.Range("F15:G16")
A.EntireRow.Clear
A.Rows(1) = Array(0.7, -0.7)
A.Rows(2) = Array(0.7, 0.7)
B = Application.MInverse(A)
End Sub
MInverse で、行列 A の逆行列を B に書き出します。逆行列が計算できない場合にはエラーになります。実用的なコードを書くなら、先に行列式を計算してチェックしなければなりません。
| 逆行列 |
| | C | D | E | F | G | H |
| 15 | 0.7 | -0.7 | | 0.714285714 | 0.714285714 | |
| 16 | 0.7 | 0.7 | | -0.714285714 | 0.714285714 | |