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 + -
显示快捷键?