📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label8: TLabel;
Panel1: TPanel;
Memo1: TMemo;
Memo2: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Label6: TLabel;
Label7: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Label9: TLabel;
Label10: TLabel;
Button1: TButton;
Label11: TLabel;
Label13: TLabel;
Label12: TLabel;
Label15: TLabel;
Label14: TLabel;
Label16: TLabel;
Label101: TLabel;
Label18: TLabel;
Label102: TLabel;
Label21: TLabel;
Label103: TLabel;
Label17: TLabel;
Label104: TLabel;
Label105: TLabel;
Memo3: TMemo;
Label106: TLabel;
Label19: TLabel;
Label20: TLabel;
Label22: TLabel;
procedure Memo1Change(Sender: TObject);
procedure Memo2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Label20Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TVector=array of Single;
var
Form1: TForm1;
implementation
uses Tools;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1Change(nil);
Memo2Change(nil);
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
Label9.Caption:=IntToStr(Memo1.Lines.Count)+'行';
end;
procedure TForm1.Memo2Change(Sender: TObject);
begin
Label10.Caption:=IntToStr(Memo2.Lines.Count)+'行';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,Count:Integer;
a11,a12,a21,a22,b1,b2,k1,k2,d,d2,e2,y2:Single;
x,y:TVector;
begin
Count:=Memo1.Lines.Count;
if Count<>Memo2.Lines.Count then
begin
ShowMessage('行数不等');
Exit;
end;
SetLength(x,Count);
SetLength(y,Count);
a11:=Count;
a12:=0;
for i:=0 to Count-1 do x[i]:=StrToFloat(Memo2.Lines[i]);
for i:=0 to Count-1 do y[i]:=StrToFloat(Memo1.Lines[i]);
for i:=0 to Count-1 do a12:=a12+x[i];
a21:=a12;
a22:=0;
for i:=0 to Count-1 do a22:=a22+x[i]*x[i];
Label101.Caption:=Format('%3.2f',[a11])+' '+Format('%3.2f',[a12])
+#13#10+Format('%3.2f',[a21])+' '+Format('%3.2f',[a22]);
Label102.Caption:=Format('%3.2f',[a22])+' '+Format('%3.2f',[-a12])
+#13#10+Format('%3.2f',[-a21])+' '+Format('%3.2f',[a11]);
d:=a11*a22-a12*a21;
Label103.Caption:='1/'+Format('%3.2f',[d]);
b1:=0;
for i:=0 to Count-1 do b1:=b1+y[i];
b2:=0;
for i:=0 to Count-1 do b2:=b2+x[i]*y[i];
label104.Caption:=Format('%3.2f',[b1])+#13#10+Format('%3.2f',[b2]);
k1:=a22*b1-a12*b2;
k1:=k1/d;
k2:=-a21*b1+a11*b2;
k2:=k2/d;
label105.Caption:=Format('%3.2f',[k1])+#13#10+Format('%3.2f',[k2]);
Edit1.Text:=Format('%3.2f',[k1]);
Edit2.Text:=Format('%3.2f',[k2]);
y2:=0;
for i:=0 to Count-1 do y2:=y2+y[i]*y[i];
e2:=y2-k1*b1-k2*b2;
d2:=e2/(Count-2);
Label106.Caption:=Format('%3.3f',[sqrt(d2)]);
end;
procedure TForm1.Label20Click(Sender: TObject);
begin
ExecuteFile('http://www.flyinf.com', '', '', SW_SHOWDEFAULT);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -