In[1]:= SameQ[Dot[1, 2], 1.2]
TrueQ[Dot[1, 2] == 1.2]
a = 1; b = 2;
SameQ[Dot[a, b], a.b]
TrueQ[Dot[a, b] == a.b]
Out[1]= False
Out[2]= False
Out[4]= True
Out[5]= True
我知道这会使用Dot
命令错误。对于上述不同的结果,有人能给我一个明确的共鸣吗?
谢谢!
答案 0 :(得分:9)
a.b
被解释为Dot[a,b]
,然后变量a
和b
被替换,意味着Dot[1,2]
,因此等式成立。这与1.2
不同,其中点代表小数分隔符,而不代表Dot
的内联运算符。
答案 1 :(得分:3)
答案 2 :(得分:2)
查看Hold
和FullForm
下的表达式可以提供信息:
a = 1; b = 2;
SameQ[Dot[a, b], a.b]] //Hold //FullForm
Hold[SameQ[Dot[a, b], Dot[a, b]]]
使用这些命令组合,Mathematica解析但不评估表达式(Hold
),然后显示表达式的长伪内部形式(FullForm
)。
在这种情况下,您可以看到在任何评估发生之前,第二个术语a.b
被解析为Dot[a, b]
。
当.
出现1.2
中的数字时,它会被特别解释为小数点。这类似于其他数字输入格式,例如:1*^6
,可直接识别为1000000
:
1*^6 //Hold //FullForm
比较尝试输入:
a = 1;
a*^6