Python科学计算与数据处理 —数值计算库.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python科学计算与数据处理—数值计算库
SciPy数值计算库目录常数和特殊函数优化最小二乘拟合函数最小非线性方程求解插值样条曲线插值外推和样条拟合2D插值目录数值积分球体体积解常微分方程统计量连续和离散概率分布二项、泊松、伽玛分布SciPy在此基础上,增加了数学、科学和工程计算中常用的许多模块,如线性代数、常微分方程数值解、信号处理、图像处理、稀疏矩阵等。
在本节中,将通过示例介绍SciPy中常用的一些模块。
Matplotlib和Mayavi将用于在实例程序中绘制2D和三维图表。这些图形库将在以下章节中详细描述。
常量和特殊函数SciPy的常量模块包含许多物理常量:在物理常量字典中,对应于物理常量名称作为关键字的值是一个包含三个元素的元组,常量值分别为0+单位和错误。例如,下面的程序可以检查电子质量:光速Ch# Planck常量Cgram常量电子传递(E,rsquokg #,E)常量和特殊函数除物理常量外,常量模块还包括许多单位信息,如:Cmile# miles等于多少米Cinch # inches等于多少米Cgram # grams 等于多少千克Cpound#磅等于多少千克常量,特殊函数SciPy的特殊模块是一个非常完整的函数库,其中包含基本数学函数、特殊数学函数和所有出现的函数
由于函数数量众多,本节仅简要介绍它们。
请参考SciPy的帮助文档,了解具体包括的功能列表。
伽玛函数是概率统计中经常出现的一种特殊函数。它的计算
公式如下:常数和特殊函数显然,用这个公式计算函数值是很麻烦的。特殊模块中的gamma()可用于计算:importscipyspecialassgamma()s gamma()s gamma(j)# gamma函数支持复数(j)Sgamma()INF常量和特殊函数函数是实数和复数范围内阶乘函数的扩展。它的增长速度非常快,因为的阶乘已经超出了双精度浮点数的表示范围,所以结果是无限的。
为了计算更大的范围,可以使用sgammaln (): sgammaln (x)来计算ln的值(||)。它使用一种特殊的算法来直接计算函数的对数值,因此它可以代表一个更大的范围。
Sgammaln()常数和特殊函数的特殊模中的一些函数在数学意义上不是特殊函数,如计算log(x)值的logp(x)。
这是由于浮点数的精度有限,无法准确表示非常接近的实数。
例如,e的值不能用浮点数表示,所以log(e)的值是,而当使用logp()时,它可以非常精确地计算出来:当x很小时,logp(x)近似等于x。
Elog(e)Slogp(e)e优化最小二乘拟合假设有一组实验数据(伊稀),它应该预先满足一定的函数关系yi=f(xi)。通过这些已知信息,需要确定函数f的一些参数。
例如,如果函数f是线性函数f(x)=kxb,则参数k和b是要确定的值。
优化如果用P来表示函数中要确定的参数,那么目标就是找
到一组P,从而优化下面函数S的值:这个算法叫做最小二乘优化。
可在优化模块中使用Leastsq()对数据进行最小二乘拟合计算。
leastsq()的用法很简单,只需把计算误差的函数和要确定的参数的初始值传给它。
以下是用最小二乘法拟合线性函数的过程()。
优化使用最小二乘法拟合直线,并显示误差曲面(scipylesshsquarelinpy)importnumpyasfrommschhopizeimporttastesqx = NP array(,,,,,,Defresiduals):计算以P为参数的直线与原始数据之间的误差K,B = PRETURNY(K * XB)# MISTANT SQ,使参数的初始值为残差输出数组的最小平方和(),R =最小二乘(残差),,,,,,,,,,,,,,函数的作用是:传递一个误差计算函数和一个初始值。初始值作为误差计算函数的第一参数传入计算结果r。第一个元素是包含两个元素的元组。第一个元素是表示拟合参数k 、b的数组,如果第二个元素等于整数之一、、、,则拟合成功。否则,将返回mesg程序的输出:残差的参数p()是拟合直线的参数函数,它返回原始数据和拟合直线之间的误差。
K=Sb=优化让我们看另一个拟合正弦波数据的例子:使用最小二乘法拟合有噪声的正复数波数据(scipyleastsquaresinpy),使用最小二乘法拟合有噪声的正弦波数据。
尽管通过拟合获得的参数可能与实际参数完全不同,但是由于正弦函数的周期性,拟合结果与实际函数一致。
importnumpyasnpfromsicoptimizeimportlestsqdeffunc(x,p):用于数据拟合的函数:a * sin (* pi * k * xta) a,k,Theta = preturna * npsin(* nppi * k * xta)优化函数(p,y,x y,x):实验数据x,y和拟合函数之间的差值p是系数returnnyfunc (x,p)x = nplinspice(* nppi、、、)a,k,Theta =函数theta) #真实数据#实验数据y = y * nprandomrand (len (x)) p =,#函数拟合参数optimize#对于第一个猜测调用leastsq进行数据拟合,残差是函数#p对于计算误差是拟合参数的初始值。#args是实验数据PLSQ =最小平方(住宅,P,args = (Y,X)) #除初始值外,还调用args参数来指定残差中使用的其他参数(X,Y的全局变量直接用于线拟合),元组的第一个元素也作为拟合参数数组printu的实参数返回。Label = U实数)plplplot(x,y,label=u有噪声的实验数据)plplplot(x,func(x,plsq),优化程序中要拟合的func()是一个正弦函数,其参数p是一个包含三个决定正弦波的参数的数组:A 、k 、θ,分别对应于正弦函数的振幅、频率和相角。
一组包含噪声的数据:(x,y),其中数组y将随机噪声加到标准正弦波数据y上。
通过用最小二乘法拟合有噪声的实验数据(x,y),它可以找到阵列x和真实数据y之间的正弦关系,即确定参数,例如A 、k 、θ。
这里,(y,x)被传递给args参数。
Leastsq()将这两个附加参数传递给残差()。
因此,残差()有三个参数p作为正弦函数参数y,x作为表