?? ftl.c
字號:
#include"math.h";
#include"stdio.h";
#include"conio.h";
#include<process.h>
#include<stdlib.h>
#define N 5 /*前提論域元素數(shù)*/
#define P 5 /*前提論域元素數(shù)*/
main()
{
char ch;
int i,j,k,l;
int u[N]={2,1,0,-1,-2}; /*前提論域*/
int v[P]={2,1,0,-1,-2}; /*結(jié)論論域*/
float s1[N][N]; /*前提論域上的相似矩陣*/
float s2[P][P]; /*結(jié)論論域上的相似矩陣*/
float pe[N][P]= /*已知普通推理矩陣*/
{
1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
0,0,0,0,1
};
float a[N]={0.1,0.3,1.0,0.3,0.1}; /*已知前提論域上的模糊子集*/
float b[P]; /*待求結(jié)論論域上的模糊子集*/
/*-------------開始--------------*/
system("cls");
window(1,1,80,25);
highvideo();
textbackground(1);
textcolor(15);
clrscr();
/*確定前提論域上的相似矩陣S1*/
dmax=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
s1[i][j]=fabs(u[i]-u[j]);
if(s1[i][j]>dmax)dmax=s1[i][j];
};
for(i=0;i<N;i++)
for(j=0;j<N;j++)
s1[i][j]=1-s1[i][j]/dmax;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
s1[i][j]=pow(s1[i][j],3);
/*顯示前提論域上的相似矩陣S1*/
printf("This is S1:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%5.2f",s1[i][j]);
printf("\n");
}
/*確定結(jié)論論域上的相似矩陣S2*/
dmax=0;
for(i=0;i<P;i++)
for(j=0;j<P;j++)
{
s2[i][j]=fabs(v[i]-v[j]);
if(s2[i][j]>dmax)dmax=s2[i][j];
};
for(i=0;i<P;i++)
for(j=0;j<P;j++)
s2[i][j]=1-s2[i][j]/dmax;
for(i=0;i<P;i++)
for(j=0;j<P;j++)
s2[i][j]=pow(s2[i][j],3);
/*顯示前提論域上的相似矩陣S2*/
printf("This is S2:\n");
for(i=0;i<P;i++)
{
for(j=0;j<P;j++)
printf("%5.2f",s2[i][j]);
printf("\n");
}
/*計算結(jié)論論域上的模糊子集B*/
for(i=0;i<N;i++)
for(j=0;j<P;j++)
{
tem=0;l=0;
for(k=0;k<N;k++)
{
t1=s1[i][k]*pe[k][j];
if(pe[k][j]!=0){tem=tem+1;l=l+1);
};
if(l==0) tt[i][j]=tem;
else tt[i][j]=tem/l;
};
for(i=0;i<N;i++)
for(j=0;j<P;j++)
{
tem=0;
for(k=0;k<N;k++)
{
t1=tt[i][k]*s2[k][j];
if(t1>tem) tem=t1;
};
t[i][j]=tem;
};
for(i=0;i<P;i++)
{
tem=0;
for(k=0;k<N;k++)
{
t1=a[k]*t[k][j];
if(t1>tem) tem=t1;
};
b[j]=tem;
};
/*顯示結(jié)論論域上的模糊子集B*/
printf("This is B:\n");
for(j=0;j<P;j++)
printf("%5.2f",b[j]);
printf("\n按任意鍵繼續(xù)!\n");
getch();
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -