Python求解数值积分-定积分求解

2023-11-10 07:33

本文主要是介绍Python求解数值积分-定积分求解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​ 本小节求解下述定积分:
∫ 0.7 4 ( c o s ( 2 π x ) e − x + 1.2 ) d x \int_{0.7}^4(cos(2πx)e^{-x}+1.2)\mathrm{d}x 0.74(cos(2πx)ex+1.2)dx

版权声明

本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。

本文不可以以纸质出版为目的进行改编、摘抄。

本文节选自作者的《Python编程基础及应用》视频教程。

数值积分-integrate

​ integrate模块提供了好几种数值积分的方法,包括常微分方程组(ODE)的数值积分。相关函数列表如下:

函数名作用函数名作用
quad()一元定积分dblquad()二元定积分
triquad()三元定积分odeint()计算常微分方程组的数值解

微实践 - 定积分求解

​ 本小节求解下述定积分:
∫ 0.7 4 ( c o s ( 2 π x ) e − x + 1.2 ) d x \int_{0.7}^4(cos(2πx)e^{-x}+1.2)\mathrm{d}x 0.74(cos(2πx)ex+1.2)dx
​ 为了方便说明,我们先使用下述代码画出示意图:

import numpy as np
from matplotlib import pyplot as pltx = np.linspace(0,6,1000)
y = np.cos(2*np.pi*x)*np.exp(-x)+1.2plt.axis([np.min(x),np.max(x),0,np.max(y)])           #坐标范围
plt.plot(x,y,label="$cos(2πx)e^{-x}+1.2$")      	  #画曲线,带图示
plt.fill_between(x,y1=y,y2=0,where=(x>=0.7)&(x<=4),   #填充积分区域facecolor='blue',alpha=0.2)
plt.text(0.5*(0.7+4),0.4,r"$\int_{0.7}^4(cos(2πx)e^{-x}+1.2)\mathrm{d}x$",horizontalalignment='center',fontsize=14)    #增加说明文本
plt.legend()                                          #显示图示
plt.show()

执行结果:
在这里插入图片描述

​ plt.axis()函数设定了图的坐标范围。fill_between(x,y1=y,y2=0,where=(x>=0.7)&(x<=4)…)则用于填充积分区域,其中,x和y1构成曲线1; x和y2=0构成曲线2(也就是横坐标线);该函数填充两条曲线之间x值域为[0.7,4]的部分,where参数指明了这个值域。facecolor指定填充颜色,alpha参数指定透明度。

​ plt.text()则在图上添加文本,前两个参数指定了文本的坐标位置,horizontalalignment='center’要求文本在指定的位置水平居中摆放(指定位置位于文本的水平中心)。r"$…$"为文本内容:字符串前加表示放弃对字符串内的内容进行\转义;两个"为文本内容:字符串前加r表示放弃对字符串内的内容进行\转义;两个$包含起来说明其中的内容为LaTeX格式的公式。

​ 显然,上述定积分就是上图中阴影部分的面积。

​ 方法1:分成小矩形,计算面积和

import numpy as npx = np.linspace(0.7,4.0,1000)
y = np.cos(2*np.pi*x)*np.exp(-x)+1.2
dx = x[1] - x[0]                        #每个矩形的宽度
fArea = np.sum(y*dx)                    #矩形宽*高,再求和
print("Integral area:",fArea)

执行结果:

Integral area: 4.032803310221616

​ 上述代码中,把曲线的阴影部分分成1000个矩形,每个矩形的宽都是dx,第i个矩形的高则是yi。每个矩形的长乘宽,再求和,得积分面积。

​ 方法2:使用quad()函数进行积分

import math
from scipy import integratedef func(x):print("x=",x)       #用于展示quad()函数对func的多次调用return math.cos(2*math.pi*x)*math.exp(-x)+1.2fArea,err = integrate.quad(func,0.7,4)
print("Integral area:",fArea)

执行结果:

x= 2.35
x= 0.7430542279466668
x= 3.9569457720533334
x= 2.4613227224815875
...
x= 3.4178741117287044
Integral area: 4.029065401143393

​ 首先,我们定义了一个函数func(),它根据x计算y值。当对单个数值进行计算时,numpy的ufunc并不具备速度优势,所以我们使用了math模块。

​ integrate.quad()专门用于计算一元定积分,fArea,err = integrate.quad(func,0.7,4)取x值域[0.7,4]进行数值积分,在积分过程中,会反复调用func()函数计算y值。其返回一个元组,包括积分结果及误差。

​ integrate.quad()计算的积分会比方法1的矩形面积求和方法更加精确。

本文节选自作者的《Python编程基础及应用》视频教程及同名教科书。想完整零基础学习Python程序设计,欢迎使用此免费视频教程。

在这里插入图片描述

这篇关于Python求解数值积分-定积分求解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交