⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftl.c

📁 计算前提论域中模糊子集的C语言程序.大家可以参考。
💻 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 + -