# 用Python做科學計算
版權聲明
本書的著作權歸作者(HYRY Studio)所有。你可以:
* 下載、保存以及打印本書
* 網絡鏈接、轉載本書的部分或者全部內容,但是必須在明顯處提供讀者訪問本書發布網站的鏈接
* 在你的程序中任意使用本書所附的程序代碼,但是由本書的程序所引起的任何問題,作者不承擔任何責任
你不可以:
* 以任何形式出售本書的電子版或者打印版
* 擅自印刷、出版本書
* 以紙媒出版為目的,改寫、改編以及摘抄本書的內容
* 在課程設計、畢業設計以及作業中大段摘抄本書文字,或直接使用本書的程序代碼
使用說明
本書使用[reStructuredText](http://docutils.sourceforge.net/rst.html)編寫,采用[Sphinx](http://sphinx.pocoo.org)發布。在此基礎上添加了評論功能,你可以在hyry.dip.jp的在線版本中點擊章節標題前面的評論按鈕,對每個章節進行評論。推薦使用IE7.0以上、FireFox、Google Chome等瀏覽器閱讀本書。
本書有兩個鏡像地址:
* [http://hyry.dip.jp/pydoc](http://hyry.dip.jp/pydoc) (每日更新)
* [http://pyscin.appspot.com/html/index.html](http://pyscin.appspot.com/html/index.html) (每周更新)
請使用下面的鏈接下載各種打包版本,其中Html打包版本格式最為正確,CHM和PDF版都多少有些問題。
[下載Html打包版](http://hyry.dip.jp/files/scipydoc.zip) [下載CHM版](http://hyry.dip.jp/files/scipydoc.chm) [下載PDF版](http://hyry.dip.jp/files/scipydoc.pdf) [下載源代碼](http://hyry.dip.jp/files/scipycode.zip)
另外,你還可以通過[Google文檔](http://docs.google.com/leaf?id=0B6aBwV_8NoD-ZjBkNmYxMjUtMTVkOC00MGI1LTg2M2UtMTk0MzhiMzRiNWZi&hl=en)和 [ZoomQuiet.org](http://www.zoomquiet.org/share/doc/HYRY-scipydoc/)(國內下載快速)下載PDF版本
請查看 [_最近更新_](update_list.html) 了解最新添加的內容
關于HYRY Studio
* HYRY Studio首頁: [http://hyry.dip.jp](http://hyry.dip.jp)
* 博客地址: [http://hyry.dip.jp/blogt.py](http://hyry.dip.jp/blogt.py)
Python是一種面向對象的、動態的程序設計語言。具有非常簡潔而清晰的語法,適合于完成各種高層任務。它既可以用來快速開發程序腳本,也可以用來開發大規模的軟件。
隨著NumPy, SciPy, Matplotlib, Enthought librarys等眾多程序庫的開發,Python越來越適合于做科學計算、繪制高質量的2D和3D圖像。和科學計算領域最流行的商業軟件Matlab相比,Python是一門通用的程序設計語言,比Matlab所采用的腳本語言的應用范圍更廣泛,有更多的程序庫的支持。雖然Matlab中的許多高級功能和toolbox目前還是無法替代的,不過在日常的科研開發之中仍然有很多的工作是可以用Python代勞的。
本書將介紹如何用Python開發科學計算的應用程序,除了介紹數值計算之外,我們還將著重介紹如何制作交互式的2D、3D圖像;如何設計精巧的程序界面;如何和C語言所編寫的高速計算程序結合;如何編寫聲音、圖像處理算法。
閱讀本書你需要學習過Python語言的一些基礎知識,對面向對象的程序開發有所了解。有關Python語言基礎的知識,可以參考:
啄木鳥社區的Python圖書概覽: [http://wiki.woodpecker.org.cn/moin/PyBooks](http://wiki.woodpecker.org.cn/moin/PyBooks)
本書中的所有示例均在Windows XP系統下采用Python(x,y)通過測試。如果你覺得安裝眾多的Python程序庫很麻煩,不妨下載安裝Python(x,y)。請閱讀:[_軟件包的安裝和介紹_](install.html)
## 基礎篇
科學計算所用到的各種庫的入門介紹
* [軟件包的安裝和介紹](install.html)
* [安裝軟件包](install.html#id2)
* [函數庫介紹](install.html#id7)
* [NumPy-快速處理數據](numpy_intro.html)
* [ndarray對象](numpy_intro.html#ndarray)
* [ufunc運算](numpy_intro.html#ufunc)
* [矩陣運算](numpy_intro.html#id8)
* [文件存取](numpy_intro.html#id9)
* [SciPy-數值計算庫](scipy_intro.html)
* [最小二乘擬合](scipy_intro.html#id1)
* [函數最小值](scipy_intro.html#id2)
* [非線性方程組求解](scipy_intro.html#id3)
* [B-Spline樣條曲線](scipy_intro.html#b-spline)
* [數值積分](scipy_intro.html#id4)
* [解常微分方程組](scipy_intro.html#id5)
* [濾波器設計](scipy_intro.html#id6)
* [用Weave嵌入C語言](scipy_intro.html#weavec)
* [SymPy-符號運算好幫手](sympy_intro.html)
* [封面上的經典公式](sympy_intro.html#id1)
* [球體體積](sympy_intro.html#id2)
* [matplotlib-繪制精美的圖表](matplotlib_intro.html)
* [快速繪圖](matplotlib_intro.html#id2)
* [繪制多軸圖](matplotlib_intro.html#id4)
* [配置文件](matplotlib_intro.html#id5)
* [Artist對象](matplotlib_intro.html#artist)
* [Traits-為Python添加類型定義](traits_intro.html)
* [背景](traits_intro.html#id1)
* [Traits是什么](traits_intro.html#traits)
* [動態添加Trait屬性](traits_intro.html#trait)
* [Property屬性](traits_intro.html#property)
* [Trait屬性監聽](traits_intro.html#id2)
* [TraitsUI-輕松制作用戶界面](traitsUI_intro.html)
* [缺省界面](traitsUI_intro.html#id1)
* [自定義界面](traitsUI_intro.html#id2)
* [配置視圖](traitsUI_intro.html#id3)
* [Chaco-交互式圖表](chaco_intro.html)
* [面向腳本繪圖](chaco_intro.html#id1)
* [面向應用繪圖](chaco_intro.html#id2)
* [TVTK-三維可視化數據](tvtk_intro.html)
* [TVTK使用簡介](tvtk_intro.html#id1)
* [TVTK的改進](tvtk_intro.html#id7)
* [Mayavi-更方便的可視化](mlab_and_mayavi.html)
* [用mlab快速繪圖](mlab_and_mayavi.html#mlab)
* [Mayavi應用程序](mlab_and_mayavi.html#id1)
* [將Mayavi嵌入到界面中](mlab_and_mayavi.html#id2)
* [Visual-制作3D演示動畫](vpython_intro.html)
* [場景、物體和照相機](vpython_intro.html#id1)
* [簡單動畫](vpython_intro.html#id2)
* [盒子中反彈的球](vpython_intro.html#id3)
* [OpenCV-圖像處理和計算機視覺](opencv_intro.html)
* [讀寫圖像和視頻文件](opencv_intro.html#id1)
## 手冊篇
各個庫的用戶使用手冊的翻譯
* [Traits使用手冊](traits_manual_index.html)
* [traits](traits_manual_index.html#id1)
* [traits.ui](traits_manual_index.html#traits-ui)
* [Visual使用手冊](visual_manual_index.html)
* [場景窗口](visual_manual_display.html)
## 實戰篇
用所學到的東西解決實際問題
* [聲音的輸入輸出](wave_pyaudio.html)
* [讀寫Wave文件](wave_pyaudio.html#wave)
* [用pyAudio播放和錄音](wave_pyaudio.html#pyaudio)
* [用pyMedia播放Mp3](wave_pyaudio.html#pymediamp3)
* [數字信號系統](filters.html)
* [FIR和IIR濾波器](filters.html#firiir)
* [FIR濾波器設計](filters.html#fir)
* [IIR濾波器設計](filters.html#iir)
* [濾波器的頻率響應](filters.html#id6)
* [二次均衡器設計工具](filters.html#id7)
* [FFT演示程序](fft_study.html)
* [FFT知識復習](fft_study.html#id1)
* [合成時域信號](fft_study.html#id2)
* [三角波FFT演示程序](fft_study.html#id3)
* [頻域信號處理](frequency_process.html)
* [觀察信號的頻譜](frequency_process.html#id2)
* [快速卷積](frequency_process.html#id5)
* [Hilbert變換](frequency_process.html#hilbert)
* [Ctypes和NumPy](ctypes_numpy.html)
* [用ctypes加速計算](ctypes_numpy.html#ctypes)
* [用ctypes調用DLL](ctypes_numpy.html#ctypesdll)
* [numpy對ctypes的支持](ctypes_numpy.html#numpyctypes)
* [自適應濾波器和NLMS模擬](fast_nlms_in_python.html)
* [自適應濾波器簡介](fast_nlms_in_python.html#id1)
* [NLMS計算公式](fast_nlms_in_python.html#id5)
* [NumPy實現](fast_nlms_in_python.html#numpy)
* [DLL函數的編寫](fast_nlms_in_python.html#dll)
* [ctypes的python接口](fast_nlms_in_python.html#ctypespython)
* [單擺和雙擺模擬](double_pendulum.html)
* [單擺模擬](double_pendulum.html#id2)
* [雙擺模擬](double_pendulum.html#id4)
* [分形與混沌](fractal_chaos.html)
* [Mandelbrot集合](fractal_chaos.html#mandelbrot)
* [迭代函數系統(IFS)](fractal_chaos.html#ifs)
* [L-System分形](fractal_chaos.html#l-system)
## 附錄
* [關于本書的編寫](pydoc_write_tools.html)
* [本書的編寫工具](pydoc_write_tools.html#id2)
* [問題與解決方案](pydoc_write_tools.html#id3)
* [ReST使用心得](pydoc_write_tools.html#rest)
* [未解決的問題](pydoc_write_tools.html#id16)
* [最近更新](update_list.html)
## 源程序集
* [源程序集](example_code_list.html)
- 用Python做科學計算
- 軟件包的安裝和介紹
- NumPy-快速處理數據
- SciPy-數值計算庫
- matplotlib-繪制精美的圖表
- Traits-為Python添加類型定義
- TraitsUI-輕松制作用戶界面
- Chaco-交互式圖表
- TVTK-三維可視化數據
- Mayavi-更方便的可視化
- Visual-制作3D演示動畫
- OpenCV-圖像處理和計算機視覺
- Traits使用手冊
- 定義Traits
- Trait事件處理
- 設計自己的Trait編輯器
- Visual使用手冊
- 場景窗口
- 聲音的輸入輸出
- 數字信號系統
- FFT演示程序
- 頻域信號處理
- Ctypes和NumPy
- 自適應濾波器和NLMS模擬
- 單擺和雙擺模擬
- 分形與混沌
- 關于本書的編寫
- 最近更新
- 源程序集
- 三角波的FFT演示
- 在traitsUI中使用的matplotlib控件
- CSV文件數據圖形化工具
- NLMS算法的模擬測試
- 三維標量場觀察器
- 頻譜泄漏和hann窗
- FFT卷積的速度比較
- 二次均衡器設計
- 單擺擺動周期的計算
- 雙擺系統的動畫模擬
- 繪制Mandelbrot集合
- 迭代函數系統的分形
- 繪制L-System的分形圖