📄 jiancuo.c.txt
字号:
#include"math.h"
#include"stdio.h"
main()
{int i,j,p,t,s,f;
int m=4;
int n=8;
int k=4;
float a=0.00;
float b=0.00;
float z;
float del;
float r;
float ra=0.037;
static int d[8]={0};
static float e[8]={0};
static float y1[4][8];
static float x[8]={328.0,337.0,348.0,380.0,405.0,436.0,501.0,541.0};
static float x1[8]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0} ;
static float y[4][8];
static float w[4]={0.25,0.25,0.25,0.25,};
static float v[4][8]={{0.0},{0.0},{0.0},{0.0}};
static float h[4][4]={{0.0},{0.0},{0.0},{0.0}};
static float r0[8]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
FILE *fp;
fp=fopen("a:\\datasj.txt","r");
if(fp==NULL)
{
printf("\n I cannot open this file\n");
exit(1);
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
fscanf(fp,"%f",&y[i][j]);
fclose(fp);
loop1:for(i=0;i<m;i++)
{for(j=0;j<n;j++)
v[i][j]=y[i][j]-x[j];}
for(i=0;i<m;i++)
{for(j=0;j<m;j++)
for(t=0;t<n;t++)
h[i][j]=h[i][j]+v[i][t]*v[j][t];}
for(i=0;i<m;i++)
{for(j=0;j<m;j++)
if(i>=j)
continue;
else
{
{for(t=0;t<n;t++)
a=a+(v[i][t]-v[j][t])*(v[i][t]-v[j][t]);}
{for(p=0;p<m;p++)
b=b+(h[i][p]-h[j][p])*w[p];}
if(a>0.0)
{ r=-b/a;
{ if(r>0.0)
{if(w[j]<r)
del=w[j];
else
del=r;}
if(r<0.0)
{if(-w[i]>r)
del=-w[i];
else
del=r;}}
z=a*del*del+2*b*del;
if(z<0.0)
{ w[i]=w[i]+del;
w[j]=w[j]-del;
printf("\n%f\n",z);
}
else if(z>=0.0)
continue;
}
}
}
{for(i=0;i<n;i++)
{for(j=0;j<m;j++)
x1[i]=y[j][i]*w[j]+x1[i];}}
{
for(i=0;i<n;i++)
{
r0[i]=abs(x1[i]-x[i]);
r0[i]=r0[i]/x[i];
if(r0[i]<ra)
/* printf("r0[%d]=%.5f it is good data.\n",i,r0[i]);*/
continue;
else if(r0[i]>=ra)
{/* printf("r0[%d]=%.5f it is bad data.\n",i,r0[i]);*/
{if(i>=n-1)
e[i]=x[i];
else
{
{ for(t=0;t<i;t++)
e[t]=x[t];d[t]=r0[t];
/* printf("x[%d]=%.5f\n",t,x[t]);*/}
{
for(s=i;s<n-1;s++)
{ e[s]=x[s+1];d[s]=r0[s+1];
}
/* printf("x[%d]=%.5f\n",s,e[s]);*/
}
printf("\n\n");
{ for(s=0;s<n-1;s++)
x[s]=e[s];r0[s]=d[s]; }
{for(p=0;p<n-1;p++)
printf("x[%d]=%.5f,r0[%d]=%.5f\n",p,e[p],p,r0[p]);}
{for(t=0;t<i;t++)
{for(f=0;f<m;f++)
y1[f][t]=y[f][t];}}
{for(s=i;s<n-1;s++)
{for(f=0;f<m;f++)
y1[f][s]=y[f][s+1];}
}
{for(s=0;s<n-1;s++)
for(f=0;f<m;f++)
y[f][s]=y1[f][s];}
{for(f=0;f<m;f++)
{for(t=0;t<n-1;t++)
printf("%10.3f",y[f][t]);
printf("\n"); }}
} }
{for(s=0;s<n-1;s++)
x1[s]=0.0;}
n=n-1;
getch();
goto loop1;}
}}
fp=fopen("e:\\tian\\jiandata.txt","w");
{for(i=0;i<k;i++)
fprintf(fp,"w[%d]=%.5f\t",i,w[i]);}
fprintf(fp,"\n");
{for(i=0;i<n;i++)
fprintf(fp,"x1[%d]=%.5f,r0[%d]=%.5f\n",i,x1[i],i,r0[i]);}
fclose(fp);
}
输入数据为:
291.8 326.8 361.7 396.7 431.7 466.6 501.6 536.6
353.9 341.8 353.9 361.7 389.7 425.3 486.0 548.8
340.3 363.6 388.5 415.1 443.5 473.9 506.3 541.0
353.9 341.8 353.9 361.7 389.7 425.3 486.0 548.8
输出结果为:
w[0]=0.38639 w[1]=0.50376 w[2]=0.09348 w[3]=0.01636
x1[0]=328.63367,r0[0]=0.00000
x1[1]=338.04202,r0[1]=0.00297
x1[2]=380.21570,r0[2]=0.00000
x1[3]=410.95782,r0[3]=0.01235
x1[4]=445.80121,r0[4]=0.02064
x1[5]=493.92538,r0[5]=0.01397
x1[6]=543.35681,r0[6]=0.00370
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -