gpt4 book ai didi

wolfram-mathematica - 关于用 Mathematica 打印逻辑表的问题

转载 作者:行者123 更新时间:2023-12-04 08:18:08 25 4
gpt4 key购买 nike

背景:
另见:http://mathworld.wolfram.com/TruthTable.html

Mathematica 提供了以下函数。

 TruthTable[op_, n_] := 
Module[{l =
Flatten[Outer[List, Sequence @@ Table[{True, False}, {n}]],
n - 1], a = Array[A, n]},
DisplayForm[
GridBox[Prepend[Append[#, op @@ #] & /@ l, Append[a, op @@ a]],
RowLines -> True, ColumnLines -> True]]]

我打印了一张 nand 表,如下所示:
 TruthTable[Not[And[#1, #2]] &, 2]

A[1] A[2] !(A[1]&&A[2])
True True False
True False True
False True True
False False True

正如预期的那样,除了标题之外,我想使用 P、Q 或 A、B 作为变量。
  • 问:我不太明白代码中A的用法。请给出意见。 (也许我用的函数不对?)
  • 最佳答案

    提供的代码不允许您为放入逻辑运算的变量选择符号或符号列表。相反,它只是构造了一个形式为 {A[1],...,A[n]} 的变量列表。 .

    允许用户提供变量列表(和一些基本参数检查)的代码的最小修改类似于

    TruthTable[op_, n_Integer?Positive, symbs_List] := Module[{
    l = Flatten[Outer[List, Sequence @@ Table[{True, False}, {n}]], n - 1]},
    DisplayForm[GridBox[Prepend[Append[#, op @@ #] & /@ l,
    Append[symbs, op @@ symbs]], RowLines -> True,
    ColumnLines -> True]]] /; Length[symbs] == n

    TruthTable[op_, n_Integer?Positive, symb_String: "A"] :=
    TruthTable[op, n, Array[Symbol[symb], n]]

    第一个定义将打印任何给定变量列表的真值表(可以是任何表达式,但简单的符号或字符串看起来最合理)。如果给定两个参数,第二个定义的工作方式与您提供的原始代码完全相同,可选的第三个参数是用于构造真值表中使用的符号的字符串。

    然后可以将 nand 真值表打印为
    TruthTable[Not[And[#1, #2]] &, 2, {P, Q}]

    nand

    TraditionalForm中看起来稍微好一点
    TruthTable[Not[And[#1, #2]] &, 2, {P, Q}] // TraditionalForm

    nand v2

    如果您使用内置 Nand 甚至更整洁运算符(这只是 Not[And[##]]& 的一种漂亮形式)
    TruthTable[Nand, 3, {P, Q, R}] // TraditionalForm

    nand v3

    经过反射(reflection),整数参数 nTruthTable如果您提供一个显式的变量列表,那么 function 可能有点多余。我把它作为练习留给读者修改函数,以便它在没有它的情况下工作...... :)

    关于wolfram-mathematica - 关于用 Mathematica 打印逻辑表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370874/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com