Python 科學計算-介紹

Python 科學計算

做者 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

1、實驗說明

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

1. 環境登陸

無需密碼自動登陸,系統用戶名shiyanlougithub

2. 環境介紹

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

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

3. 環境使用

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

實驗報告能夠在我的主頁中查看,其中含有每次實驗的截圖及筆記,以及每次實驗的有效學習時間(指的是在實驗桌面內操做的時間,若是沒有操做,系統會記錄爲發呆時間)。這些都是您學習的真實性證實。shell

2、實驗內容

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

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

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

引用

科學計算的要求

可複製 與 可重現 是科學方法的兩塊基石。對於數值工做,遵照這些概念有如下兩點實際意義:

  • 可複製:有須要時論文做者可以從新模擬一次而且複製結果,其餘科學家在進行相同的計算後應當能獲得一樣的結果。

  • 可重現:數值模擬所獲得的結果能夠由方法的獨立實現來重現,或者是徹底不一樣的方法來重現。

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

爲了實現這些目標,咱們須要:

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

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

  • 確保舊代碼與筆記已經備份,爲之後可能的引用作準備

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

管理源代碼的工具

保證科學模擬的可複製與可重現是一個麻煩的工做,不過有不少好的工具能幫到你:

爲何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

此處輸入圖片的描述

相關文章
相關標籤/搜索