📄 mjacobieigenvmainmodule.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 = 3
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) = 2: mtxA(1, 2) = -1: mtxA(1, 3) = 0
mtxA(2, 1) = -1: mtxA(2, 2) = 2: mtxA(2, 3) = -1
mtxA(3, 1) = 0: mtxA(3, 2) = -1: mtxA(3, 3) = 2
' 备份原矩阵
For i = 1 To n
For j = 1 To n
mtxB(i, j) = mtxA(i, j)
Next j
Next i
' 求解特征值和特征向量
If MJacobiEigenv(n, mtxA, mtxV, eps, nIt) Then
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) & _
sEigenValue & Chr$(13) & Chr$(13) & _
"特征向量为" & Chr$(13) & Chr$(13) & _
sEigenVector
Else
MsgBox "求解失败!"
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -