Python 求积分

news2024/9/19 9:24:56

文章目录

  • Part.I Introduction
  • Part.II 基础知识
    • Chap.I 特殊量的表示
    • Chap.II integrate 函数简析
  • Part.III 实例
    • Chap.I 一重积分
    • Chap.II 二重积分
  • Reference

Part.I Introduction

高中及大学时代,苦『积分』久矣,当时如掌握了此『黑科技』,课堂作业岂不是秒秒钟搞定。本文将介绍如何用 Python 求积分,包括求一重积分、二重积分等等。

在这里插入图片描述

需要的包有

  • sympy:符号工具包
  • scipy:科学计算包
from sympy import *
from scipy.stats import *

Part.II 基础知识

在正式开始之前,首先需要了解下面的一些基础知识。

Chap.I 特殊量的表示

在求积分的过程中,会用到许多像『无穷大』、『PI』等特数量,它们在sympy库中是如何表示的呢?下面一个表格对它们进行了汇总

代码表示符号含义
pi π \pi π圆周率
oo ∞ \infty 无穷大
-oo − ∞ -\infty 负无穷大
exp(x) e x e^x ex自然常数的 x 次幂
log(x) l n ( x ) ln(x) ln(x)以自然常数为底的对数 l o g e x log_ex logex
erf(x) erf ⁡ ( x ) \operatorname{erf}(x) erf(x)误差函数 erf ⁡ ( x ) = 2 π ∫ 0 x e − t 2 d t \operatorname{erf}(x)=\frac{2}{\sqrt{\pi}}\int_{0}^{x} e^{-t^2}dt erf(x)=π 20xet2dt
erfc(x) erfc ⁡ ( x ) \operatorname{erfc}(x) erfc(x)误差函数补 erfc ⁡ ( x ) = 1 − erfc ⁡ ( x ) \operatorname{erfc}(x)=1-\operatorname{erfc}(x) erfc(x)=1erfc(x)
erfi(x) erfci ⁡ ( x ) \operatorname{erfci}(x) erfci(x)虚误差函数 erfci ⁡ ( x ) = − i erf ⁡ ( i x ) = 2 π ∫ 0 x e t 2 d t \operatorname{erfci}(x)=-i\operatorname{erf}(ix)=\frac{2}{\sqrt{\pi}}\int_{0}^{x}e^{t^2}dt erfci(x)=ierf(ix)=π 20xet2dt

Chap.II integrate 函数简析

求积分的函数 integrate()scipy 包中被定义,它的常用方法汇总如下表所示

代码含义
integrate(f(x),x)计算不定积分 ∫ f ( x ) d x \int f(x)dx f(x)dx
integrate(f(x),(x,a,b))计算定积分 ∫ a b f ( x ) d x \int_a^b f(x)dx abf(x)dx
integrate(f(x,y),x,y)计算双重不定积分 ∫ ∫   f ( x , y ) d x d y \int \int\ f(x,y)dxdy ∫∫ f(x,y)dxdy
integrate(f(x,y),(x,a,b),(y,c,d))计算双重定积分 ∫ c d ∫ a b   f ( x , y ) d x d y \int_c^d \int_a^b\ f(x,y)dxdy cdab f(x,y)dxdy

更高重积分同理

Part.III 实例

这部分介绍几个求积分的实例。

Chap.I 一重积分

求不定积分

求下面的不定积分
F ( x ) = ∫ x e x ( e x + 1 ) 2   d x F(x)=\int \frac{xe^x}{(e^x+1)^2} \ dx F(x)=(ex+1)2xex dx
代码如下

def singleIntegral_a():
    """ 一重不定积分 """
    x = symbols('x')
    print(integrate(x*exp(x)/(exp(x)+1)**2, x))
    return

结果为

x - x/(exp(x) + 1) - log(exp(x) + 1)


F ( x ) = x − x e x + 1 − l n ( e x + 1 ) F(x)=x-\frac{x}{e^x+1}-ln\left( e^x+1 \right) F(x)=xex+1xln(ex+1)


求定积分
F ( x ) = ∫ 0 1 x 2 + e x + 1   d x F(x)=\int_0^1 x^2+e^x+1 \ dx F(x)=01x2+ex+1 dx
代码如下

def singleIntegral_b():
    """ 一重定积分 """
    x = symbols('x')
    fmt=integrate(x**2 + exp(x) + 1, (x, 0, 1))
    print(fmt)
    print(fmt.evalf())
    return

结果为

1/3 + E
3.05161516179238

Chap.II 二重积分

求不定积分
∫ e x 2 + y 2   d x \int e^{x^2+y^2}\ dx ex2+y2 dx
代码如下:

def doubleIntegral_a():
    """ 二重不定积分 """
    x, y = symbols('x y')
    fmt = integrate(exp(x**2+y**2),x,y)
    print(fmt)
    #print(fmt.evalf())
    return

结果为

pi*erfi(x)*erfi(y)/4


F ( x ) = π 4 ⋅ erfci ⁡ ( x ) ⋅ erfci ⁡ ( y ) F(x)=\frac{\pi}{4}\cdot\operatorname{erfci}(x)\cdot\operatorname{erfci}(y) F(x)=4πerfci(x)erfci(y)

如果设定范围 x ∈ [ 0 , 1 ] ,   y ∈ [ 1 , 2 ] x\in[0,1],\ y\in[1,2] x[0,1], y[1,2],则代码为

def doubleIntegral_a():
    """ 二重不定积分 """
    x, y = symbols('x y')
    fmt = integrate(exp(x**2+y**2),(x, 0, 1), (y, 1, 2))
    print(fmt)
    print(fmt.evalf())
    return

结果为

-pi*erfi(1)**2/4 + pi*erfi(1)*erfi(2)/4
21.9251145961748

求定积分
F ( x ) = ∫ 0 1 ∫ 0 3 − 2 y x y   d x d y F(x)=\int_{0}^{1}\int_{0}^{3-2y}xy\ dxdy F(x)=01032yxy dxdy
代码如下:

def doubleIntegral_b():
    """ 二重定积分 """
    x, y = symbols('x y')
    fmt = integrate(x * y, (x, 0, 3 - 2*y), (y, 0, 1))
    print(fmt)
    print(fmt.evalf())
    return

结果为

3/4
0.750000000000000

Reference

  • 用 python 的库 sympy 求积分
  • Python 求高斯误差函数 erf 和 erfc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1702998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MiniCPM-V】win10本地部署OCR等性能测试

性能尝试 本地配置如下 --------------------------------------------------------------------------------------- | NVIDIA-SMI 546.80 Driver Version: 546.80 CUDA Version: 12.3 | |-----------------------------------------------------…

设计模式17——模板方法模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 模板方法模式(Temp…

Java面试八股之自旋是什么意思

Java中的自旋是什么意思 自旋是多线程编程中的一种同步机制,尤其在Java中与锁的实现密切相关。当一个线程尝试获取某个锁(如内置锁或显式锁)时,如果锁已被其他线程持有,通常的做法是将该线程置于阻塞状态,…

知识融合概述

文章目录 知识融合知识融合过程研究现状技术发展趋势 知识融合 知识融合的概念最早出现在1983年发表的文献中,并在20世纪九十年代得到研究者的广泛关注。而另一种知识融合的定义是指对来自多源的不同概念、上下文和不同表达等信息进行融合的过程认为知识融合的目标是…

02 FreeRTOS 任务

1、创建任务函数 1.1 动态内存的使用 在之前我们如果要创建一个与学生有关的任务,我们会定义: //打印50个学生的信息 char name[50][100]; int age[50]; int sex[50]; //1表示男,0表示女 int score[50]; 如果之后要对其进行修改会非常麻烦&…

java面对对象编程-多态

介绍 方法的多态 多态是在继承,重载,重写的基础上实现的 我们可以看看这个代码 package b;public class main_ {public static void main(String[] args) { // graduate granew graduate(); // gra.cry();//这个时候,子类的cry方法就重写…

[Java EE] 网络编程与通信原理(三):网络编程Socket套接字(TCP协议)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

第36届世界超级小姐大赛安徽赛区正式启动

5月26日,在现场几百位出席仪式的社会名流、时尚界大咖、文化旅游机构负责人和前沿品牌代表以及现场嘉宾的共同见证下,第36届世界超级小姐大赛安徽赛区活动的神秘面纱终于在安徽黄山悠悠湖文化中心正式揭开。伴随着高亢激情的现代音乐,长发飘逸、身形灵动…

“AURORA-M:首个遵循人类审查安全指令微调的开源多语言模型

在人工智能领域,多模态学习是一个日益增长的研究领域,它涉及将来自不同源(如图像、文本、音频等)的信息结合起来。但高昂的训练计算成本限制了模型的普及性,使得小型机构和个人难以负担。而且现有模型在多语言能力上受…

结算协同,打通企业上下游业、财、票、资

市场变革,转型当先 随着电子发票的普及与数字化浪潮的涌动,企业正面临着前所未有的转型挑战。如何在快速变化的市场中站稳脚跟,提升竞争力?答案在于数字化转型,特别是供应链结算流程的革新。 无纸化、自动化&#xff0…

数字孪生为什么这么火?水务离不开它的原因又是什么?

数字孪生利用可视化技术结合视频融合、BIM、5G、物联网、云计算和大数据等先进技术,围绕实现水质达标、安全生产、高效节能等生产、运营和管理目标。它构建了一个三维场景,涵盖自来水厂区的建筑、生产设备、管线等设施,以实现对水厂实时运行信…

分享目前堪称最好用的车机桌面app,支持画中画模式!

好用的车机桌面了,支持悬浮画中画! 如果你想改变单调的车机桌面,那么这篇文章你不要错过了!支持地图悬浮、画中画的车机桌面,不要错过! 今天阿星给大家分享3款好用、好看的大屏桌面软件,重要的…

Python数据分析常用函数

Python基础 数字处理函数 Python提供了用于数字处理的内置函数和内置模块(math),使用内置模块,需要先导入 import math。 内置函数math模块abs(-5)返回绝对值math.ceil(2.3)返回不小于x的最小整数divmod(9,4)返回商和余数math.floor(2.3)返回不大于x的…

Unity OutLine 模型外描边效果

效果展示: 下载链接

十四天学会Vue——Vue核心(理论+实战)中篇(第二天)

声明:是接着上篇讲的哦,感兴趣可以去看一看~ 这里一些代码就不写了,为了缩减代码量,大家知道就可以了: Vue.config.productionTip false //阻止 vue 在启动时生成生产提示。热身小tips,可以安装这个插件&…

记一次重定向问题(浏览器安全)解决

近期做单点登陆功能,本身应该是一个很简单的功能,却发生了意向不到的问题…让我们看下: 首先第三方给出的地址需要通过JWT框架获取token拼接后跳转,我这边为了方便首选肯定是考虑用response.sendRedirect(url),但是做好…

源代码防泄漏方案需要具备哪些因素?

首选选择加密软件对公司来说是一项关键决策,需要细致考虑多个因素。 选择合适的加密软件:关键因素与推荐方案 一、稳定性:加密软件的核心 稳定性是评估加密软件的首要因素。一个不稳定的加密软件可能导致数据损坏或系统冲突,影响…

【机器学习】机器学习在信息安全领域中的典型应用

🚀🚀🚀传送门 🔒机器学习在信息安全领域中的典型应用📕利用机器学习检测恶意行为并阻断攻击🌈使用机器学习分析移动终端安全状况⭐借助机器学习提高信息安全分析水平🎬依靠机器学习自动完成重复…

“按摩”科技?

都说A股股民是特别善于学习的,这不市场又现新概念——“按摩科技”,成立仅6年,把上门按摩干到35亿营收也是没谁了,现在号称有1000万用户,3万家入驻商户数的按摩平台,难道就凭借2.5万名女技师,活…

【YOLO 系列】基于YOLO V8的学生上课行为检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言 在现代教育环境中,学生上课行为的监测对于提升教学质量和学生学习效率具有重要意义。然而,传统的人工观察方法不仅效率低下,而且难以保证客观性和准确性。为了解决这一问题,我们启动了这个项目,目的是利用YOLOV8…