📄 ftl.c
字号:
#include"math.h";
#include"stdio.h";
#include"conio.h";
#include<process.h>
#include<stdlib.h>
#define N 5 /*前提论域元素数*/
#define P 5 /*前提论域元素数*/
main()
{
char ch;
int i,j,k,l;
int u[N]={2,1,0,-1,-2}; /*前提论域*/
int v[P]={2,1,0,-1,-2}; /*结论论域*/
float s1[N][N]; /*前提论域上的相似矩阵*/
float s2[P][P]; /*结论论域上的相似矩阵*/
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]; /*待求结论论域上的模糊子集*/
/*-------------开始--------------*/
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");
}
/*确定结论论域上的相似矩阵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");
}
/*计算结论论域上的模糊子集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;
};
/*显示结论论域上的模糊子集B*/
printf("This is B:\n");
for(j=0;j<P;j++)
printf("%5.2f",b[j]);
printf("\n按任意键继续!\n");
getch();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -