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

📄 unit1.pas

📁 《Delphi常用数值算法集》的配书源码
💻 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 D9R10
//Driver for routine SIMPLX
uses
  unit2;
  {$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
const
  s1='%8.2f';
  N = 4; M = 4; NP = 5; MP = 6; M1 = 2; M2 = 1; M3 = 1; NM1M2 = N+M1+M2;
var
  F:TextFile;   A:matrx2;
  IZROV,IPOSV:array[0..4] of integer;  ANUM:array[0..5] of real;
  TXT:array[0..7] of string;  ALPHA:array[0..5] of string;
  I,J,JJ,JMAX,ICASE:integer;  STR1,STR2,STR3:string;
begin
  SetLength(A,7,6);
  TXT[1]:='x1';   TXT[2]:='x2';   TXT[3]:='x3';   TXT[4]:='x4';
  TXT[5]:='y1';   TXT[6]:='y2';   TXT[7]:='y3';
  A[1, 1]:=0;   A[1, 2]:=1;  A[1, 3]:=1;   A[1, 4]:=3;  A[1, 5]:=-0.5;
  A[2, 1]:=740; A[2, 2]:=-1; A[2, 3]:=0;   A[2, 4]:=-2; A[2, 5]:=0;
  A[3, 1]:=0;   A[3, 2]:=0;  A[3, 3]:=-2;  A[3, 4]:=0;  A[3, 5]:=7;
  A[4, 1]:=0.5; A[4, 2]:=0;  A[4, 3]:=-1;  A[4, 4]:=1;  A[4, 5]:=-2;
  A[5, 1]:=9;   A[5, 2]:=-1; A[5, 3]:=-1;  A[5, 4]:=-1; A[5, 5]:=-1;
  A[6, 1]:=0;   A[6, 2]:=0;  A[6, 3]:=0;   A[6, 4]:=0;  A[6, 5]:=0;
  SIMPLX(A, M, N, MP, NP, M1, M2, M3, ICASE, IZROV, IPOSV);
  //输出计算结果到文件
  AssignFile(F, 'd:\delphi_shu\p9\d9r10.dat');
  Rewrite(F);
  Writeln(F);
  If ICASE = 1 Then
    Writeln(F, '   Unbounded objective function')
  Else If ICASE = -1 Then
    Writeln(F, '   No solutions satisfy constraints given');
  JJ:=1;
  For I:=1 To N do
  begin
    If IZROV[I] <= N + M1 + M2 Then
    begin
      ALPHA[JJ]:=TXT[IZROV[I]];
      JJ:=JJ + 1;
    end;
  end;
  JMAX:=JJ - 1;
  Writeln(F);
  STR1:=' ';
  For JJ:=1 To JMAX do
    STR1:=STR1 + ALPHA[JJ]+'        ';
  Writeln(F, '                 ',STR1);
  For I:=1 To M + 1 do
  begin
    If I > 1 Then
      ALPHA[1]:=TXT[IPOSV[I - 1]]
    Else
      ALPHA[1]:='  ';
    ANUM[1]:=A[I, 1];
    JJ:=2;
    For J:=2 To N + 1 do
    begin
      If IZROV[J - 1] <= (N + M1 + M2) Then
      begin
        ANUM[JJ]:=A[I, J];
        JJ:=JJ + 1;
      end;
    end;
    JMAX:=JJ - 1;
    STR2:='  ';
    For JJ:=1 To JMAX do
    begin
      STR3:='   ';
      STR3:=COPY(FloatToStr(ANUM[JJ]),1,7);
      STR2:= STR2 + STR3 + '     ';
    end;
    Writeln(F, ALPHA[1],STR2);
  end;
  CloseFile(F);
  //屏幕显示计算结果
  memo1.Lines.LoadFromFile('d:\delphi_shu\p9\d9r10.dat');
end;

end.

⌨️ 快捷键说明

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