当前位置:文档之家› 离散数学实验报告

离散数学实验报告

离散数学实验报告重庆交通大学学生实验报告实验课程名称离散数学开课实验室数学实验室学院理学院专业信息与计算科学学生姓名谭冰学号631122020212班级2班开课时间2011 至2012 学年第二学期目录实验一:教材第17页习题(1)(b);教材第39页习题(4)(b)…………3.实验二:教材第127页习题(2)(b);教材第113页习题(2)(b) (9)实验一(此实验包含两题)一、实验内容1.从键盘输入两个命题变元P和Q的真值,求它们的非,合取,析取,条件和双条件的真值。

2.求任意一个命题公式的真值表。

二、实验目的熟悉掌握命题逻辑中的联接词,真值表,主范式等,进一步能用它们来解决实际问题。

三、实验环境MATLAB软件的编程环境实现四、实现两题的算法与原理(教材第17页习题(1)(b),39页习题(4)(d))根据析取,合取的定义可用简单的算术运算求出结果,并将结果转换成逻辑值。

同样根据等价关系可将条件式及双条件式转换成析取和合取的运算。

五、实验数据及结果分析实验所用函数:function y=Not(x)if x==0y=1;else y=0;endfunction m=Vee(x,y)if x==0&y==0m=0;else m=1;endfunction y=Wedge(P,Q)if P==1&Q==1y=1;else y=0;endfunction y=If(P,Q)y=Vee(Not(P),Q);endfunction y=Hh(P,Q,R)y=Vee(Wedge(P,R),If(P,Q));endfunction y=Ss(P,Q,R)y=Wedge(If(P,Wedge(Q,R)),If(Not(P),Wedge(Not(Q),Not(R))));endA=[0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1];P=A(:,1); Q=A(:,2); R=A(:,3);In=input(‘请输入含有三个变元的命题公式:’);S={‘真值表为’};T=num2str([P,Q,R,In]);T%保存命名为Zzb'此为求(P→(Q∧R))∧(¬P→(¬Q∧¬R))主析取范式、主合取范式的程序,并判断是否为重言式,以K代替其真值'P=[0 0 0 0 1 1 1 1];Q=[0 0 1 1 0 0 1 1];R=[0 1 0 1 0 1 0 1];' P Q R'Z=[P;Q;R]'K=Wedge(If(P,Wedge(Q,R)),If(Not(P),Wedge(Not(Q),Not(R))));'主析取范式:'A=[];V=[];for i=find(K)switch icase 1A=[A,'(¬P∧¬Q∧¬R)∨']; case 2A=[A,'(¬P∧¬Q∧R)∨'];case 3A=[A,'(¬P∧Q∧¬R)∨'];case 4A=[A,'(¬P∧Q∧R)∨'];case 5A=[A,'(P∧¬Q∧¬R)∨'];case 6A=[A,'(P∧¬Q∧R)∨'];case 7A=[A,'(P∧Q¬∧R)∨'];case 8A=[A,'(P∧Q∧R)'];otherwise'此为永假式'endendA'主合取范式'for i=find(Not(K))switch icase 1V=[V,'(P∨Q∨R)∧'];case 2V=[V,'(P∨Q¬∨R)∧']; case 3V=[V,'(P∨¬Q∨R)∧']; case 4V=[V,'(P∨¬Q∨¬R)∧']; case 5V=[V,'(¬P∨Q∨R)∧']; case 6V=[V,'(¬P∨Q∨¬R)∧']; case 7V=[V,'(¬P∨¬Q∨R)∧']; case 8V=[V,'(¬P∨¬Q∨¬R)']; otherwise'此为永真式'endendVif all(K)==1'K是重言式'else'K不是重言式'end %保存文件名为ZyP17 (1) (b):(P∧R)∨(P→Q)运行过程及结果:>> P=[0 0 0 0 1 1 1 1],Q=[0 0 1 1 0 0 1 1],R=[0 1 0 1 0 1 0 1]P =0 0 0 0 1 1 1 1Q =0 0 1 1 0 0 1 1R =0 1 0 1 0 1 0 1>> Zzb本程序可以求真值表, 请输入含有三个变元的命题公式:Vee(Wedge(P,R),If(P,Q))T =0 0 0 10 0 1 10 1 0 10 1 1 11 0 0 01 0 1 11 1 0 11 1 1 1P39 (4) (d):(P→(Q∧R)) ∧(¬P→(¬Q∧¬R))运行过程及结果:>>Zyans =此为求(P→(Q∧R))∧(¬P→(¬Q∧¬R))主析取范式、主合取范式的程序,并判断是否为重言式,以K代替其真值ans =P Q RZ =0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1ans =主析取范式:A =(¬P∧¬Q∧¬R)∨(P∧Q∧R)ans =主合取范式V =(P∨Q¬∨R)∧(P∨¬Q∨R)∧(P∨¬Q∨¬R)∧(¬P∨Q∨R)∧(¬P∨Q∨¬R)∧(¬P∨¬Q∨R)ans =K不是重言式六、收获与体会通过实验使我了解了一些数理逻辑问题可以通过用计算编程的方法来解决,一些定理的证明同样也可以用计算机通过将命题符号化来编程解决。

由于计算机运行速度很快,而数理逻辑值只有0和1值,只要用程序合理的表述问题,那么就能将问题解答出来。

再次,它提高了我的计算机编程能力,使我感觉到了编程的乐趣,提供给我无穷的继续学习编程语言的的动力。

实验二(此实验包含两题)一、实验内容1.求有限集上给定关系的自反,对称和传递闭包。

2.求有限集上等价关系的数目。

3.求解商集,输入集合和等价关系,求相应的商集。

二、实验目的掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。

理解等价类的概念,掌握等价类的求解方法。

三、实验环境MATLAB软件的编程环境实现四、实验原理和实现过程(教材第127页习题(2)(b);教材第113页习题(2)(b))1.先写出要求解的函数,将其保存。

然后在软件中输入相应的矩阵或集合,再利用函数求出相应的结果。

2.写一个M文件,输入一个关系R,判断其是否具有自反性。

五、实验数据及结果分析实验所用函数:function Z=Cup(A,B)C=A+B;Z=ones(size(C));Z(find(C==0))=0;endfunction Z=Warshall(A)Z=A;lengthZ=length(Z);for j=1:1:lengthZfor i=1:1:lengthZif Z(i,j)==1Z(i,:)=Cup(Z(i,:),A(j,:));endendendendfunction y=Mm(A,B)a=max(A);M=zeros(a,a);[i,j]=size(B);for a=1:1:ib=B(a,1);c=B(a,2);M(b,c)=1;end[s,r]=size(M);for d=1:1:sfor e=1:1:rif d==econtinue;endendendif M(d,e)==1'此关系具有自反性'else'此关系不具有自反性'endendP127(2)(b):求关系R={<a,a>,<a,b>,<b,c>,<c,b>}的传递闭包。

实验过程及结果:>> A={'a','b','c'};R={'<a,a>','<a,b>','<b,c>','<c,>'};C=[1 1 0;0 0 1;0 1 0];>> Warshall(C)ans =1 1 10 1 10 1 1P113(2)(b):A={1,2,3,4},R={<1,3>,<1,4>,<2,3>,<2,4>,<3,4>},判断R是否具有自反性。

实验过程及结果:>>A=[1,2,3,4];R=[1,3;1,4;2,3;2,4;3,4];>>Mm(A,R)ans=此关系不具有自反性六、收获与体会写这个程序花了不少时间,而且时间相对集中,除了上课外,,在电脑前都是在做这个,连续做了几天,刚开始时并没有完全按照软件步骤去写,而是知道总体方框后,一个模块一个模块去求解,至于每个模块怎么写,则是在写的过程中逐步建立和完善的。

相关主题