⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjacobieigenv2mainmodule.bas

📁 科学与工程数值计算算法(Visual Basic版)一书的源代码。对科学研究者自己开发领域内计算程序极具参考价值。
💻 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 + -