在Mma中错误地使用Dot命令时出现的问题

时间:2011-05-18 04:41:52

标签: wolfram-mathematica

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命令错误。对于上述不同的结果,有人能给我一个明确的共鸣吗?

谢谢!

3 个答案:

答案 0 :(得分:9)

a.b被解释为Dot[a,b],然后变量ab被替换,意味着Dot[1,2],因此等式成立。这与1.2不同,其中点代表小数分隔符,而不代表Dot的内联运算符。

答案 1 :(得分:3)

enter image description here

当你写1.2时,Mma理解一个数字(也就是6/5),但是如果你写{1, 1}.{2, 2} or a.b Mma理解scalar product,就像任何使用向量的书一样。

HTH!

答案 2 :(得分:2)

查看HoldFullForm下的表达式可以提供信息:

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