sor.txt

来自「用VB语言实现偏微分方程的解法 包括解边值问题的松弛法、交替方向隐式方法等」· 文本 代码 · 共 36 行

TXT
36
字号
Sub SOR(A(), B(), C(), D(), E(), F(), U(), JMAX, RJAC)
    MAXITS = 1000
    EPS = 0.00001
    ZERO = 0#
    HALF = 0.5
    QTR = 0.25
    ONE = 1#
    ANORMF = ZERO
    For J = 2 To JMAX - 1
        For L = 2 To JMAX - 1
            ANORMF = ANORMF + Abs(F(J, L))
        Next L
    Next J
    OMEGA = ONE
    For N = 1 To MAXITS
        ANORM = ZERO
        For J = 2 To JMAX - 1
          For L = 2 To JMAX - 1
            If (J + L) Mod 2 = N Mod 2 Then
              AAA = A(J, L) * U(J + 1, L) + B(J, L) * U(J - 1, L)
              BBB = C(J, L) * U(J, L + 1) + D(J, L) * U(J, L - 1)
              RESID = AAA + BBB + E(J, L) * U(J, L) - F(J, L)
              ANORM = ANORM + Abs(RESID)
              U(J, L) = U(J, L) - OMEGA * RESID / E(J, L)
            End If
          Next L
        Next J
        If N = 1 Then
            OMEGA = ONE / (ONE - HALF * RJAC ^ 2)
        Else
            OMEGA = ONE / (ONE - QTR * RJAC ^ 2 * OMEGA)
        End If
        If N > 1 And ANORM < EPS * ANORMF Then Exit Sub
    Next N
    Print " MAXITS exceeded"
End Sub

⌨️ 快捷键说明

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