Python科學計算(一)


作者 J.R. Johansson (robert@riken.jp) http://dml.riken.jp/~rob/

最新版本的 IPython notebook

課程文件 http://github.com/jrjohansson/scientific-python-lectures.

作者其他的 notebook http://jrjohansson.github.com.

一、實驗說明

本課主要介紹科學計算,實驗環境的安裝以及使用等內容。

1. 環境登錄

無需密碼自動登錄,系統用戶名shiyanlou

2. 環境介紹

本實驗環境采用帶桌面的Ubuntu Linux環境,實驗中會用到桌面上的程序:

  1. Spyder : Spyder 是一個類 MATLAB IDE 專注於科學計算的 Python IDE。

3. 環境使用

代碼編寫與命令運行都會在 Spyder IDE 上進行。

實驗報告可以在個人主頁中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操作的時間,如果沒有操作,系統會記錄為發呆時間)。這些都是您學習的真實性證明。

二、實驗內容

計算在科學中所扮演的角色

傳統意義上科學被分為兩類:經驗科學與理論科學,但在過去的幾十年中計算漸漸成為了科學重要的一部分。科學計算在接近理論的同時又包含很多實驗工作的特性,因此常常被看作是科學的第三分支。在大多數領域中,計算工作是對經驗與理論的一個重要補充,現今大量的論文都包含了數值計算,計算機模擬和建模。

在經驗科學與理論科學的領域中已經建立起了完善的規則使得研究結果可以被獲取。而在計算機科學中卻沒有好的指導規范規定源代碼與數據必須發布,最近這個議題越來越受到人們的關注,一些著名的期刊,包括科學,都在呼吁論文作者提供處理數據的源代碼,這場關於如何促進源代碼分發的討論將持續進行。

引用

科學計算的要求

可復制 與 可重現 是科學方法的兩塊基石。對於數值工作,遵守這些概念有以下兩點實際意義:

  • 可復制:有需要時論文作者能夠重新模擬一次並且復制結果,其他科學家在進行相同的計算后應當能得到同樣的結果。

  • 可重現:數值模擬所得到的結果可以由方法的獨立實現來重現,或者是完全不同的方法來重現。

結論:一個可靠的科學結果應當是可重現的, 一個可靠的科學研究應當是可復制的。

為了實現這些目標,我們需要:

  • 准確地記錄下產生論文數據與圖表的源代碼及其版本號。

  • 記錄下所使用的軟件的版本號等信息,確保實驗環境是能夠還原的。

  • 確保舊代碼與筆記已經備份,為以后可能的引用做准備

  • 在理想情況下將源代碼發布到線上,使其它對其感興趣的科學家能很容易得到它。

管理源代碼的工具

保證科學模擬的可復制與可重現是一個麻煩的工作,不過有很多好的工具能幫到你:

為什么Python適合科學計算?

  • Python 在科學計算中有着重要地位:

    • 大量的社區用戶, 易於尋求幫助與查詢文檔。
  • 在科學計算庫方面有着近乎完美的生態系統:

  • 極佳的性能 —— 集成了用 C 與 Fortran 寫的經過高度優化的代碼:

    • blas, altas blas, lapack, arpack, Intel MKL, ...
  • 良好的支持

    • 多進程多線程平行計算
    • 進程間通信 (MPI)
    • GPU 計算 (OpenCL 與 CUDA)
  • 容易獲取,適合高性能計算機集群。

  • 不需要許可證費用。

科學 Python 軟件棧

此處輸入圖片的描述

Python 環境

這里介紹幾種科學計算會使用到的 python 環境

IPython

IPython是一種基於Python的交互式解釋器。相較於原生的Python Shell,IPython提供了更為強大的編輯和交互功能。

此處輸入圖片的描述IPython 的特性包括:

  • 命令歷史記錄
  • Tab 自動補全
  • 對象自省,自動提取對象的文檔內容
  • 與操作系統 shell 有良好的交互
  • 支持后端多平行線程,可以運行在計算集群或者雲服務上

IPython notebook

IPython notebook是一個基於HTML的 notebook 環境 , 類似於 Mathematica 或者 Maple。

此處輸入圖片的描述

盡管使用web瀏覽器作為圖形接口,IPython notebooks 一般都在本地運行,要開啟一個新的 IPython notebook,可以運行以下命令:

$ ipython notebook <directory> 

Spyder

Spyder 是一個類 MATLAB IDE 的 Python IDE。 它擁有傳統IDE環境所擁有的的優點。

此處輸入圖片的描述Spyder 的優點:

  • 強大的代碼編輯器,動態代碼自省,內集成 python 調試器。
  • 變量瀏覽器,IPython 命令行終端。
  • 集成了文檔與幫助。

Python的版本

Python 有兩個版本:Python2 與 Python3。Python3 最終會取代 Python2, 但它並沒有兼容 Python2, 大量現存的 python 代碼與包是用 Python2 寫的,它也仍然是最廣泛使用的版本。不過在本實驗中,Python2 或是Python3都是可以的。 輸入以下命令查看 Python 版本:

$ python --version
Python 2.7.3 $ python3.2 --version Python 3.2.3 

安裝

Linux

在 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

Windows 缺乏一個好的包管理系統,所以搭建一個 Python 環境最簡單的方法就是安裝一個科學計算發行版:

延伸閱讀

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



此處輸入圖片的描述

License

本作品在 知識共享許可協議3.0 下許可授權。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM