Скачиваний:
10
Добавлен:
01.05.2014
Размер:
2.32 Кб
Скачать

Turbo Profiler Version 2.1 Tue Mar 29 17:51:59 2005

Program: D:\_MYDOCS\LETI\8SEM\Њ…’ђЋ‹~1\LAB2\PAS\LINEFIT1.EXE File D:\_MYDOCS\LETI\8SEM\Њ…’ђЋ‹~1\LAB2\PAS\LINEFIT1.PAS

Time Counts
const max = 20;
type ary = array[1..max] of real;

procedure linfit1(x,y: ary; var y_calc: ary; var a,b:real; n:integer);
{ fit a straight line (y_calc) through n sets of x and y pairs of points }
var i : integer;
sum_x,sum_y,sum_xy,sum_x2,
sum_y2,xi,yi,sxy,sxx,
syy: real;

begin { linfit }
0.0000 1 sum_x:=0.0;
0.0000 1 sum_y:=0.0;
0.0000 1 sum_xy:=0.0;
0.0000 1 sum_x2:=0.0;
0.0000 1 sum_y2:=0.0;
0.0000 1 for i:=1 to n do
begin
0.0000 20 xi:=x[i];
0.0000 20 yi:=y[i];
0.0000 20 sum_x:=sum_x+xi;
0.0000 20 sum_y:=sum_y+yi;
0.0000 20 sum_xy:=sum_xy+xi*yi;
0.0000 20 sum_x2:=sum_x2+xi*xi;
0.0000 20 sum_y2:=sum_y2+yi*yi;
0.0000 20 end;
0.0000 1 sxx:=sum_x2-sum_x*sum_x/n;
0.0000 1 sxy:=sum_xy-sum_x*sum_y/n;
0.0000 1 syy:=sum_y2-sum_y*sum_y/n;
0.0000 1 b:=sxy/sxx;
0.0000 1 a:=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;
0.0000 1 for i:=1 to n do
0.0000 20 y_calc[i]:=a+b*x[i]
0.0000 1 end; { LINFIT }

var x,y,y_calc:ary;
i:integer;
a,b:real;
0.0009 1 begin
{creating new mass x and y}
0.0000 1 randomize;
0.0000 1 writeln('Input Data: ');
0.0000 1 for i:=1 to max do
begin
0.0000 20 x[i] := i*10;
0.0000 20 y[i] := i*10 + random(20) - 10;
0.0012 20 writeln('x[',i:2,'] = ',x[i]:3:0,' y[',i:2,'] = ',y[i]:3:0);
0.0000 20 end;

0.0000 1 linfit1(x,y,y_calc,a,b,max);

0.0000 1 writeln('a: ',a:3:1,' b: ',b:3:1);

0.0000 1 for i:=1 to max do
0.0011 20 writeln('y_calc: ',y_calc[i]:3:1);
0.0007 1 end.
Соседние файлы в папке OTCHET