向各位CSers隆重介紹一位好朋友,它聰明伶俐、優雅大方、功能強大,而且它會向你坦白一切,因為它是開源自由軟件。如果你能交上這樣的朋友,它一定能給你很大的幫助,它的名字就叫Sage。
如何使用Sage?
方法1
通過瀏覽器訪問SageMathCell(無需帳號登錄,缺點就是不能保存文檔。)或者SageMathCell(需要通過帳號登錄,可保存相關文檔。),即可享受Sage的各種功能!
方法2
下載Sage源代碼或安裝包,在Linux下或者在Mac OS下安裝一個Sage,很方便。
方法3
如果你是Windows用戶,其實也很方便,卸載Windows再裝一個Linux唄。或者用方法1。
Sage能干什么?
1. 計算
實際情況就是,我們學了計算機,懂這個那個,但是不精通計算,對不?Sage主要在計算上幫我們大忙。你總不會以為下面這些工作你很“精通”吧?
例子0,來一個容易的,求兩個整數之和或者積。
sage: 123456789 + 987654321 1111111110 sage: 111111111*111111111 12345678987654321
例子1,想知道2的1000次方是多少?
sage: 2**1000 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
例子2,想知道2的1279次方減1是否素數?
sage: is_prime(2**1279 - 1) True
例子3,對函數 f(x) = x^x 進行求導。
sage: derivative(x^x, x) x^x*(log(x) + 1)
例子4,對某個矩陣求其逆矩陣,或者求矩陣的特征值。
sage: A = Matrix([[1,0,0,0],[1,1,0,0],[1,2,1,0],[1,3,3,1]]) sage: A.inverse() [ 1 0 0 0] [-1 1 0 0] [ 1 -2 1 0] [-1 3 -3 1] sage: A.eigenvalues() [1, 1, 1, 1]
例子5,作圖。一個命令作出的正態分布圖。
sage: plot(gs(x, 3, 1), x, 0, 10)
gs這個函數定義如下,完全是Python的語法:
def gs(x,mu,sigma): a = 1/(sqrt(2*3.1415926)*sigma) b = -(x - mu)^2/(2*sigma^2) return a*exp(b)
當然,例子還有很多,數不勝數。然而,怎么舉例都顯得小看了Sage,因為它幾乎無所不能。其實,學習使用Sage除了讓它幫忙計算,還主要因為它可以幫助我們......
2. 教學
Sage可以幫助我們學習。學什么?使用Sage進行教學的大學課程包括但肯定定不局限于此:
a、高等數學: 求導數、求積分、求極限、作圖.....
b、線性代數: 高斯消元、Eigenvalue、Determinant.....
c、概率論
d、算法
e、計算機安全學
f、組合數學、數論、離散數學
g、抽象代數
Sage在教學中的好處就是,把所有的理論都通過可以實踐的程序呈現出來,把抽象的內容以直觀的方法表現出來,增強課本的可讀性,增強學習的趣味性,也可提高學習者的主動性。
3. 編程
Sage是一門強大的編程語言,語法與Python基本相同。你甚至可以把Sage理解為擴展了非常多功能的Python。同時,Sage與很多計算機軟件、程序設計語言有非常優雅的結合,比如,Sage的輸出可以方便地與LaTex結合在一起。
由于Python已經得到廣泛應用,無論是老程序員還是新入門者,選擇Sage都顯得非常恰當。老程序員會更容易上手,無需改變什么;而新入門者也無需擔心選擇Sage所帶來的局限性。
4. 科研
Sage當然是科研的好幫手:統計、高精度計算、仿真建模等。想參加大學生數學建模比賽的同學能不關注?
如何學習Sage
目前國外大量的教材支持Sage的使用,因為Sage是開源的自由軟件。因此,建議是在網上檢索相關的教材。其次,Sage的網頁上已經集結了海量的教材,微積分、線性代數、數論等各種指南應有盡有。加上,Sage的使用本身就非常簡單,稍微掌握一點命令就可以工作,入門門檻極低,大家完全有能力自己學習。也許這個簡明友好的入門能立即拉近你與Sage的距離,請不要猶豫地點開它!這一份教程也非常不錯,只可惜,看起來它一直停留在沒有完成的狀態。
另外,如果有人向你推薦MATLAB,你就可以在向他請教的同時,適時向他推薦一把Sage:開源的,免費,別老用盜版。
Sage的缺點
Sage的缺陷也是很明顯的,主要體現在:很多功能還有待完善;有不少功能需要統一或者協調一致性;開源同時也帶來了開發的困難。W. Stein,Sage的一位重要的開發者對Sage的未來也表示了擔憂和負面的評價。他很有可能已經離開高校,成立公司專注于Sage開發,因為無法獲取資助與終身教職,戳開這里也許可以看一點八卦。
困難是有的,缺點是有的。然而,只要人類還充滿對自由的渴望,開源自由軟件就會有美好的未來。