【Python】无限逼近求积分

news2025/3/11 3:29:37

✨博文作者 wangzirui32
💖 喜欢的可以 点赞 收藏 关注哦~~
👉本文首发于CSDN,未经许可禁止转载

Hello,大家好,我是wangzirui32,今天我们来学习如何用Python无限逼近求积分,开始学习吧!

1. 引入

密码
某店的wifi密码如上图,要想连接该店的wifi,应该如何求出密码呢?

2. 原理分析

笔者先以正弦函数的图像进行分析,如下图:(稍有瑕疵,望理解)
分析
如图,绿色的线为函数曲线,M为待求积分起点,N为待求积分终点。x轴被等分n份(即A,B,C,D,E,F,G,H,I,J,K,L等点),其中每个点都在函数曲线上同x值的点存在对应点(即A',B',C',D',E',F',G',H',I',J',K',L'等点),分别连接对应点,将对应点的连线作为长,x轴上相邻两点的连线为宽,构造长方形。
可以看到,所有长方形的面积和函数曲线与x轴围成的区域的面积相近。当n越大,这两个数值就越接近,越逼近真实值。
那么如何求所有长方形的面积和呢?
可从图中看出,每个长方形的宽是固定的,为1/n(分成n份),长就是x对应的y值,即f(x),所以面积和 S S S为:
S = 1 n f ( x 1 ) + 1 n f ( x 2 ) + 1 n f ( x 3 ) + . . . S = \frac{1}{n}f(x_1) + \frac{1}{n}f(x_2) +\frac{1}{n}f(x_3) + ... S=n1f(x1)+n1f(x2)+n1f(x3)+...
运用乘法分配律,得:
S = 1 n [ f ( x 1 ) + f ( x 2 ) + f ( x 3 ) + . . . ] S = \frac{1}{n}[f(x_1) + f(x_2) + f(x_3) + ... ] S=n1[f(x1)+f(x2)+f(x3)+...]
其中 x m − x m − 1 = Δ x = 1 n x_m - x_{m-1} = \Delta x = \frac{1}{n} xmxm1=Δx=n1(即相邻点x的差为固定值 1 n \frac{1}{n} n1).

3. 代码

有了如上分析,可快速写出计算代码:

from math import cos

def f(x):                           # wifi密码的积分函数
    return ((x**3)*cos(x/2)+0.5)*((4-x**2)**0.5)

def calculus():
    n = 1*10**8                     # n取一个较大值
    max_limit, min_limit = 2, -2    # 积分的上下限
    weight = 1/n                    # 长方形的宽(同时是delta x)

    x = min_limit                   # 从积分下限开始迭代
    result = 0
    while x < max_limit:
        result += f(x)*weight       # 累加面积
        x += weight                 # 计算下一个x值
    
    return result

print(calculus())

运行结果如下:

3.141592656855682

竟然和圆周率的值相近,前8位就是14159265,即wifi密码.

4. 优化

n较大时,计算速度会大幅度减慢,可以使用Numba(见笔者文章)进行提速:

from math import cos
from numba import njit

@njit
def f(x):
    return ((x**3)*cos(x/2)+0.5)*((4-x**2)**0.5)

@njit
def calculus():
    n = 1*10**10
    max_limit, min_limit = 2, -2
    weight = 1/n

    x = min_limit
    result = 0
    while x < max_limit:
        result += f(x)*weight
        x += weight
    
    return result

print(calculus())

🎉🎉🎉 好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!

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

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

相关文章

krita源码提供了Tarball 和KDE Repository两套源码的区别

krita系列文章目录 文章目录krita系列文章目录前言一、Tarball 和KDE Repository区别是什么&#xff1f;二、使用步骤前言 krita官方主页 krita官方下载界面 krita源码提供了Tarball 和KDE Repository两套源码&#xff0c;我一下就懵圈了&#xff0c;不知道两者的区别 一…

第二章 自然语言处理与单词的分布式表示

目录2.1 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;2.2 同义词词典2.2.1 WordNet2.2.2 同义词词典的问题2.3 基于计数的方法2.3.1 基于 Python的语料库的预处理2.3.2 单词的分布式表示2.3.3 分布式假设2.3.4 共现矩阵2.3.5 向量间的相似…

有哪些中西合璧的建筑设计?

所谓中西合璧&#xff0c;中即中华文化&#xff0c;体系繁多&#xff0c;源远流长&#xff0c;浩如烟海&#xff0c;是世界三大文化体系之一&#xff0c;在历史上曾是东亚文化的中心&#xff0c;一度影响欧洲&#xff1b;西即西方文化&#xff0c;西方物质文明和精神文明&#…

【JSP学习笔记】1.JSP 教程、简介及开发环境搭建

前言 本章介绍JSP的教程、简介及开发环境搭建。 JSP 教程 JSP 与 PHP、ASP、ASP.NET 等语言类似&#xff0c;运行在服务端的语言。 JSP&#xff08;全称Java Server Pages&#xff09;是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户…

2022国赛30:windows脚本题解析

大赛试题内容: ( 九) ) 脚本 【任务描述】 为了减少重复性任务的工作量,节省人力和时间,请采用脚本,实现快速批量的操作。 1.在 windows4 上编写 C:\CreateFile.ps1 的 powershell 脚本,创建20 个文件 C:\test\File00.txt 至 C:\test\File19.txt,如果文件存在,则首先删除…

Servlet初始化参数设置\获取,全局初始化参数的设置、获取

之前在学习SpringMVC、SpringSecurity时&#xff0c;会用到Filter&#xff0c;需要对Filter进行参数配置&#xff0c;而Filter本质上也是一个Servlet&#xff0c;然后对Servlet设置初始化参数已经忘记了&#xff0c;所以打算重新回顾并整理Servlet这一部分的内容&#xff08;虽…

[Netty源码] 编码和解码相关问题 (十二)

文章目录1.编码和解码的介绍2.相关继承3.解码器分析3.1 ByteToMessageDecoder基类3.2 FixedLengthFrameDecoder3.3 LineBasedFrameDecoder3.4 DelimiterBasedFrameDecoder3.5 LengthFieldBasedFrameDecoder4.编码器分析4.1 解码过程分析4.2 writeAndFlush方法分析4.3 MessageTo…

2007-2020年国际产权指数InternationalPropertyRightsIndex(IPRI)IPRI

2007-2020年国际产权指数InternationalPropertyRightsIndex(IPRI)IPRI 1、来源&#xff1a;国际产权联合会 International Poverty Right Alliance 2、时间&#xff1a;2007-2020 3、范围&#xff1a;全球 4、指标说明&#xff1a; country、region、score、annual change…

提高软件测试效率的6大注意事项

1、测试策略非常重要 测试策略的基础是风险评估&#xff0c;我们需要通过失效概率和失效影响两个维度&#xff0c;对风险进行高、中、低的区分和可能性的判断。如CoCode开发云能够根据风险影响等级&#xff0c;自动计算出风险系数&#xff0c;并对风险进行优先级划分。而系数超…

项目管理:我们每个人都是管理者

项目管理的技能在生活中时时能用到、处处可锻炼。只要有心&#xff0c;项目成员一样可以学习和实践项目管理知识&#xff0c;也可以说&#xff0c;我们每个人都是管理者。 1、管理是职能而不是职位 有的人认为项目管理只是管理者应该学的&#xff0c;其实不是这样的&#xf…

卷积神经网络底层原理

1.卷积神经网络底层原理 声明&#xff1a;以下为《大话计算机》作者冬瓜哥课程视频截图&#xff0c;仅供学习 1.1卷积 一张图经过一种卷积核&#xff08;核函数&#xff09;滑动窗口进行卷积运算后得到一张特征图&#xff0c;这只是这种卷积核视角下看到的特征。所以我们需要多…

一起学 WebGL:图形变形以及矩阵变换

之前绘制了三角形&#xff0c;我们现在给它做一个变形操作。 对一个三角形进行变形&#xff0c;其实就是重新这个三角形的三个顶点的位置&#xff0c;计算完后再绘制出来&#xff0c;相比原来就发生了变形。 变形常见的有位移、选择、缩放。位移&#xff0c;其实就是给每个顶…

中国版ChatGPT即将来袭-国内版ChatGPT入口

必应chatGPT入口 目前并不存在“必应ChatGPT”这个概念。必应&#xff08;Bing&#xff09;是Microsoft公司推出的一款搜索引擎&#xff0c;而ChatGPT是OpenAI开发的自然语言处理技术&#xff0c;它们是两个不同的产品品牌。 不过&#xff0c;Microsoft也在自然语言处理领域里…

Microsoft 365管理和报告工具

在管理 Microsoft 365 设置的过程中&#xff0c;本机Microsoft 365 功能可能无法满足你的需求。M365 Manager Plus 具有复杂的功能&#xff0c;使 Microsoft 365 管理毫不费力。它提供基于功能的管理&#xff0c;因此你可以单独管理 Microsoft 365 组件。 使用 M365 Manager P…

进程的概念以及PCB的概念

在linux上进程是非常重要的知识点&#xff0c;今天我自我发表浅见。 可执行程序与进程 当在linux上编译完毕一个源文件生成可执行程序&#xff0c;这个时候这可执行程序只能称为普通文件&#xff0c;还不能定义为进程&#xff0c;在加载在内存中后才可称为进程&#xff0c;那…

次优二叉查找树(次优查找树)_递归和非递归实现_20230414

次优二叉查找树&#xff08;次优查找树)-递归和非递归实现 前言 当有序表中的各记录的查找概率相等的时候&#xff0c;采用折半查找效率可以提升查找性能&#xff1b;如果有序表中的各记录的查找概率不相等&#xff0c;那么折半查找就不再适用。 如果只考虑查找成功的情况&a…

Robocup 仿真2D 学习笔记(四)阵型编辑

一、阵型文件介绍 阵型文件里设置的是球员在比赛中的跑位点 基于helios base的阵型文件&#xff0c;在目录/src/formations-dt中 阵型的调用在/src/strategy.cpp 文件&#xff1a; before-kick-off.conf 是球员上场之后的阵型 &#xff08;或进球等待开球&#xff09; no…

有限元基础编程-何晓明老师课件-一维程序实现matlab

文章目录前言一、主程序二、一维有限元求解程序-框架三、组装刚度矩阵assemble_matrix_from_1D_integral.m2.1 算法2.2 get_standard_gauss_1D.m2.3 get_Gauss_local_1D.m前言 只是为方便学习&#xff0c;不做其他用途&#xff0c;课程理论学习来自b站视频有限元基础编程-何晓明…

RT-Thread线程管理以及内核裁剪

RT-Thread线程管理以及内核裁剪 1. RTOS概述 1.1 RTOS的定义 实时操作系统&#xff08;Real-time operating system, RTOS&#xff09;&#xff0c;又称即时操作系统&#xff0c;它会按照排序运行、管理系统资源&#xff0c;并为开发应用程序提供一致的基础。 实时操作系统与…

核心业务2:借款人申请借款额度

核心业务2&#xff1a;借款人申请借款额度 1.业务流程图 ------------截止提交个人信息部分-------- 2.借款人申请借款额度数据库设计 3.借款人申请额度流程 4.前端代码逻辑 5.后端代码逻辑 ------------截止提交个人信息部分-------- 核心业务2&#xff1a;借款人申请借…