SciPy-数值计算库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SciPy-数值计算库相关的知识,希望对你有一定的参考价值。
参考技术A SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。这个例子中我们要拟合的函数是一个正弦波函数,它有三个参数 A, k, theta ,分别对应振幅、频率、相角。假设我们的实验数据是一组包含噪声的数据 x, y1,其中y1是在真实数据y0的基础上加入噪声的到了。
通过leastsq函数对带噪声的实验数据x,y1进行数据拟合,可以找到x和真实数据y0之间的正弦关系的三个参数: A, k, theta。下面是程序的输出:
下面用fmin计算反卷积,这种方法只能用在很小规模的数列之上。
下面是程序的输出:
下面是一个实际的例子,求解如下方程组的解:
输出为:
使用雅可比矩阵的fsolve实例如下
输出为:
计算雅可比矩阵的函数j通过fprime参数传递给fsolve,函数j和函数f一样,有一个未知数的解矢量参数x,函数j计算非线性方程组在矢量x点上的雅可比矩阵。由于这个例子中未知数很少,因此程序计算雅可比矩阵并不能带来计算速度的提升。
使用直线和B-Spline对正弦波上的点进行插值的例子。
此函数计算的是以x,y为顶点坐标的折线与X轴所夹的面积。同样的分割点数,trapz函数的结果更加接近精确值一些。
因此可以如下定义通过(x,y)坐标计算球面上点的z值的函数:
X-Y轴平面与此球体的交线为一个单位圆,因此积分区间为此单位圆,可以考虑为X轴坐标从-1到1进行积分,而Y轴从 -half_circle(x) 到 half_circle(x) 进行积分,于是可以调用dblquad函数:
dblquad函数的调用方式为: dblquad(func2d, a, b, gfun, hfun)
对于func2d(x,y)函数进行二重积分,其中a,b为变量x的积分区间,而gfun(x)到hfun(x)为变量y的积分区间。
半球体积的积分的示意图如下:
X轴的积分区间为-1.0到1.0,对于X=x0时,通过对Y轴的积分计算出切面的面积,因此Y轴的积分区间如图中红色点线所示。
下面是洛仑兹吸引子的轨迹计算和绘制程序:
我们看到即使初始值只相差0.01,两条运动轨迹也是完全不同的。
在程序中先定义一个lorenz函数,它的任务是计算出某个位置的各个方向的微分值,这个计算直接根据洛仑兹吸引子的公式得出。然后调用odeint,对微分方程求解,odeint有许多参数,这里用到的四个参数分别为:
Python的数学计算库scipy介绍
Scipy介绍
scipy
是一个python开源的数学计算库,可以应用于数学、科学以及工程领域,它是基于numpy的科学计算库。
主要包含了统计学
、最优化
、线性代数
、积分
、傅里叶变换
、信号处理
和图像处理
以及常微分方程
的求解以及其他科学工程中所用到的计算
scipy模块介绍
scipy
主要通过下面这些包来实现数学算法
和科学计算
,后面对于scipy
的讲解主要也是基于这些包来实现的
- cluster:包含聚类算法
- constants:物理和数学上的一些常数
- fftpack:快速傅里叶变换
- integrate:积分和常微分方程的求解
- interpolate:插值和平滑的样条函数
- io:输入和输出
- linalg:线性代数
- ndimage:N维的图像处理
- ord:回归正交距离
- optimize:优化和寻根方程
- signal:信号处理
- sparse:稀疏矩阵
- spatial:空间数据结构和算法
- special:特殊的函数
- stats:统计分布和函数
scipy的相关资料
- scipy官网:https://scipy.org
- scipy文档:https://docs.scipy.org/
- scipy源码:https://github.com/scipy/scipy
- scipy中文教程:https://wizardforcel.gitbooks.io/scipy-lecture-notes/content/
以上是关于SciPy-数值计算库的主要内容,如果未能解决你的问题,请参考以下文章
38个常用Python库:数值计算可视化机器学习等8大领域都有了