📄 mjacobieigenv2mainmodule.bas
字号:
Attribute VB_Name = "MainModule"
Sub Main()
Dim i As Integer, j As Integer
Dim n As Integer, nIt As Integer
Dim eps As Double
n = 5
nIt = 60
eps = 0.000001
ReDim mtxA(n, n) As Double
ReDim mtxB(n, n) As Double
ReDim mtxV(n, n) As Double
Dim sEigenVector As String, sEigenValue As String
' 原矩阵
mtxA(1, 1) = 10: mtxA(1, 2) = 1: mtxA(1, 3) = 2: mtxA(1, 4) = 3: mtxA(1, 5) = 4
mtxA(2, 1) = 1: mtxA(2, 2) = 9: mtxA(2, 3) = -1: mtxA(2, 4) = 2: mtxA(2, 5) = -3
mtxA(3, 1) = 2: mtxA(3, 2) = -1: mtxA(3, 3) = 7: mtxA(3, 4) = 3: mtxA(3, 5) = -5
mtxA(4, 1) = 3: mtxA(4, 2) = 2: mtxA(4, 3) = 3: mtxA(4, 4) = 12: mtxA(4, 5) = -1
mtxA(5, 1) = 4: mtxA(5, 2) = -3: mtxA(5, 3) = -5: mtxA(5, 4) = -1: mtxA(5, 5) = 15
' 备份原矩阵
For i = 1 To n
For j = 1 To n
mtxB(i, j) = mtxA(i, j)
Next j
Next i
' 求解特征值和特征向量
Call MJacobiEigenv2(n, mtxA, mtxV, eps)
For i = 1 To n
For j = 1 To n
If (i = j) Then sEigenValue = sEigenValue + Format(mtxA(i, j), "######0.0000000") + " "
Next j
sEigenVector = sEigenVector & i & ": " & MatrixColToString(n, i, mtxV, "######0.0000000") & Chr(13)
Next i
MsgBox "求解成功!" & Chr$(13) & Chr$(13) & _
"原矩阵为" & Chr$(13) & Chr$(13) & _
MatrixToString(n, n, mtxB, "######0.0000000") & Chr$(13) & Chr$(13) & _
"特征值为" & Chr$(13) & Chr$(13) & _
sEigenValue & Chr$(13) & Chr$(13) & _
"特征向量为" & Chr$(13) & Chr$(13) & _
sEigenVector
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -