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

📄 unit2.pas

📁 《Delphi常用数值算法集》的配书源码
💻 PAS
字号:
unit Unit2;

interface
uses
  Windows, Messages, SysUtils, Classes, Graphics,unit1, Controls, Forms, Dialogs;
procedure SOR(A,B,C,D,E,F:matrx2; var U:matrx2; JMAX:integer; RJAC:real);

implementation
procedure SOR(A,B,C,D,E,F:matrx2; var U:matrx2; JMAX:integer; RJAC:real);
const
    MAXITS = 1000; EPS = 0.00001; ZERO = 0; HALF = 0.5;
    QTR = 0.25;    ONE = 1;
var
    J,N,L:integer;  ANORMF,OMEGA,ANORM,AAA,BBB,RESID:real;
begin
    ANORMF:= ZERO;
    For J:=2 To JMAX - 1 do
    begin
        For L:=2 To JMAX - 1 do
            ANORMF:=ANORMF + Abs(F[J, L]);
    end;
    OMEGA:=ONE;
    For N:=1 To MAXITS do
    begin
        ANORM:=ZERO;
        For J:=2 To JMAX - 1 do
        begin
          For L:=2 To JMAX - 1 do
          begin
            If ((J + L) Mod 2) = (N Mod 2) Then
            begin
              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;
          end;
        end;
        If N = 1 Then
            OMEGA:=ONE / (ONE - HALF * RJAC * RJAC)
        Else
            OMEGA:=ONE / (ONE - QTR * RJAC * RJAC * OMEGA);
        If (N > 1) And (ANORM < EPS * ANORMF) Then Exit;
    end;
    ShowMessage(' MAXITS exceeded');
end;
end.
 

⌨️ 快捷键说明

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