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