本文共 2094 字,大约阅读时间需要 6 分钟。
前言
scipy 包含的功能有最优化,线性代数,积分,插值,拟合常微分等等,是数据分析中完成数学计算最重要的库之一。第一部分 scipy积分
quad 一元积分模块 quad(func, a, b, args=()) func函数; a:float 积分下限 ; b:积分上限; args 可选,tuple,func的参数 输出是 tuple(值,误差),数值积分是有误差的,所以提供了一个误差值dbquad 二元积分模块
dblquad(func, a, b, gfun, hfun, args=()) func(x,y)二元函数,a,b是x的范围,gfun(x),hfun(x)是y的范围这里最好用lamaba,args()可选参数nquad n元积分模块
nquad(func, ranges) func是函数,ranges:iterable object 范围的每个元素可能是2个数字的序列,从后到前的积分,和实际的积分写法是一样的。import numpy as npfrom scipy.integrate import quad,dblquad,nquaddef main(): print quad(lambda x : np.exp(-x),0,np.inf) # np.inf 无穷大 print dblquad(lambda t,x : np.exp(-x*t)/t**3,0,np.inf,lambda x:1,lambda x : np.inf) def f(x,y): return x*y def bound_y(): return [0,0.5] def bound_x(y): return [0,1-2*y] print nquad(f,[bound_x,bound_y])if __name__ == "__main__": main()
输出结果
(1.0000000000000002, 5.842606744944177e-11) (0.33333333325010883, 1.3888461883425516e-08) (0.010416666666666668, 4.101620128472366e-16)scipy 优化器 Opteimizer
import numpy as npfrom scipy.optimize import minimize# 最小值模块# minimize(fun, x0, optionalargs())# x0 初始化数据# option={"xtol":精读;"disp":中间过程}def main(): "全局最小值" def rosen(x): return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0+(1-x[:-1])**2.0) x0 = np.array([1.3,0.7,0.8,1.9,1.2]) res = minimize(rosen,x0,method="nelder-mead",options={ "xtol":1e-8,"disp":True}) #res = minimize(rosen,x0,method="nelder-mead",options={"xtol":1e-8}) print res # print res.xif __name__ == "__main__": main()
输出
Optimization terminated successfully. Current function value: 0.000000 Iterations: 339 Function evaluations: 571 final_simplex: (array([[ 1. , 1. , 1. , 1. , 1. ], [ 1. , 1. , 1. , 1. , 1. ], [ 1. , 1. , 1. , 1.00000001, 1.00000001], [ 1. , 1. , 1. , 1. , 1. ], [ 1. , 1. , 1. , 1. , 1. ], [ 1. , 1. , 1. , 1. , 0.99999999]]), array([ 4.86115343e-17, 7.65182843e-17, 8.11395684e-17, 8.63263255e-17, 8.64080682e-17, 2.17927418e-16])) fun: 4.8611534334221152e-17 message: ‘Optimization terminated successfully.’ nfev: 571 nit: 339 status: 0 success: True x: array([ 1., 1., 1., 1., 1.])转载地址:http://cliqi.baihongyu.com/