#include #include double xx[100][100]; void main() { double x[1000][100],y[1000],b[100],xy[100]; int i,j,k,m,n; void inverse(int k); /* input: x[1000][100],y[1000],n,k output: b[100] */ n=5; k=2; FILE *fn; fn=fopen("data.txt","r"); for(m=1;m<=n;++m){ fscanf(fn,"%lf",&y[m]); for(j=1;j<=k;++j) fscanf(fn,"%lf",&x[m][j]); if(m != n) fscanf(fn,"\n"); } fclose(fn); for(i=1;i<=k;++i){ xy[i]=0.0; for(m=1;m<=n;++m) xy[i]+=x[m][i]*y[m]; } for(i=1;i<=k;++i){ for(j=1;j<=k;++j){ xx[i][j]=0.0; for(m=1;m<=n;++m) xx[i][j]+=x[m][i]*x[m][j]; } } inverse(k); for(i=1;i<=k;++i){ b[i]=0.0; for(j=1;j<=k;++j) b[i]+=xx[i][j]*xy[j]; } printf("Regression Coeff.:\n"); for(i=1;i<=k;++i) printf("%15.7lf",b[i]); fn=fopen("res.txt","w"); fprintf(fn,"Regression Coeff.:\n"); for(i=1;i<=k;++i) fprintf(fn,"%15.7lf",b[i]); fclose(fn); } /* ---------------------------------------------------------- */ void inverse(int k) { double a1,a2; int i,j,m; for(i=1;i<=k;i++){ a1=xx[i][i]; xx[i][i]=1.0; for(j=1;j<=k;j++) xx[i][j]=xx[i][j]/a1; for(m=1;m<=k;m++){ if(m != i){ a2=xx[m][i]; xx[m][i]=0.0; for(j=1;j<=k;j++) xx[m][j]-=a2*xx[i][j]; } } } }