篆体字作品 | 篆体字知识 | 加入收藏 篆体字转换器软件可转换多种篆体字在线预览 网页版 V2.0
篆体字转换器

当前位置:篆体字网 > 知识库 >

scipy

时间:2023-12-31 01:43:16 编辑:篆字君 来源:篆体字网

SciPy - 科学计算库(上)

一、实验说明

SciPy 库建立在 Numpy 库之上,提供了大量科学算法,主要包括这些主题:

特殊函数 (scipy.special)积分 (scipy.integrate)最优化 (scipy.optimize)插值 (scipy.interpolate)傅立叶变换 (scipy.fftpack)信号处理 (scipy.signal)线性代数 (scipy.linalg)稀疏特征值 (scipy.sparse)统计 (scipy.stats)多维图像处理 (scipy.ndimage)文件 IO (scipy.io)

在本实验中我们将了解其中一些包的使用方法。

(ps:因本节只讲工具的用法,对这些科学主题不展开讨论,所以根据自己所学的知识挑选食用就好了,强迫症不要纠结哈~)

1. 环境登录

无需密码自动登录,系统用户名shiyanlou

2. 环境介绍

本课程实验环境使用Spyder。首先打开terminal,然后输入以下命令:

关于Spyder的使用可参考文档:https://pythonhosted.org/spyder/

本实验基本在控制台下进行,可关闭其余窗口,只保留控制台。如需要调出窗口,可以通过 view->windows and toolbar 调出。比如希望在py文件中编写代码,可以 view->windows and toolbar->Editor 调出编辑器窗口。

二、实验内容

让我们先导入必要的库

特定函数

在计算科学问题时,常常会用到很多特定的函数,SciPy 提供了一个非常广泛的特定函数集合。函数列表可参考:http://docs.scipy.org/doc/scipy/reference/special.html#module-scipy.special

为了演示特定函数的一般用法我们拿贝塞尔函数举例:

积分

数值积分: 求积

被称作 数值求积,Scipy提供了一些列不同类型的求积函数,像是 , 还有 分别对应单积分,双重积分,三重积分。

函数有许多参数选项来调整该函数的行为(详情见)。

一般用法如下:

如果我们需要传递额外的参数,可以使用 关键字:

对于简单的函数我们可以直接使用匿名函数:

如例子所示,'Inf' 与 '-Inf' 可以表示数值极限。

高阶积分用法类似:

注意到我们为y积分的边界传参的方式,这样写是因为y可能是关于x的函数。

常微分方程 (ODEs)

SciPy 提供了两种方式来求解常微分方程:基于函数 的API与基于 类的面相对象的API。通常 更好上手一些,而 类更灵活一些。

这里我们将使用 函数,首先让我们载入它:

常微分方程组的标准形式如下:

为了求解常微分方程我们需要知道方程 与初始条件 注意到高阶常微分方程常常写成引入新的变量作为中间导数的形式。 一旦我们定义了函数 与数组 我们可以使用 函数:

我们将会在下面的例子中看到 Python 代码是如何实现 与 。

示例: 双摆

让我们思考一个物理学上的例子:双摆

关于双摆,参考:http://en.wikipedia.org/wiki/Double_pendulum

维基上已给出双摆的运动方程:

为了使 Python 代码更容易实现,让我们介绍新的变量名与向量表示法:

我们将在第四节课看到如何做出更好的演示动画。

示例:阻尼谐震子

常微分方程问题在计算物理学中非常重要,所以我们接下来要看另一个例子:阻尼谐震子。wiki地址:http://en.wikipedia.org/wiki/Damping

阻尼震子的运动公式:

其中 是震子的位置, 是频率, 是阻尼系数. 为了写二阶标准行事的 ODE 我们引入变量:

:

在这个例子的实现中,我们会加上额外的参数到 RHS 方程中:

傅立叶变换

傅立叶变换是计算物理学所用到的通用工具之一。Scipy 提供了使用 NetLib FFTPACK 库的接口,它是用FORTRAN写的。Scipy 还另外提供了很多便捷的函数。不过大致上接口都与 NetLib 的接口差不多。

让我们加载它:

下面演示快速傅立叶变换,例子使用上节阻尼谐震子的例子:

既然信号是实数,同时频谱是对称的。那么我们只需要画出正频率所对应部分的图:

正如预期的那样,我们可以看到频谱的峰值在1处。1就是我们在上节例子中所选的频率。

Copyright:2021-2023 篆体字转换器 www.dddtedu.com All rights reserved.