for (int j=0;j<m;j++) y1[i]=y1[i]+a[i][j]*t[j];
}
}
/****** teta optimition */
void teta_opt1(float a[n][m],float y[n],float u[n],float t[m])
{ float matr[m][m];
float s;
int i,j;
TXvX(a,u,matr); //matr=aTa
TXvy(a,y,u,t); //t=aTy
// llT
matr[0][0]=sqrt(matr[0][0]);
for (i=1;i<m;i++)
{ for (j=0;j<i;j++)
{ s=0;
for (int k=0;k<j;k++) s=s+matr[i][k]*matr[j][k];
matr[i][j]=(matr[i][j]-s)/matr[j][j];
}
s=0;
for (int k=0;k<i;k++) s=s+matr[i][k]*matr[i][k];
matr[i][i]=sqrt(matr[i][i]-s);
}
// aXteta^=f
t[0]=t[0]/matr[0][0];
for (i=1;i<m;i++)
{ for (j=i;j<m;j++) t[j]=t[j]-t[i-1]*matr[j][i-1];
t[i]=t[i]/matr[i][i];
}
t[m-1]=t[m-1]/matr[m-1][m-1];
for (i=m-2;i>=0;i--)
{ for (j=i;j>=0;j--) t[j]=t[j]-t[i+1]*matr[i+1][j];
t[i]=t[i]/matr[i][i];
}
return;
}
/**************************************/
void D_el(float y[n],float y1[n],float u1[n])
{int i;
float LR;
for(i=0;i<n;i++) u1[i]=(y[i]-y1[i])*(y[i]-y1[i])/n;
LR=0;
for(i=0;i<n;i++) LR=LR+log(u1[i]);
cout<<"LR = "<<LR<<"\n";
}
//____________________________________________________________//
void lab2(float a[n][m],float y[n],float u[n],float teta1[m],float y1[n])
{int i;
getera(y,u);
teta_opt1(a,y,u,teta1);
for(i=0;i<m;i++) cout<<teta[i]<<" "<<teta1[i]<<"\n";
scal1(a,teta1,y1);
ofstream out3("y1.dat");
for(i=0;i<n;i++) out3<<y1<<"\n";
out3.close();
}
//___________________________________________//
void test1(float y[n],float y1[n])
{int i; float z[n];
float s=0;
for(i=0;i<n;i++) s=s+(y[i]-y1[i])*(y[i]-y1[i]);
cout <<"||y-y1||: "<<sqrt(s)<<"\n";
s=s/n;
cout <<"test1 sigma = "<<s<<"\n";
for(i=0;i<n;i++) z[i]=(y[i]-y1[i])*(y[i]-y1[i])/s;
ofstream out2("t1.dat");
for(i=0;i<n;i++) out2<<y[i]<<" "<<y1[i]<<" "<<z[i]<<"\n";
s=0;
for(i=0;i<n;i++) s=s+(abs(y[i])-z[i])*(abs(y[i])-z[i]);
cout <<"test1 ||y-z|| "<<sqrt(s)<<"\n";
cout <<"test1 RRS/2 "<<s/2<<"\n";
s=0;
for(i=0;i<n;i++) s=s+(y1[i]-z[i])*(y1[i]-z[i]);
cout <<"test1 ||y1-z|| "<<sqrt(s)<<"\n";
cout <<"test1 RRS/2 "<<s/2<<"\n";
}
//___________________________________________//
void test2(float y[n],float y1[n])
{int i,j,nc;
float rrs1,rrs2;
nc=n/3;
rrs1=0;
for(i=0;i<nc;i++) rrs1=rrs1+(y[i]-y1[i])*(y[i]-y1[i]);
rrs2=0;
for(i=2*nc;i<n;i++) rrs2=rrs2+(y[i]-y1[i])*(y[i]-y1[i]);
cout <<"test2 rrs1 ="<<rrs1<<"\n";
cout <<"test2 rrs2 ="<<rrs2<<"\n";
cout <<"test2 rrs1/rrs2 = "<<rrs1/rrs2<<"\n";
cout <<"test2 rrs2/rrs1 = "<<rrs2/rrs1<<"\n";
}
//////////////////////////////////////////////
main()
{ float y[n],x[n],u[n],u1[n],teta1[m],y1[n],eps[n];
float a[n][m];
int i,j,k;
float sg,sg1,s,sge;
clrscr();
matrix(a);
lab1(u,eps,y);
lab2(a,y,u,teta1,y1);
test1(y,y1);
test2(y,y1);
return 0;
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.