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

📄 unit1.pas

📁 Numeric Programs
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  matrx2=array of array of real;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
//PROGRAM D6R4
//Driver for routine TQLI
uses
  unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
  s1='%14.6f';  s2='###'; s3='%9.6f';
  NP = 3; TINY = 0.000001;
var
    D,E,FF:array[0..3] of real;
    F:TextFile;   A,C:matrx2;
    I,J,K,L,M:integer;
begin
  SetLength(A,4,4);
  SetLength(C,4,4);
  A[1, 1]:=1; A[1, 2]:=2; A[1, 3]:=3;
  A[2, 1]:=2; A[2, 2]:=2; A[2, 3]:=3;
  A[3, 1]:=3; A[3, 2]:=3; A[3, 3]:=3;
  For I:=1 To NP do
    For J:=1 To NP do
      C[I,J]:= A[I,J];
  TRED2(C, NP, D, E);
  TQLI(D, E, NP, C);
  //输出计算结果到文件
  AssignFile(F, 'd:\delphi_shu\p6\d6r4.dat');
  Rewrite(F);
  Writeln(F, ' Eigenvectors for a real symmetric matrix');
  For I:=1 To NP do
  begin
    For J:=1 To NP do
    begin
      FF[J]:=0;
      For K:=1 To NP do
        FF[J]:=FF[J]+A[J,K]*C[K,I];
    end;
    Writeln(F);
    Writeln(F,' Eigenvalue ',FormatFloat(s2,I),' = ',Format(s3,[D[I]]));
    Writeln(F);
    Writeln(F, '       Vector     Matrx * vect.    Ratio');
    For J:=1 To NP do
    begin
      if Abs(C[J,I])<TINY then
        Writeln(F,Format(s1,[C[J,I]]),Format(s1,[FF[J]]),'div. by 0')
      else
        Writeln(F,Format(s1,[C[J,I]]),Format(s1,[FF[J]]),
                                      Format(s1,[FF[J]/C[J,I]]));
    end;
  end;
  CloseFile(F);
  //屏幕显示计算结果
    memo1.Lines.LoadFromFile('d:\delphi_shu\p6\d6r4.dat');
end;

end.

⌨️ 快捷键说明

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