运用matlab求公式 的主析取范式与主合取范式,并求公式的成真赋值和成假赋值。

  • 时间:
  • 来源:互联网
  • 文章标签:

求公式 在这里插入图片描述
的主析取范式与主合取范式,并求公式的成真赋值和成假赋值。

a1 = [0,0,0,0,1,1,1,1];
a2 = [0,0,1,1,0,0,1,1];
a3 = [0,1,0,1,0,1,0,1];
a4 = [1,1,0,0,1,1,0,0];
fprintf('在本题中用!代表非,&代表合取,->代表蕴涵,||代表析取')
fprintf('\n');

%输出p
fprintf('            p');
for i=1:8
    fprintf(' %d ',a1(i));
end
fprintf('\n');

%输出q
fprintf('            q');
for i = 1:8
    fprintf(' %d ',a2(i));
end
fprintf('\n');

%输出r
fprintf('            r');
for i = 1:8
    fprintf(' %d ',a3(i));
end
fprintf('\n');

%输出!q
fprintf('           !q');
for i = 1:8
    fprintf(' %d ',a4(i));
end
fprintf('\n');
  
%p->!q代表的数组赋值
for i = 1:8
    if a1(i)==1&&a4(i)==1
        a5(i)=1;
    elseif a1(i)==0&&a4(i)==0
        a5(i)=1;
    elseif a1(i)==1&&a4(i)==0
        a5(i)=0;
    else
        a5(i)=1;
    end
end

%输出p->!q
fprintf('        p->!q');
for i = 1:8
    fprintf(' %d ',a5(i));
end
fprintf('\n');

%给(p->!q)->r数组赋值
for i = 1:8
    if a5(i)==1&&a3(i)==1
        a6(i)=1;
    elseif a5(i)==0&&a3(i)==0
        a6(i)=1;
    elseif a5(i)==1&&a3(i)==0
        a6(i)=0;
    else
        a6(i)=1;
    end
end

%输出(p->!q)->r
fprintf(' (p->!q)->r');
for i = 1:8
    fprintf(' %d ',a6(i));
end
fprintf('\n');

%输出成真赋值
fprintf('  成真赋值:')
for i = 1:8
    if a6(i)==1
        fprintf('%d%d%d ',a1(i),a2(i),a3(i))
    end
end
fprintf('\n');

%输出成假赋值
fprintf('  成假赋值:')
for i = 1:8
    if a6(i)==0
        fprintf('%d%d%d ',a1(i),a2(i),a3(i))
        a7(i)=a1(i)*2*2+a2(i)*2+a3(i);
    end
end
fprintf('\n');

%输出主合取范式
fprintf('输出主合取范式:')
for i = 1:8
    if a6(i)==0
        fprintf('M%d ',a7(i));
    end
end
fprintf('\n');

%输出主析取范式
fprintf('输出主析取范式:')
   fprintf('m1 V m2 V m3 V m5 V m6 V m7');
fprintf('\n');



以上为所有内容,谢谢




        

本文链接http://www.taodudu.cc/news/show-1781798.html