做者 J.R. Johansson (robert@riken.jp) http://dml.riken.jp/~rob/php
最新版本的 IPython notebookhtml
課程文件 http://github.com/jrjohansson/scientific-python-lectures.python
做者其餘的 notebook http://jrjohansson.github.com.linux
本課主要介紹科學計算,實驗環境的安裝以及使用等內容。git
無需密碼自動登陸,系統用戶名shiyanlougithub
本實驗環境採用帶桌面的Ubuntu Linux環境,實驗中會用到桌面上的程序:web
代碼編寫與命令運行都會在 Spyder IDE 上進行。sql
實驗報告能夠在我的主頁中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操做的時間,若是沒有操做,系統會記錄爲發呆時間)。這些都是您學習的真實性證實。shell
傳統意義上科學被分爲兩類:經驗科學與理論科學,但在過去的幾十年中計算漸漸成爲了科學重要的一部分。科學計算在接近理論的同時又包含不少實驗工做的特性,所以經常被看做是科學的第三分支。在大多數領域中,計算工做是對經驗與理論的一個重要補充,現今大量的論文都包含了數值計算,計算機模擬和建模。apache
在經驗科學與理論科學的領域中已經創建起了完善的規則使得研究結果能夠被獲取。而在計算機科學中卻沒有好的指導規範規定源代碼與數據必須發佈,最近這個議題愈來愈受到人們的關注,一些著名的期刊,包括科學,都在呼籲論文做者提供處理數據的源代碼,這場關於如何促進源代碼分發的討論將持續進行。
Reproducible Research in Computational Science, Roger D. Peng, Science 334, 1226 (2011).
Shining Light into Black Boxes, A. Morin et al., Science 336, 159-160 (2012).
The case for open computer programs, D.C. Ince, Nature 482, 485 (2012).
可複製 與 可重現 是科學方法的兩塊基石。對於數值工做,遵照這些概念有如下兩點實際意義:
可複製:有須要時論文做者可以從新模擬一次而且複製結果,其餘科學家在進行相同的計算後應當能獲得一樣的結果。
可重現:數值模擬所獲得的結果能夠由方法的獨立實現來重現,或者是徹底不一樣的方法來重現。
結論:一個可靠的科學結果應當是可重現的, 一個可靠的科學研究應當是可複製的。
爲了實現這些目標,咱們須要:
準確地記錄下產生論文數據與圖表的源代碼及其版本號。
記錄下所使用的軟件的版本號等信息,確保實驗環境是可以還原的。
確保舊代碼與筆記已經備份,爲之後可能的引用作準備
在理想狀況下將源代碼發佈到線上,使其它對其感興趣的科學家能很容易獲得它。
保證科學模擬的可複製與可重現是一個麻煩的工做,不過有不少好的工具能幫到你:
版本控制系統 (RCS) 軟件:
hg
svn
線上源代碼倉庫:
Python 在科學計算中有着重要地位:
在科學計算庫方面有着近乎完美的生態系統:
極佳的性能 —— 集成了用 C 與 Fortran 寫的通過高度優化的代碼:
良好的支持
容易獲取,適合高性能計算機集羣。
不須要許可證費用。
這裏介紹幾種科學計算會使用到的 python 環境
IPython是一種基於Python的交互式解釋器。相較於原生的Python Shell,IPython提供了更爲強大的編輯和交互功能。
IPython 的特性包括:
IPython notebook是一個基於HTML的 notebook 環境 , 相似於 Mathematica 或者 Maple。
儘管使用web瀏覽器做爲圖形接口,IPython notebooks 通常都在本地運行,要開啓一個新的 IPython notebook,能夠運行如下命令:
$ ipython notebook <directory>
Spyder 是一個類 MATLAB IDE 的 Python IDE。 它擁有傳統IDE環境所擁有的的優勢。
Spyder 的優勢:
Python 有兩個版本:Python2 與 Python3。Python3 最終會取代 Python2, 但它並無兼容 Python2, 大量現存的 python 代碼與包是用 Python2 寫的,它也仍然是最普遍使用的版本。不過在本實驗中,Python2 或是Python3都是能夠的。 輸入如下命令查看 Python 版本:
$ python --version
Python 2.7.3 $ python3.2 --version Python 3.2.3
在 Ubuntu Linux 中安裝科學計算所用的工具:
$ sudo apt-get install python ipython ipython-notebook $ sudo apt-get install python-numpy python-scipy python-matplotlib python-sympy $ sudo apt-get install spyder
Windows 缺少一個好的包管理系統,因此搭建一個 Python 環境最簡單的方法就是安裝一個科學計算髮行版:
既然有不一樣版本的 Python 且每一個 Python包有本身的發佈週期與版本號,那麼就須要記錄下全部不一樣軟件包的版本號爲了可以重現 IPython notebook,保證 notebook 中的代碼運行結果是一致的。 爲了鼓勵記錄版本號這一行爲,做者寫了一個 IPython 擴展,可以幫助生成版本號表格,使用步驟以下:
安裝 IPython 擴展,運行:
# you only need to do this once %install_ext http://raw.github.com/jrjohansson/version_information/master/version_information.py Installed version_information.py. To use it, type: %load_ext version_information
運行下列代碼生成版本表格:
%load_ext version_information %version_information numpy, scipy, matplotlib, sympy