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

📄 solvde.txt

📁 常用的数值算法的VB程序
💻 TXT
字号:
Sub SOLVDE(ITMAX, CONV, SLOWC, SCALV(), INDEXV(), NE, NB, M, Y(), NYJ, NYK, C(), NCI, NCJ, NCK, S(), NSI, NSJ)
    Dim ERMAX(10), KMAX(10)
    K1 = 1
    K2 = M
    NVARS = NE * M
    J1 = 1
    J2 = NB
    J3 = NB + 1
    J4 = NE
    J5 = J4 + J1
    J6 = J4 + J2
    J7 = J4 + J3
    J8 = J4 + J4
    J9 = J8 + J1
    IC1 = 1
    IC2 = NE - NB
    IC3 = IC2 + 1
    IC4 = NE
    JC1 = 1
    JCF = IC3
    For IT = 1 To ITMAX
        K = K1
        Call DIFEQ(K, K1, K2, J9, IC3, IC4, INDEXV(), NE, S(), NSI, NSJ, Y(), NYJ, NYK)
        Call PINVS(IC3, IC4, J5, J9, JC1, K1, C(), NCI, NCJ, NCK, S(), NSI, NSJ)
        For K = K1 + 1 To K2
            KP = K - 1
            Call DIFEQ(K, K1, K2, J9, IC1, IC4, INDEXV(), NE, S(), NSI, NSJ, Y(), NYJ, NYK)
            Call RED(IC1, IC4, J1, J2, J3, J4, J9, IC3, JC1, JCF, KP, C(), NCI, NCJ, NCK, S(), NSI, NSJ)
            Call PINVS(IC1, IC4, J3, J9, JC1, K, C(), NCI, NCJ, NCK, S(), NSI, NSJ)
        Next K
        K = K2 + 1
        Call DIFEQ(K, K1, K2, J9, IC1, IC2, INDEXV(), NE, S(), NSI, NSJ, Y(), NYJ, NYK)
        Call RED(IC1, IC2, J5, J6, J7, J8, J9, IC3, JC1, JCF, K2, C(), NCI, NCJ, NCK, S(), NSI, NSJ)
        Call PINVS(IC1, IC2, J7, J9, JCF, K2 + 1, C(), NCI, NCJ, NCK, S(), NSI, NSJ)
        Call BKSUB(NE, NB, JCF, K1, K2, C(), NCI, NCJ, NCK)
        ERQ = 0#
        For J = 1 To NE
            JV = INDEXV(J)
            ERMAX(J) = 0#
            ERRJ = 0#
            KMAX(J) = 0
            VMAX = 0#
            For K = K1 To K2
                VZ = Abs(C(J, 1, K))
                If VZ > VMAX Then
                    VMAX = VZ
                    KM = K
                End If
                ERRJ = ERRJ + VZ
            Next K
            ERQ = ERQ + ERRJ / SCALV(JV)
            ERMAX(J) = C(J, 1, KM) / SCALV(JV)
            KMAX(J) = KM
        Next J
        ERQ = ERQ / NVARS
        If ERQ > SLOWC Then
            DUM = ERQ
        Else
            DUM = SLOWC
        End If
        FAC = SLOWC / DUM
        For JV = 1 To NE
            J = INDEXV(JV)
            For K = K1 To K2
                Y(J, K) = Y(J, K) - FAC * C(JV, 1, K)
            Next K
        Next JV
        Print Tab(3); Format$(IT, "####"); Tab(9); Format$(ERQ, "#.#####0");
        Print Tab(19); Format$(FAC, "#.#####0")
        Print
        For J = 1 To NE
            Print Tab(9); Format$(KMAX(J), "##0"); Tab(19); Format$(ERMAX(J), "#.#####0")
        Next J
        Print
        If ERQ < CONV Then Exit For
    Next IT
End Sub

⌨️ 快捷键说明

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