mjacobieigenvmainmodule.bas

来自「科学与工程数值计算算法(Visual Basic版) 附赠的光盘包含了本书中全」· BAS 代码 · 共 53 行

BAS
53
字号
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 + =
减小字号Ctrl + -
显示快捷键?