Mastering Python Scientific Computing

2024-09-08 00:32

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146605

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很