adi.dem

来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· DEM 代码 · 共 60 行

DEM
60
字号
PROGRAM d17r2(input,output);
(* driver for routine ADI *)
LABEL 1;
CONST
   jmax=11;
   pi=3.1415926;
TYPE
   double = real;
   gljmax = ARRAY [1..jmax,1..jmax] OF double;
VAR
   alim,alpha,beta,eps : double;
   i,j,k,mid,twotok : integer;
   a,b,c,d,e,f,g,u : gljmax;

(*$I ADI.PAS *)

BEGIN
   FOR i := 1 to jmax DO BEGIN
      FOR j := 1 to jmax DO BEGIN
         a[i,j] := -1.0;
         b[i,j] := 2.0;
         c[i,j] := -1.0;
         d[i,j] := -1.0;
         e[i,j] := 2.0;
         f[i,j] := -1.0;
         g[i,j] := 0.0;
         u[i,j] := 0.0
      END
   END;
   mid := (jmax DIV 2)+1;
   g[mid,mid] := 2.0;
   alpha := 2.0*(1.0-cos(pi/jmax));
   beta := 2.0*(1.0-cos((jmax-1)*pi/jmax));
   alim := ln(4.0*jmax/pi);
   k := 0;
   twotok := 1;
   REPEAT
      k := k+1;
      twotok := 2*twotok;
   UNTIL twotok >= alim;
   eps := 1.0e-4;
   adi(a,b,c,d,e,f,g,u,jmax,k,alpha,beta,eps);
   writeln('ADI Solution:');
   FOR i := 1 to jmax DO BEGIN
      FOR j := 1 to jmax DO write(u[i,j]:7:2);
      writeln
   END;
   writeln;
   writeln('Test that solution satisfies difference eqns:');
   FOR i := 2 to (jmax-1) DO BEGIN
      FOR j := 2 to (jmax-1) DO BEGIN
         g[i,j] := -4.0*u[i,j]+u[i+1,j]
            +u[i-1,j]+u[i,j-1]+u[i,j+1]
      END;
      write(' ':7);
      FOR j := 2 to (jmax-1) DO write(g[i,j]:7:2);
      writeln
   END
END.

⌨️ 快捷键说明

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