SciPy FFTpack
type
status
date
slug
summary
tags
category
icon
password
Property
对时域信号计算 傅里叶变换 以检查其在频域中的行为。傅立叶变换可用于信号和噪声处理,图像处理,音频信号处理等领域.SciPy提供fftpack模块,可让用户计算快速傅里叶变换。
 

快速傅立叶变换

 
 

离散余弦变换

离散余弦变换(DCT)表示的数据点的中的余弦函数在不同的频率振荡的总和而言的有限序列。SciPy的提供的功能的的DCT和与该功能对应的IDCT
Scipy 积分
type
status
date
slug
summary
tags
category
icon
password
Property
当一个函数不能被分析积分,或者很难分析积分时,通常会转向数值积分方法。 SciPy有许多用于执行数值积分的程序。 它们中的大多数都在同一个scipy.integrate库中。 下表列出了一些常用函数。
函数
描述
quad
单积分
dblquad
二重积分
tplquad
三重积分
nquad
n倍多重积分
fixed_quad
高斯积分,阶数n
quadrature
高斯正交到容差
romberg
Romberg积分
trapz
梯形规则
cumtrapz
梯形法则累计计算积分
Scipy 微分方程
type
status
date
slug
summary
tags
category
icon
password
Property

基本概念

微分方程是描述系统的状态随时间和空间演化的数学工具。物理中许多涉及变力的运动学、动力学问题,如空气的阻力为速度函数的落体运动等问题,很多可以用微分方程求解。微分方程在化学、工程学、经济学和人口统计等领域也有广泛应用。
具体来说,微分方程是指含有未知函数及其导数的关系式。
  • 微分方程按自变量个数分为:只有一个自变量的常微分方程(Ordinary Differential Equations)和包含两个或两个以上独立变量的偏微分方程(Partial Differential Equations)。
  • 微分方程按阶数分为:一阶、二阶、高阶,微分方程的阶数取决于方程中最高次导数的阶数。
  • 微分方程还可以分为:(非)齐次,常(变)系数,(非)线性,初值问题/边界问题…
 

微分方程的数值解法

只有很少的微分方程可以解析求解,大多数的微分方程只能采用数值方法进行求解。Python有个符号运算工具包SymPy,以解析方式求解积分、微分方程,也就是说给出的结果是微分方程的解析解表达式,很牛,但只能求解有解析解的微分方程
微分方程的数值求解是先把时间和空间离散化,然后将微分化为差分,建立递推关系,然后反复进行迭代计算,得到任意时间和空间的值。
求解常微分方程的基本方法,有欧拉法、龙格库塔法等。
 
偏微分方程
type
status
date
slug
summary
tags
category
icon
password
Property

偏微分方程基本知识

微分方程是指含有未知函数及其导数的关系式,偏微分方程是包含未知函数的偏导数(偏微分)的微分方程。
偏微分方程可以描述各种自然和工程现象, 是构建科学、工程学和其他领域的数学模型主要手段。 科学和工程中的大多数实际问题都归结为偏微分方程的定解问题,如:波传播,流动和扩散,振动,固体力学,电磁学和量子力学,等等。
偏微分方程主要有三类:椭圆方程,抛物方程和双曲方程。
  • 双曲方程描述变量以一定速度沿某个方向传播,常用于描述振动与波动问题。
  • 椭圆方程描述变量以一定深度沿所有方向传播,常用于描述静电场、引力场等稳态问题。
  • 抛物方程描述变量沿下游传播,常用于描述热传导和扩散等瞬态问题。
偏微分方程的定解问题通常很难求出解析解,只能通过数值计算方法对偏微分方程的近似求解。常用偏微分方程数值解法有:有限差分方法、有限元方法、有限体方法、共轭梯度法,等等。通常先对问题的求解区域进行网格剖分,然后将定解问题离散为代数方程组,求出在离散网格点上的近似值。
Python 求解偏微分方程的功能是比较弱的,主要有 Fipy, FEniCS 等有限元方法的工具包,另外还有机器学习工具如 Tensorflow 也可以进行偏微分方程的仿真模拟。本篇采用比较简单的有限差分法对 5种典型的偏微分方程进行编程。
 

一维线性平流方程

平流过程是大气运动中重要的过程。平流方程(Advection equation)描述某一物理量的平流作用而引起局地变化的物理过程,最简单的形式是一维平流方程。
传染病模型
type
status
date
slug
summary
tags
category
icon
password
Property
传染病的数学模型是数学建模中的典型问题,标准名称是流行病的数学模型(Mathematical models of epidemic diseases)。建立传染病的数学模型来描述传染病的传播过程,研究传染病的传播速度、空间范围、传播途径、动力学机理等问题,以指导对传染病的有效地预防和控制,具有重要的现实意义。
不同类型传染病的传播具有不同的特点,传染病的传播模型不是从医学角度分析传染病的传播过程,而是按照传播机理建立不同的数学模型。
首先,把传染病流行范围内的人群分为 S、E、I、R 四类,具体含义如下:
  • S 类(Susceptible),易感者,指缺乏免疫能力的健康人,与感染者接触后容易受到感染;
  • E 类(Exposed),暴露者,指接触过感染者但暂无传染性的人,适用于存在潜伏期的传染病;
  • I 类(Infectious),患病者,指具有传染性的患病者,可以传播给 S 类成员将其变为 E 类或 I 类成员;
  • R 类(Recovered),康复者,指病愈后具有免疫力的人。如果免疫期有限,仍可以重新变为 S 类成员,进而被感染;如果是终身免疫,则不能再变为 S类、E类或 I 类成员。
常见的传染病模型按照传染病类型分为 SI、SIR、SIRS、SEIR 模型等,就是由以上四类人群根据不同传染病的特征进行组合而产生的不同模型

SI模型

SIS 模型

SIR 模型

SEIR 模型

SciPy 插值
type
status
date
slug
summary
tags
category
icon
password
Property
 
  • 插值,是在离散数据的基础上补插连续函数,使得插值函数通过全部给定的离散数据点。 插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。简单地说,插值是求过一组已知点的近似函数。
  • 拟合,是用一个连续函数(曲线)靠近给定的离散数据,使其与给定的数据相吻合。拟合也是根据一组已知点求近似函数,但不要求过已知点。
因此,插值和拟合都是根据一组已知数据点,求变化规律和特征相似的近似曲线的过程。但是插值要求近似曲线完全经过所有的给定数据点,而拟合只要求近似曲线在整体上尽可能接近数据点,并反映数据的变化规律和发展趋势。
插值可以看作是一种特殊的拟合,是要求误差函数为 0 的拟合。由于数据点通常都带有误差,误差为 0 往往意味着过度拟合,过拟合模型对于训练集以外的数据的泛化能力往往是较差的。因此在实践中,插值多用于图像处理和缺失数据处理,拟合多用于实验数据处理。
此外,还有一个常用而且容易混淆的概念: 回归。回归是研究一组随机变量与另一组随机变量之间关系的统计分析方法,包括建立数学模型并估计模型参数,并检验数学模型的可信度,也包括利用建立的模型和估计的模型参数进行预测或控制。
回归是一种数据分析方法,拟合是一种具体的数据处理方法。拟合侧重于曲线参数寻优,使曲线与数据相符;而回归侧重于研究两个或多个变量之间的关系。

一维插值方法:内插值

Scipy.interpolate 中的 interp1d类是一种基于固定数据点创建函数的方法,可以使用函数插值在给定数据定义的域内的任何位置对其进行计算。注意 interp1d 是内插法,不能外推运算(外插值)
该类定义调用,允许使用 轴值调用对象,此时应计算插值函数,并返回插值的 轴值。具体地说,interp1d 类生成已知数据点集的插值函数 ,通过调用这个插值函数,可以在已知数据之间插值,得到指定 的函数值
class scipy.interpolate.interp1d(x, y, kind=‘linear’, axis=- 1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)
主要参数:
Scipy 拟合
type
status
date
slug
summary
tags
category
icon
password
Property
在科学研究和工程应用中经常通过测量、采样、实验等方法获得各种数据。对一组已知数据点集,通过调整拟合函数(曲线)的参数,使该函数与已知数据点集相吻合,这个过程称为数据拟合,又称曲线拟合。
插值和拟合都是根据一组已知数据点,求变化规律和特征相似的近似曲线的过程。但是插值要求近似曲线完全经过所有的给定数据点,而拟合只要求近似曲线在整体上尽可能接近数据点,并反映数据的变化规律和发展趋势。因此插值可以看作是一种特殊的拟合,是要求误差函数为0的拟合。

数据拟合问题的分类

数据拟合问题,可以从不同角度进行分类:
  • 按照拟合函数分类,分为线性函数和非线性函数。非线性函数用于数据拟合,常用的有多项式函数、样条函数、指数函数和幂函数,针对具体问题还有自定义的特殊函数显示。
  • 按照变量个数分类,分为单变量函数和多变量函数。
  • 按照拟合模型分类,分为基于模型的数据拟合和无模型的函数拟合。基于模型的数据拟合,是通过建立数学模型描述输入输出变量之间的关系,拟合曲线不仅能拟合观测数据,拟合模型的参数通常具有明确的物理意义。而无模型的函数拟合,是指难以建立描述变量关系的数学模型,只能采用通用的函数和曲线拟合观测数据,例如多项式函数拟合、样条函数拟合,也包括机器学习和神经网络模型,这种模型的参数通常没有明确的意义。

数据拟合的原理和方法

数据拟合通过调整拟合函数中的待定参数,从整体上接近已知的数据点集。
这是一个优化问题,决策变量是拟合函数的待定参数,优化目标是观测数据与拟合函数的函数值之间的某种误差指标。典型的优化目标是拟合函数值与观测值的误差平方和;当观测数据的重要性不同或分布不均匀时,也可以使用加权误差平方和作为优化目标。
数据拟合的基本方法是最小二乘法。对于观测数据 ,将观测值 与拟合函数 的计算值的误差平方和最小作为优化问题的目标函数: 是拟合函数中的待定参数
对于线性拟合问题,设拟合函数为直线 , 由极值的必要条件 可以解出系数: 对于多变量线性最小二乘问题,设拟合函数为直线 , 类似地,可以解出系数
Scipy linalg
type
status
date
slug
summary
tags
category
icon
password
Property
SciPy是使用优化的ATLAS LAPACK和BLAS库构建的。 它具有非常快的线性代数能力。 所有这些线性代数例程都需要一个可以转换为二维数组的对象。 这些例程的输出也是一个二维数组。
SciPy.linalg与NumPy.linalg
scipy.linalg包含numpy.linalg中的所有函数。 另外,scipy.linalg还有一些不在numpy.linalg中的高级函数。 在numpy.linalg上使用scipy.linalg的另一个优点是它总是用BLAS/LAPACK支持编译,而对于NumPy,这是可选的。 因此,根据NumPy的安装方式,SciPy版本可能会更快。

线性方程组

scipy.linalg.solve特征为未知的xy值求解线性方程a * x + b * y = Z
作为一个例子,假设需要解下面的联立方程。
notion image
要求解xyz值的上述方程式,可以使用矩阵求逆来求解向量,如下所示。
notion image
但是,最好使用linalg.solve命令,该命令可以更快,更稳定。
求解函数采用两个输入'a''b',其中'a'表示系数,'b'表示相应的右侧值并返回解矩阵。
现在来看看下面的例子。
SciPy optimize
type
status
date
slug
summary
tags
category
icon
password
Property
scipy.optimize包提供了几种常用的优化算法。 该模块包含以下几个方面:
  • 使用各种算法(例如BFGS,Nelder-Mead单纯形,牛顿共轭梯度,COBYLA或SLSQP)的无约束和约束最小化多元标量函数(minimize())
  • 全局(蛮力)优化程序(例如,anneal()basinhopping())
  • 最小二乘最小化(leastsq())和曲线拟合(curve_fit())算法
  • 标量单变量函数最小化(minim_scalar())和根查找(newton())
  • 使用多种算法(例如,Powell,Levenberg-Marquardt混合或Newton-Krylov等大规模方法)的多元方程系统求解(root)
 
算法
简介
特点
jac(梯度)
hess
bounds
Nelder-Mead
单纯形法
稳定,如果微分可信,推荐其他算法
 
无约束
 
Powell
每次搜索一个维度
不必可微
不需要
不需要
无约束
CG
非线性共轭方向
 
需要
不需要
无约束
Scipy Ndimage
type
status
date
slug
summary
tags
category
icon
password
Property
SciPy的ndimage子模块专用于图像处理。这里,ndimage表示一个n维图像。
图像处理中一些最常见的任务如下:
  • 输入/输出,显示图像
  • 基本操作 - 裁剪,翻转,旋转等
  • 图像过滤 - 去噪,锐化等
  • 图像分割 - 标记对应于不同对象的像素
  • 分类
  • 特征提取
  • 配准
 

打开和写入图像文件

SciPy中的misc包附带了一些图像。在这里,使用这些图像来学习图像操作。请看看下面的例子。
SciPy 输入和输出
type
status
date
slug
summary
tags
category
icon
password
Property
Scipy.io包提供了多种功能来解决不同格式的文件(输入和输出)。
  • Matlab
  • IDL
  • Matrix Market
  • Wave
  • Arff
  • Netcdf等
 
MATLAB
以下是用于加载和保存.mat文件的函数
函数
描述
SciPy Stats
type
status
date
slug
summary
tags
category
icon
password
Property
所有的统计函数都位于子包scipy.stats中,并且可以使用info(stats)函数获得这些函数的完整列表。随机变量列表也可以从stats子包的docstring中获得。 该模块包含大量的概率分布以及不断增长的统计函数库。
每个单变量分布都有其自己的子类,如下表所述
描述
rv_continuous
用于子类化的通用连续随机变量类
rv_discrete
用于子类化的通用离散随机变量类
rv_histogram
生成由直方图给出的分布
 
通用函数
stats连续型随机变量的公共方法:
名称
备注