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

📄 sparse.txt

📁 用VB实现线性方程组的求解。包括:高斯消元法
💻 TXT
字号:
Sub SPARSE(B(), N, X(), RSQ)
    NMAX = 500
    EPS = 0.000001
    Dim G(500), H(500), XI(500), XJ(500)
    EPS2 = N * EPS ^ 2
    IRST = 0
1   IRST = IRST + 1
    Call ASUB(X(), XI())
    RP = 0#
    BSQ = 0#
    For J = 1 To N
        BSQ = BSQ + B(J) ^ 2
        XI(J) = XI(J) - B(J)
        RP = RP + XI(J) ^ 2
    Next J
    Call ATSUB(XI(), G())
    For J = 1 To N
        G(J) = -G(J)
        H(J) = G(J)
    Next J
    For ITER = 1 To 10 * N
        Call ASUB(H(), XI())
        ANUM = 0#
        ADEN = 0#
        For J = 1 To N
            ANUM = ANUM + G(J) * H(J)
            ADEN = ADEN + XI(J) ^ 2
        Next J
        If ADEN = 0# Then Print "very singular matrix"
        ANUM = ANUM / ADEN
        For J = 1 To N
            XI(J) = X(J)
            X(J) = X(J) + ANUM * H(J)
        Next J
        Call ASUB(X(), XJ())
        RSQ = 0#
        For J = 1 To N
            XJ(J) = XJ(J) - B(J)
            RSQ = RSQ + XJ(J) ^ 2
        Next J
        If RSQ = RP Or RSQ <= BSQ * EPS2 Then Exit Sub
        If RSQ > RP Then
            For J = 1 To N
                X(J) = XI(J)
            Next J
            If IRST >= 3 Then
                Exit Sub
            End If
            GoTo 1
        End If
        RP = RSQ
        Call ATSUB(XJ(), XI())
        GG = 0#
        DGG = 0#
        For J = 1 To N
            GG = GG + G(J) ^ 2
            DGG = DGG + (XI(J) + G(J)) * XI(J)
        Next J
        If GG = 0# Then Exit Sub
        GAM = DGG / GG
        For J = 1 To N
            G(J) = -XI(J)
            H(J) = G(J) + GAM * H(J)
        Next J
    Next ITER
    Print "too many iterations"
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -