2014-03-05 31 views
2

我有一個名爲test1.sage文件:Sage中的標量乘法?

test1.sage:  
     M = Matrix([[1,2,3],[4,5,6]]) 
     R = 1/2*M 
     print R 
     print M 

%run test1.sage 
[1 2 3] 
[4 5 6] 

[0 0 0] 
[0 0 0] 

當我運行.sage報送給我這個隨機零矩陣。但是,在Sage外殼中,它可以一行一行地完美工作,還有什麼想法?

回答

2

你的問題是在Python(2.x)1/2給零。這是一個長期的標準,當然不是唯一的語言。

如果你用Sage運行文件你應該沒問題。

$ sage test1.sage 
[1 2 3] 
[4 5 6] 
[1/2 1 3/2] 
[ 2 5/2 3] 

註釋表明%run必須是IPython的「魔術」功能。我的猜測是,它不是在聖人改變,使之成爲賢者神奇的功能了,下面證實了這一點:

製作只包含print 1/2文件。執行sage test1.sage以獲取目錄中的test1.py文件。然後運行賢者做到這一點:

sage: %run test1.sage 
0 
sage: %run test1.py 
1/2 

我已經打開Trac 15891此,非常感謝!

+0

我的意思是R和M.現在就修正它。 運行在sage shell中用於運行文件。但我仍然不知道爲什麼它將矩陣變成全0。我認爲這可能是一個bug .. –

+0

也爲什麼我的Python 2.6將1/2作爲零? –

+0

劃分整數就是這樣定義的。用%訪問餘數。似乎你運行IPython,並使用python2。 –