本文主要是介绍Mastering Python Scientific Computing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
线性方程组
迭代法:
雅可比迭代法
高斯赛德迭代法
非迭代法:
高斯LU矩阵分解法
高斯消元法
非线性方程组:
一维非线性方程解法:
二分法
牛顿法
割线法
插值法
逆差值法
逆二次插值法
线性分式插值法
非线性方程组解法:
牛顿法
割线法
阻尼牛顿法
Broyden法
最优化方法
应用场景
工程力学
经济学
运筹学
控制工程
石油工程
分子建模
内插法
例子:有一组机房温度的数据,时间间隔可能是固定不变的,可能不是固定不变得,估计插值计算一天剩余时间机房的温度
分段常熟内插法
线性内插法
多项式内插法
样条内插法
基于高斯过程的内插法
外插法
例子:已经获得12到65各个年龄段的用户每天上网的小时数,那么估计12岁以下和65岁以上每天上网的小时数
线性外插法
多项式外插法
锥外插法
法国曲线外插法
数值积分
辛普森法则
梯形法则
精炼梯形法则
高斯积分法则
牛顿-柯特思积分法则
高斯-勒让德积分法则
数值微分
有限差分近似法
微分求积法
有限差分系数
插值微分法
微分方程
分为两类:常微分方程(ODE)和偏微分方程(PDE)
解常微分方程:
欧拉方法
泰勒级数法
龙格-库塔法
四阶龙格-库塔法
预估-校正法
解偏微分方程:
有限元法
有限差分法
有限体积法
初值问题
常微分方程的初始值是在未知函数定义域内
边界值问题
带约束的微分方程的解必须能够同时满足微分方程的所有约束
随机数生成器
应用:
统计抽样、赌博、随机生成的设计、科学与工程领域的计算机仿真等
分类:
真随机数生成器和伪随机数生成器
统计分布生成随机数:
泊松分布
指数分布
正态分布
高斯分布
伪随机数生成器:
BBS随机数生成器
Wichmann-Hill随机数生成器
进位-互补-乘法随机数生成器
反向同余随机数生成器
ISAAC随机数生成器
滞后斐波那契随机数生成器
线性同余随机数生成器
线性反馈移位寄存器
最大周期倒数随机数生成器
梅森旋转随机数生成器
进位相乘随机数生成器
Naor-Reingold伪随机数生成器
Park-Miller随机数生成器
WELL伪随机数生成器
现成数据集
https://www.opensciencedatacloud.org/publicdata/?commons_type=General
Numpy程序包
N维度数组数据结构
文件处理
SciPy程序包
优化函数
数值分析
积分与微分
统计学
聚类和空间算法
图像处理
SymPy符号计算
多项式
微积分
方程式求解
离散数学
矩阵
几何
画图
物理学
统计学
打印
Pandas程序包
Series
DataFrame
Panel
matplotlib程序包
数据可视化
Numpy的基本对象
N维数组对象
数组属性:大小、每项大小、数据、维度
x2d = np.array(((100,200,300),(111,222,333),(123,456,789))) print(x2d.shape) print(x2d.dtype) print(x2d.size) print(x2d.itemsize) print(x2d.ndim) print(x2d.data)
数组基本操作
x = np.array([1,12,25,8,15,35,50,7,2,10]) print(x[3:7]) print(x[1:9:2]) print(x[0:9:3])
x = np.array([1,12,25,8,15,35,50,7,2,10]) x2d = np.array(((100,200,300),(111,222,333),(123,456,789),(125,457,791),(127,459,793),(129,461,795))) for i in x:print(i) for row in x2d:print(row)
数组的特殊操作
x2d = np.array(((100,200,300),(111,222,333),(123,456,789),(125,457,791),(127,459,793),(129,461,795))) print(x2d) print(x2d.ravel()) print(x2d.resize(3,6)) print(x2d.reshape(6,3))
与数组相关的类
矩阵子类
a = np.matrix('1 2 3;4 5 6;7 8 9') print(a) b = np.matrix('4 5 6;7 8 9;10 11 12') print(b) print(a*b)
掩码数组
x = np.array([72,79,85,90,150,-135,120,-10,60,100]) mx = ma.masked_array(x,mask=[0,0,0,0,0,1,0,1,0,0]) mx2 = ma.masked_array(x,mask=x<0) print(x.mean()) print(mx.mean()) print(mx2.mean())
结构化数组
rectype = np.dtype({'names':['mintemp','maxtemp','avgtemp','city'],'formats':['i4','i4','f4','a30']}) a = np.array([(10,44,25.2,'Indore'),(10,42,25.2,'Mumbai'),(2,48,30,'Delhi')],dtype=rectype) print(a[0]) print(a['mintemp']) print(a['maxtemp']) print(a['avgtemp']) print(a['city'])
各种可用的通用函数
x1 = np.array([72,79,85,90,150,-135,120,-10,60,100]) x2 = np.array([72,79,85,90,150,-135,120,-10,60,100]) x_angle = np.array([30,60,90,120,150,180]) x_sqr = np.array([9,16,25,225,400,625]) x_bit = np.array([2,4,8,16,32,64]) print(np.greater_equal(x1,x2)) print(np.mod(x1,x2)) print(np.exp(x1)) print(np.reciprocal(x1)) print(np.negative(x1)) print(np.isreal(x1)) print(np.isnan(np.log10(x1))) print(np.sqrt(np.square(x_sqr))) print(np.sin(x_angle*np.pi/180)) print(np.tan(x_angle*np.pi/180)) print(np.right_shift(x_bit,1)) print(np.left_shift(x_bit,1))
Numpy的数学模块
arr2d = np.array(((100,200,300),(111,222,333),(129,461,795))) eig_val,eig_vec = LA.eig(arr2d) print(LA.norm(arr2d)) print(LA.det(arr2d)) print(LA.inv(arr2d)) arr1 = np.array([[2,3],[3,4]]) arr2 = np.array([4,5]) results = np.linalg.solve(arr1,arr2) print(results) print(np.allclose(np.dot(arr1,results),arr2))
SciPy数学函数
积分
quad函数高斯积分
result = quad(lambda x:special.jv(4,x),0,20) print(result) print("Gaussian integral",np.sqrt(np.pi),quad(lambda x:np.exp(-x**2),-np.inf,np.inf))
def integrand(x,a,b,c):return a*x*x+b*x+c a = 3 b = 4 c = 1 result = quad(integrand,0,np.inf,args=(a,b,c)) print(result)二重积分(dblquad)和三重积分(tplquad)
def integrand(t,x,n):return np.exp(-x*t)/t**n n = 4 result = dblquad(lambda t,x:integrand(t,x,n),0,np.inf,lambda x:0,lambda x:np.inf) print(result)
固定间隔的高斯积分
def integrand(x,a,b):return a*x+b a = 2 b = 1 fixed_result = fixed_quad(integrand,0,1,args=(a,b)) result = quadrature(integrand,0,1,args=(a,b)) print(result)
辛普森法则
def func1(a,x):return a*x**2+2 def func2(b,x):return b*x**3+4 x = np.array([1,2,4,5,6]) y1 = func1(2,x) Intgrl1 = simps(y1,x) print(Intgrl1) y2 = func2(3,x) Intgrl2 = simps(y2,x) print(Intgrl2
odeint函数做常微分方程
def derivative(x,time):a = -2.0 b = -0.1 return array([x[1],a*x[0]+b*x[1]]) time = linspace(1.0,15.0,1000) xinitialize = array([1.05,10.2]) x = odeint(derivative,xinitialize,time) plt.figure() plt.plot(time,x[:,0]) plt.xlabel('t') plt.ylabel('x') plt.show()信号处理
这篇关于Mastering Python Scientific Computing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!