📄 decision.cpp
字号:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define n 5
double d0[n]={0.0254,0.1369,0.0354,0.1865,0.2159};
//double d0[n]={0.0424,0.0685,0.0885,0.0799,0.0981};
//double d1[n]={0.0424,0.1369,0.0442,0.1865,0.1373};
//double d1[n]={0.0353,0.1097,0.0354,0.0799,0.0981};
//double d1[n]={0.0254,0.0685,0.0885,0.1331,0.2159};
double d1[n]={0.0310,0.0959,0.0530,0.1331,0.1767};
double grade;
double p=0.5;
double a[n],b[n];
//均值化
/*
void pre()
{
int i;
double s0=0,s1=0;
for(i=0;i<n;i++)
{
s0=s0+d0[i];
s1=s1+d1[i];
}
s0=s0/n;
s1=s1/n;
for(i=0;i<n;i++)
{
a[i]=d0[i]/s0;
b[i]=d1[i]/s1;
}
}
*/
//直接
void pre()
{
int i;
double s0=0,s1=0;
for(i=0;i<n;i++)
{
a[i]=d0[i];
b[i]=d1[i];
}
}
/*
//初值
void pre()
{
int i;
double s0=0,s1=0;
for(i=0;i<n;i++)
{
a[i]=d0[i]/d0[0];
b[i]=d1[i]/d1[0];
}
}
*/
void deng()
{
int i,j;
double ma=0,mi=0,t;
double a1[n],b1[n];
pre(); //1
for(i=0;i<n;i++)
{
a1[i]=a[i]/a[0];
b1[i]=b[i]/b[0];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
t=fabs(a1[i]-b1[j]);
if(t>ma)
ma=t;
else if(t<mi)
mi=t;
}
grade=0;
for(i=0;i<n;i++)
{
grade=grade+(mi+ma*p)/(fabs(a1[i]-b1[i])+ma*p);
}
grade=grade/n;
printf("Deng grade is:%5.4f\n",grade);
}
void euclid()
{
int i,j;
double ma=0,mi=0,t=0,t1=0,t2=0;
double a1[n],b1[n];
pre(); //2
for(i=0;i<n;i++)
{
a1[i]=a[i]/a[0];
b1[i]=b[i]/b[0];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
t1=fabs(a1[i]-b1[j]);
if(t1>ma)
ma=t1;
else if(t1<mi)
mi=t1;
}
t1=0;
for(i=0;i<n;i++)
{
t1=t1+(mi+ma*p)/(fabs(a1[i]-b1[i])+ma*p);//相关系数
}
t1=t1/n;
for(i=0;i<n;i++)
{
t=(mi+ma*p)/(fabs(a1[i]-b1[i])+ma*p);//相关系数
t2=t2+(t1-t)*(t1-t);
}
grade=1-sqrt((1-t1)*(1-t1)+t2/n);
printf("Euclid grade is:%5.4f\n",grade);
}
void abso()
{
int i;
double s0=0,si=0,t=0;
double a1[n],b1[n];
pre(); //3
//零化
for(i=0;i<n;i++)
{
a1[i]=a[i]-a[0];
b1[i]=b[i]-b[0];
}
for(i=1;i<n-1;i++)
{
s0=s0+a1[i];
si=si+b1[i];
t=t+a1[i]-b1[i];
}
s0=fabs(s0+a1[n-1]/2);
si=fabs(si+b1[n-1]/2);
t=fabs(t+a1[n-1]/2-b1[n-1]/2);
grade=(1+s0+si)/(1+s0+si+t);
printf("Abso grade is:%5.4f\n",grade);
}
void rela()
{
int i;
double s0=0,si=0,t=0;
double a1[n],b1[n];
pre();//4
for(i=0;i<n;i++)
{
a1[i]=(a[i]-a[0])/a[0];
b1[i]=(b[i]-b[0])/b[0];
}
for(i=1;i<n-1;i++)
{
s0=s0+a1[i];
si=si+b1[i];
}
s0=s0+a1[n-1]/2;
si=si+b1[n-1]/2;
t=fabs(si-s0);
s0=fabs(s0);
si=fabs(si);
grade=(1+s0+si)/(1+s0+si+t);
printf("Rela grade is:%5.4f\n",grade);
}
void bmodel()
{
int i;
double s0=0,s1=0,s2=0;
double a1[n],b1[n];
pre();//5
//零化
for(i=0;i<n;i++)
{
a1[i]=a[i]-a[0];
b1[i]=b[i]-b[0];
}
for(i=0;i<n;i++)
{
s0=s0+fabs(b1[i]-a1[i]);
}
s0=s0/n;
for(i=0;i<n-1;i++)
{
s1=s1+fabs(b1[i+1]-a1[i+1]-b1[i]+a1[i]);
}
s1=s1/(n-1);
for(i=1;i<n-1;i++)
{
s2=s2+fabs(b1[i+1]-a1[i+1]-2*(b1[i]-a1[i])+b1[i-1]-a1[i-1]);
}
s2=s2/(n-2);
grade=1/(1+s0+s1+s2);
printf("Bmodel grade is:%5.4f\n",grade);
}
void tmodel()
{
int i;
double s1=0,s2=0,t=0;
double a1[n],b1[n];
pre();//6
for(i=1;i<n;i++)
{
s1=s1+fabs(a[i]-a[i-1]);
s2=s2+fabs(b[i]-b[i-1]);
}
s1=s1/(n-1);
s2=s2/(n-1);
for(i=1;i<n;i++)
{
a1[i]=a[i]/s1;
b1[i]=b[i]/s2;
}
grade=0;
for(i=1;i<n;i++)
{
s1=a1[i]-a1[i-1];
s2=b1[i]-b1[i-1];
t=s1*s2;
if(fabs(t)>0.00001)
{
s1=fabs(s1);
s2=fabs(s2);
if(t>0)
t=1;
else
t=-1;
if(s1<=s2)
grade=grade+t*s1/s2;
else
grade=grade+t*s2/s1;
}
}
grade=grade/(n-1);
printf("tmodel grade is:%5.4f\n",grade);
}
void xielv()
{
int i;
double a0=0,b0=0,t0=0,t1=0;
double a1[n],b1[n];
pre();//7
//零化
for(i=0;i<n;i++)
{
a1[i]=a[i]-a[0];
b1[i]=b[i]-b[0];
}
for(i=0;i<n;i++)
{
a0=a0+a1[i];
b0=b0+b1[i];
}
a0=a0/n;
b0=b0/n;
grade=0;
for(i=0;i<n-1;i++)
{
t0=fabs((a1[i+1]-a1[i])/a0);
t1=(b1[i+1]-b1[i])/b0;
grade=grade+(1+t0)/(1+t0+fabs(t0-t1));
}
grade=grade/(n-1);
printf("Xielv grade is:%5.4f\n",grade);
}
void improve()
{
int i,c=4;
double si=0,k0,k1,bi=0,w=0,t=0;
double a1[n],b1[n];
pre();
//零化
for(i=0;i<n;i++)
{
a1[i]=a[i]/a[0];
b1[i]=b[i]/b[0];
}
/*
t=b1[i]-a1[i];
for(i=0;i<n;i++)
{
b1[i]=b[i]-t;
}
*/
for(i=0;i<n;i++)
{
si=si+b1[i];
}
grade=0;
for(i=0;i<n-1;i++)
{
k0=a1[i+1]-a1[i];
k1=b1[i+1]-b1[i];
bi=atan((k1-k0)/(1+k1*k0));
w=1-fabs((b1[i]-a1[i])/(si-a1[i]));
grade=grade+w/(1+c*tan(bi/2));
}
grade=grade/(n-1);
printf("Improve grade is:%5.4f\n",grade);
}
void main()
{
deng();
euclid();
// improve();
abso();
rela();
xielv();
bmodel();
tmodel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -