📄 unit1.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 + -