📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
matrx2=array of array of real;
var
Form1: TForm1;
implementation
//PROGRAM D13R1
//Driver for routine SOR
uses
unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
s1='%7.2f'; JMAX =11; PI =3.1415926;
var
F:TextFile; A,B,C,D,E,FF,U:matrx2;
I,J,MIDL:integer; RJAC,AAA:real; STR1:String;
begin
SetLength(A,12,12);
SetLength(B,12,12);
SetLength(C,12,12);
SetLength(D,12,12);
SetLength(E,12,12);
SetLength(FF,12,12);
SetLength(U,12,12);
For I:=1 To JMAX do
begin
For J:=1 To JMAX do
begin
A[I, J]:=1;
B[I, J]:=1;
C[I, J]:=1;
D[I, J]:=1;
E[I, J]:=-4;
FF[I, J]:=0;
U[I, J]:=0;
end;
end;
MIDL:=JMAX div 2 + 1;
FF[MIDL, MIDL]:=2;
RJAC:=Cos(PI / JMAX);
SOR(A, B, C, D, E, FF, U, JMAX, RJAC);
//输出计算结果到文件
AssignFile(F, 'd:\delphi_shu\p13\d13r1.dat');
Rewrite(F);
Writeln(F);
Writeln(F,'SOR Solution:');
Writeln(F);
For I:=1 To JMAX do
begin
STR1:=' ';
For J:=1 To JMAX do
STR1:=STR1 + ' '+ Copy(FloatToStr(U[I,J]),1,5);
Writeln(F,STR1);
end;
Writeln(F);
Writeln(F,'Test that sulotion satisfies Difference Eqns:');
Writeln(F);
For I:=2 To JMAX - 1 do
begin
For J:=2 To JMAX - 1 do
begin
AAA:=U[I + 1, J] + U[I - 1, J] + U[I, J + 1] + U[I, J - 1];
FF[I, J]:=AAA - 4 * U[I, J];
end;
Writeln(F,Format(s1,[FF[I,2]]),Format(s1,[FF[I,3]]),
Format(s1,[FF[I,4]]),Format(s1,[FF[I,5]]),Format(s1,[FF[I,6]]),
Format(s1,[FF[I,7]]),Format(s1,[FF[I,8]]),Format(s1,[FF[I,9]]),
Format(s1,[FF[I,10]]));
end;
CloseFile(F);
//屏幕显示计算结果
memo1.Lines.LoadFromFile('d:\delphi_shu\p13\d13r1.dat');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -