最小二乘法拟和线性方程,这是我程序中择出的。设方程为:y=k1*x+k2
type
thedata=record
x:double;
y:double;
end;
dataary=array of thedata;
procedure calc(const data:dataary;var K1,K2:double);
var
i,n:integer;
Sx,Sy,Sxx,Syy,Sxy,D,C:double;
begin
Sx:=0;
Sy:=0;
Sxx:=0;
Syy:=0;
Sxy:=0;
D:=0;
C:=0;
n:=length(data);
for i:=0 to n-1do
begin
Sx:=Sx+data.x;
Sxx:=Sxx+data.x*data.x;
Sy:=Sy+data.y;
Syy:=Syy+data.y*data.y;
Sxy:=Sxy+data.x*data.y;
D:=N*Sxx-Sx*Sx;
K2:=(Sxx*Sy-Sx*Sxy)/D;
K1:=(N*Sxy-Sx*Sy)/D;
end;
end;