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

📄 unit1.~pas

📁 很好运筹学的DEOPHI原代码.包括动态规划,原始单纯形法,对策论,决策论等
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
const length=9;
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type  array1=array[1..length] of Tedit; //自定义类型,供输入数据
      array2=array[1..length] of Tlabel;
var
  Form1: TForm1;

implementation
{$R *.dfm}
uses math;
var n:integer;
    cr:array1;
function Func(xx:real;m:integer):real ;
var s:real;
    i:integer;
    xishu:array[1..length] of real;
begin
  s:=0;
  for i:=1 to m+1 do
    begin
      xishu[i]:=strtofloat(cr[i].text);
      s:=s+xishu[i]*power(xx,m+1-i);
    end;
  result:=s;

end;
{-------------------计算函数值f(x)-----------------}
function chazhi(x0:real): real;
var F0,F1,F2:real;
begin
  F0:=Func(0,n);
  F1:= Func(x0,n);
  if F1<F0 then
   begin
     F2:=Func(2*x0,n);
     while abs(F2-F1)<0.000001 do
        begin
           x0:=2*x0;
           F1:=F2;
           F2:=Func(x0,n);
        end ;
     result:=(4*F1-3*F0-F2)*x0/(2*(2*F1-F0-F2));
  end
else
  begin
    Repeat
      begin
        F2:=F1;
        x0:=1/2*x0;
        F1:=Func(x0,n);
      end;
    until  abs(F1-F0)<0.000001 ;
    result:=(4*F1-3*F0-F2)*x0/(2*(2*F1-F0-F2));
  end;
end;
{------------------二次插值-------------------}



procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
    Clabel1,Clabel2: array2;
begin
  if (edit1.text<>'') and (edit2.text<>'')  then
  begin
    n:=strtoint(edit2.text);
    for i:=1  to  n+1  do
      begin
        cr[i]:=Tedit.Create(self);
        cr[i].parent:=form1.TabSheet2;
        cr[i].Width:=40;
        cr[i].Height:=24;
        cr[i].left:=3+(i-1)*(cr[i].Width+1);
        cr[i].top:=65;
        Clabel1[i]:=Tlabel.Create(self);
        Clabel1[i].parent:=form1.TabSheet2;
        Clabel1[i].Width:=40;
        Clabel1[i].Height:=24;
        Clabel1[i].left:=16+(i-1)*(Clabel1[i].Width+1);
        Clabel1[i].top:=46;
        Clabel1[i].Caption:='x';
        Clabel1[i].Font.Size:=11;
        Clabel2[i]:=Tlabel.Create(self);
        Clabel2[i].parent:=form1.TabSheet2;
        Clabel2[i].Width:=40;
        Clabel2[i].Height:=24;
        Clabel2[i].left:=20+(i-1)*(Clabel2[i].Width+1);
        Clabel2[i].top:=39;
        Clabel2[i].Caption:=inttostr(n+1-i);
        Clabel2[i].Font.Size:=2;
      end;
    PageControl1.ActivePageIndex:=1;
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button3Click(Sender: TObject);
var e,x:real;
begin
e:=strtofloat(edit1.text);
x:=chazhi(e);
showmessage('最优解是:'+formatfloat('0.00###',x)+#13+'f='+formatfloat('0.00###',func(x,n)));
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  for i:= 0 to PageControl1.PageCount - 1 do
      PageControl1.Pages[I].TabVisible := False;
  PageControl1.ActivePageIndex:=0 ;
end;
{------------------控制控件的可视性-------------------}

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['1'..'8']) then
      key:=chr(0);
end;

end.

⌨️ 快捷键说明

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