# 用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的分形图