首页 > 编程语言 >Python数值计算(30)——矩形及复合矩形积分公式

Python数值计算(30)——矩形及复合矩形积分公式

时间:2024-10-23 23:18:03浏览次数:6  
标签:Python 积分 30 复合 Int 公式 区间 矩形

前面介绍了数值积分的基本背景知识,接下来就介绍各种常见的数值积分算法,本次主要介绍矩形和梯形积分公式。

1. 矩形积分公式

对于一个连续函数f(x),根据中值定理有:

\int_{a}^{b}f(x)dx=(b-a)f(\xi), \xi \in (a,b)

现在的关键是如何确定\xi使误差尽可能比较小,一个比较简单的想法是使用该区间中间值,亦即\xi=(a+b)/2

Python中实现代码如下:

def RectInt(f,a,b):
    return (b-a)*f((a+b)/2)

其效果如图所示:

图中黄色区域就是以1为底边长,humps(0.5)为高的矩形,其面积为25,而解析式的结果为35.858325395498674,两者之间的差距相当大,误差达到了惊人的30.28%,这几乎是不可接受的。

复合矩形积分公式

如果使用微分的思想,我们可以把这个积分区间划分为等长的N个子区间,然后在每个子区间上应用矩形积分,再把每一段的积分结果求和,其误差就会比单一的区间要好很多,这也就是复合矩形积分公式,假设有n个等距的点,将[a,b]划分为(n-1)个子区间,则:


I=\sum_{i=0}^{n-1}h*f(x_i+h/2)

其中:

h=(b-a)/(n-1)\\ x_i=a+i*h

可以把每一个区间的积分,看做是一个矩形,其高是中点处的函数值,而宽则是子区间长h。 

算法实现如下:

def compRectInt(f,a,b,n=100):
    '''
    复合矩形法则求积分
    '''
    x=np.linspace(a,b,n)
    h=x[1]-x[0]
    func=np.vectorize(f)
    Int=0
    for i in range(n-1):
        Int+=h*f(x[i]+h/2)
    return Int

运行效果展示如下:

可以看到,随着子区间数量的不断增加,其相对误差也越来越小。

标签:Python,积分,30,复合,Int,公式,区间,矩形
From: https://blog.csdn.net/cdinten/article/details/143195680

相关文章

  • Leetcode刷题Python之3185.构成整天的下标对数目II
    提示:直接暴力求解会超过执行时间,因此要考虑其他方法降低复杂度。文章目录问题描述一、示例:二、解题思路1.找余数2.利用哈希表存储余数3.逐步统计配对数代码实现解释代码复杂度分析问题描述给定一个整数数组hours,表示时间,以小时为单位。我们需要找到数组中满......
  • Python学习的自我理解和想法(20)
    #1024程序员节|征文#学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码!今天是学Python的第20天,学的内容是面向对象中的私有属性,私有方法,多态,单例计模式。开学了,时间不多,写得不多,见谅。目录1.私有属性(1).含义(2).语法(3).演示(4).调用私有属性2.私有方法(1).含义......
  • 12306抢票-python
    写了一整天,代码设置起始站,终点站,出行日期,通过爬虫从12306爬取选择当日的车票信息,保存在csv文件中,随后通过邮箱将包含车次信息的csv文件发送到个人邮箱账号,个人阅读后回发一个邮件,期间包含车次信息,电脑进入邮箱读取邮件,获得所选车次,进行自动化订票,期间需要输入一次验证码,目前是......
  • 题解 SS241023D【数颜色】/ ZROI3029【静态邻域数颜色】
    静态邻域数颜色-题目-ZhengruiOnlineJudge题目描述静态树上邻域数颜色。给一棵\(n\)个点的无根树,第\(i\)个点颜色为\(a_i\)。有\(q\)次询问,每次询问如下:给定\(x,d\),考虑所有距离\(x\)不超过\(d\)的点,求有多少种不同的颜色。形式化地,给定\(x,d\),求\(|\{a......
  • python基于django的校园论坛交流表白墙系统
    目录项目介绍具体实现截图预期达到的目标技术栈编码规范开发技术介绍系统的稳定性和可维护性论文大纲目录核心代码部分展示详细视频演示源码获取方式项目介绍该校园系统主要是来服务与学校内各个职务人员,不管是学生还是老师还是其他在校职工,都可以通过这个平台来进......
  • AtCoder Beginner Contest 375 C题 (python解)
    PanasonicProgrammingContest2024(AtCoderBeginnerContest375)C-SpiralRotation(python解)**原题链接:[(https://atcoder.jp/contests/abc375/tasks/abc375_c)]题目简述:这道题要求对一个NxN的网格进行特定的螺旋旋转操作,而这个N总是偶数。在这里,网格中的每个单元......
  • Python多进程学习与使用:全面指南
    Python多进程学习与使用:全面指南目录引言什么是多进程?为什么使用多进程?Python中的多进程模块:multiprocessing创建进程的基本方法进程间通信进程池多进程与多线程的比较常见问题和解决方案最佳实践和性能优化实战项目:多进程文件处理系统总结引言在当今的计算环境中,充分利......
  • python pdf 转图片
    1.需要安装requests,PyMuPDF依赖pipinstallrequests,PyMuPDF。可以通过定义的缩放因子和旋转因子去缩放图片和旋转。#!/usr/bin/envpython3#-*-coding:utf-8-*-importdatetimeimportosimportrequestsimportfitz#fitz就是pipinstallPyMuPDFheaders......
  • Python——量化交易的得力助手
    在当今的金融领域,量化交易正逐渐成为一种重要的交易方式。而在众多编程语言中,Python似乎成为了量化交易的首选,今天我们总结下在量化交易中Python常用的的库和工具。数据处理与分析1.Pandas:这是一个用于数据处理和分析的强大库。在量化交易中,它可以用来读取、清洗和处......
  • 架构师之路-学渣到学霸历程-30
    Nginx的安装教程今天分享一个nginx的安装教程;主要还是使用yum安装,yum安装的主要要点就是配置一下Nginx的yum源nginx的官网也有nginx的yum源;一起来跟着脚步敲敲;1、Nginx的安装方式:yum安装部署源码安装部署2、yum安装Nginxweb服务配置yum仓库:网页登录:nginx.org官网–......