2011-05-18 45 views
4
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命令錯誤。任何人都可以給我一個明確的共鳴,以上述不同的結果?在Mma中錯誤地使用Dot命令時出現問題

謝謝!

回答

9

a.b被解釋爲Dot[a,b]然後變量ab被取代,這意味着Dot[1,2]因此等號成立。這與1.2不同,其中點代表小數點分隔符,不代表Dot的內聯運算符。

+0

感謝霍華德,解釋得很清楚! – FreshApple 2011-05-18 05:07:39

+1

更多信息:如果您想要使用像1和2這樣的參數的中綴點,則需要添加一些空格:1。 2 ===點[1,2] – 2011-05-18 05:07:42

+0

謝謝,莫伊蘭。真的非常有用和廣泛! – FreshApple 2011-05-18 05:16:22

3

enter image description here

當你寫1.2,MMA可以理解一些(又名6/5),但如果你寫{1, 1}.{2, 2} or a.b MMA的使用載體能夠理解的scalar product,像往常一樣在任何一本書。

HTH!

2

它可以是信息性HoldFullForm下查看的表達式:

a = 1; b = 2; 
SameQ[Dot[a, b], a.b]] //Hold //FullForm 
Hold[SameQ[Dot[a, b], Dot[a, b]]]

隨着命令的這種組合,數學解析,但不計算表達式(Hold),然後示出了長表達式的僞內部形式(FullForm)。

在這種情況下,您可以看到在進行任何評估之前,第二項a.b被解析爲Dot[a, b]

.1.2中的數字一起出現時,它被特殊解釋爲小數點。這是類似於其他數字輸入格式,如:1*^6被直接確認爲1000000

1*^6 //Hold //FullForm 

比較試圖進入:

a = 1; 

a*^6 
相關問題