Скачиваний:
19
Добавлен:
01.05.2014
Размер:
1.12 Кб
Скачать
#include <stdlib.h>
#include <stdio.h>
#include "sampler.h"
#define size 20

void linfit1(double x[size],double y[size], double* y_calc, double* a, double* b,int n)
{
	int i;
	double sum_x,sum_y,sum_xy,sum_x2,sum_y2,xi,yi,sxy,sxx,syy;
	sum_x = 0;
	sum_y = 0;
	sum_xy = 0;
	sum_x2 = 0;
	sum_y2 = 0;
	for (i=0; i<n; i++)
	{
		xi=x[i];
		yi=y[i];
		sum_x += xi;
		sum_y += yi;
		sum_xy += xi*yi;
		sum_x2 += xi*xi;
		sum_y2 += yi*yi;
	}
	sxx = sum_x2-sum_x*sum_x/n;
	sxy = sum_xy-sum_x*sum_y/n;
	syy = sum_y2-sum_y*sum_y/n;
	*b=sxy/sxx;
	*a=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;
	for (i=0;i<n;i++)
		*(y_calc+i) = *a + *b * x[i];
}
void main(void)
{
SAMPLE;//35
	int i,k;
	double a,b,x[size],y[size],y_calc[size];
for (k=0;k<80;k++)
{
	randomize();
	printf("Input Data: \n");
	for (i=0;i<size;i++)
	{
		x[i] = 10+i*10;
		y[i] = 10+i*10 + random(20) - 10;
		printf("x[%d] = %3.1f y[%d] = %3.1f\n",i,x[i],i,y[i]);
	}
	linfit1(x,y,&y_calc[0],&a,&b,size);
	printf("a: %3.1f, b: %3.1f\n",a,b);
	for (i=0;i<size;i++)
		printf("y_calc = %3.1f\n",y_calc[i]);
}
SAMPLE;//53
}
Соседние файлы в папке СPP