FUNCTION FC10 : INT
TITLE ='scl语言回归方法求函数y=m*x+b的系数m和b';
VAR_TEMP
temp_ar1:DWORD;
temp_ar2:DWORD;
ar1data1:DWORD;
ar1data2:DWORD;
db_id:WORD;
xsum:REAL;
ysum:REAL;
xsums:REAL;
ysums:REAL;
xysum:REAL;
lxx:REAL;
lyy:REAL;
lxy:REAL;
xrng:ARRAY[1..40] OF REAL;
yrng:ARRAY[1..40] OF REAL;
count1:INT;
count2:INT;
i:INT;
m:REAL;
b:REAL;
END_VAR
count1:=12;
count2:=172;
FOR i:=1 TO 40 DO
xrng[i]:=DWORD_TO_REAL(db1.dd[count1]);
yrng[i]:=DWORD_TO_REAL(db1.dd[count2]);
count1:=count1+4;
count2:=count2+4;
END_FOR;
xsum:=0.0;
ysum:=0.0;
xsums:=0.0;
ysums:=0.0;
xysum:=0.0;
lxx:=0.0;
lyy:=0.0;
lxy:=0.0;
FOR i:=1 TO 40 do
xsum:=xsum+xrng[i];
ysum:=ysum+yrng[i];
xsums:=xsums+SQR(xrng[i]);
ysums:=ysums+SQR(yrng[i]);
xysum:=xysum+xrng[i]*yrng[i];
END_FOR;
lxx:=xsums - SQR(xsum)/40.0;
lyy:=ysums - SQR(ysum)/40.0;
lxy:=xysum - xsum*ysum/40.0;
m:=lxy/lxx;
b:=ysum/40.0-m*xsum/40.0;
//DWORD_TO_REAL(WORD_TO_BLOCK_DB(INT_TO_WORD(1)).dd[0]):=m;
//DWORD_TO_REAL(WORD_TO_BLOCK_DB(INT_TO_WORD(1)).dd[4]):=b;
db1.dd0:=REAL_TO_DWORD(m);
db1.dd4:=REAL_TO_DWORD(b);
// Statement Section
FC10 := 100;
END_FUNCTION