【数值计算方法(黄明游)】数值积分(一):复化(梯形公式、中点公式)【理论到程序】


文章目录

  • 一、梯形公式、中点公式
    • 1. 梯形公式(Trapezoidal Rule):
    • 2. 复化梯形公式(Composite Trapezoidal Rule):
    • 3. 中点公式(Midpoint Rule):
    • 4. 复化中点公式(Composite Midpoint Rule):
  • 二、例题
  • 三、程序
    • 1. 中点公式
    • 2. 梯形公式

  积分学的基本定理告诉我们,只要能找到 f ( x ) f(x) f(x) 的原函数 F ( x ) F(x) F(x),就可以通过 F ( b ) − F ( a ) F(b) - F(a) F(b)F(a) 来求得定积分的值。但实际上,找到 f ( x ) f(x) f(x) 的原函数 F ( x ) F(x) F(x) 并不总是容易的事情。有些函数的原函数可能没有简洁的表达式,或者无法通过常见的初等函数表示。
  为了解决这个问题,数值积分方法提供了一种近似计算定积分的途径。这些方法通过离散化积分区间,使用数值技术来估计积分值。下面将介绍一些常见的数值积分方法:

一、梯形公式、中点公式

1. 梯形公式(Trapezoidal Rule):

  梯形公式是最简单的数值积分方法之一,它基于使用梯形逼近曲线下的面积,其数学表达式为:

∫ a b f ( x ) d x ≈ b − a 2 [ f ( a ) + f ( b ) ] \int_a^b f(x) \,dx \approx \frac{b-a}{2} [f(a) + f(b)] abf(x)dx2ba[f(a)+f(b)]
通过连接函数图像上的两个端点,形成一个梯形,然后计算梯形的面积来估计定积分值。

2. 复化梯形公式(Composite Trapezoidal Rule):

  复化梯形公式是对梯形公式的改进,通过将积分区间分割成多个小区间,然后在每个小区间上应用梯形公式,最后将结果相加,其数学表达式为:

∫ a b f ( x ) d x ≈ h 2 [ f ( a ) + 2 f ( x 1 ) + 2 f ( x 2 ) + … + 2 f ( x n − 1 ) + f ( b ) ] \int_a^b f(x) \,dx \approx \frac{h}{2} [f(a) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(b)] abf(x)dx2h[f(a)+2f(x1)+2f(x2)++2f(xn1)+f(b)]

其中, h = ( b − a ) / n h=(b-a)/n h=(ba)/n 是每个小区间的宽度。

3. 中点公式(Midpoint Rule):

  中点公式使用区间中点的函数值来逼近曲线下的面积,数学表达式为:

∫ a b f ( x ) d x ≈ f ( a + b 2 ) ( b − a ) \int_a^b f(x) \,dx \approx f\left(\frac{a+b}{2} \right)(b-a) abf(x)dxf(2a+b)(ba)

4. 复化中点公式(Composite Midpoint Rule):

  复化中点公式是对中点公式的改进,通过将积分区间分割成多个小区间,然后在每个小区间上应用中点公式,最后将结果相加,数学表达式为:

∫ a b f ( x ) d x ≈ h ∑ i = 0 n − 1 f ( a + h 2 + i h ) \int_a^b f(x) \,dx \approx h \sum_{i=0}^{n-1} f\left(a + \frac{h}{2} + ih\right) abf(x)dxhi=0n1f(a+2h+ih)

其中, h h h 是每个小区间的宽度, n n n 是分割的小区间数量。

二、例题

有一组(x, y)值:
( y = e x y=e^x y=ex)
( 1.1 , 3.0042 ) ( 1.3 , 3.6693 ) ( 1.5 , 4.4817 ) \begin{align*} & (1.1, 3.0042) \\ & (1.3, 3.6693) \\ & (1.5, 4.4817) \end{align*} (1.1,3.0042)(1.3,3.6693)(1.5,4.4817)

  • 使用中点公式: ∫ a b f ( x ) d x ≈ ( b − a ) ⋅ f ( a + b 2 ) \int_a^b f(x) \,dx \approx (b - a) \cdot f\left(\frac{a + b}{2}\right) abf(x)dx(ba)f(2a+b)

    • 这里 a = 1.1 a = 1.1 a=1.1 b = 1.5 b = 1.5 b=1.5,所以中点公式为: ∫ 1.1 1.5 f ( x ) d x ≈ ( 1.5 − 1.1 ) ⋅ f ( 1.1 + 1.5 2 ) = 0.4 f ( 1.3 ) = 1.46772 \int_{1.1}^{1.5} f(x) \,dx \approx (1.5 - 1.1) \cdot f\left(\frac{1.1 + 1.5}{2}\right)=0.4f(1.3)=1.46772 1.11.5f(x)dx(1.51.1)f(21.1+1.5)=0.4f(1.3)=1.46772
  • 使用复化梯形公式: ∫ a b f ( x ) d x ≈ h 2 [ f ( x 0 ) + 2 f ( x 1 ) + 2 f ( x 2 ) + … + 2 f ( x n − 1 ) + f ( x n ) ] \int_{a}^{b} f(x) \,dx \approx \frac{h}{2} \left[ f(x_0) + 2f(x_1) + 2f(x_2) + \ldots + 2f(x_{n-1}) + f(x_n) \right] abf(x)dx2h[f(x0)+2f(x1)+2f(x2)++2f(xn1)+f(xn)]

    • 这里小区间的宽度 h = 0.2 h=0.2 h=0.2,代入数据点的 y y y 值:
      ∫ 1.1 1.5 f ( x ) d x ≈ 0.2 2 [ 3.0042 + 2 ⋅ 3.6693 + 4.4817 ] = 1.48245 \int_{1.1}^{1.5} f(x) \,dx \approx \frac{0.2}{2} \left[ 3.0042+ 2\cdot 3.6693 + 4.4817 \right]=1.48245 1.11.5f(x)dx20.2[3.0042+23.6693+4.4817]=1.48245

三、程序

1. 中点公式

def midpoint_rule(data):result = 0for i in range(len(data) - 1):a, fa = data[i]b, fb = data[i + 1]result += (b - a) * fbreturn result

2. 梯形公式

def trapezoidal_rule(data):result = 0for i in range(len(data) - 1):a, fa = data[i]b, fb = data[i + 1]result += (b - a) * (fa + fb) / 2return result

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

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

相关文章

算法通关村第十五关 | 黄金 | 超大规模数据场景

1.对 20GB 文件进行排序 有一个 20GB 的文件,每行一个字符串,对其进行排序。 这里可以使用分块方式来排序,先将每块进行排序,然后要逐步进行合并,也叫做外部排序。 2.超大文本中搜索两个单词的最短距离 有一个超大…

【UML】NO.2 UML必须了解的基础知识(举例)

目录 一、UML的构成 1.1 事物 1.2 关系 1.3 图 二、事物 2.1 结构事物 2.1.1 类(class) 2.1.2 接口 2.1.3 协作 2.1.4 用例 2.1.5 主动类 2.1.6 构件 2.1.7 节点 2.2 行为事物 2.2.1 交互 2.2.2 状态机 2.2.3 活动 2.3 分组事物 包 …

Unittest单元测试框架

Unittest介绍、单元测试用例的组织、测试用例的执行、测试用例的跳过 Unittest介绍 为什么要学习单元测试框架 测试用例的组织与运行需要单元测试框架的参与,从而满足不同测试场景的需要,单元测试框架提供了丰富的比较方法:实际结果与预期结…

Viewport Meta 标记:让网页适应各种设备的魔法符号

在我们用手机或平板电脑浏览网页时,你是否曾发现有些网页能够很好地适应屏幕,而有些却需要左右滑动才能完整显示内容?这就涉及到一个神奇的东西——Viewport Meta 标记。 最近本人在研究自适应的各自实现方法,比如media媒体查询、…

6个免费设计素材库,设计师都在用,赶紧收藏!

设计师应该都知道,在设计过程中找素材真的很费时间,有的时候全网翻遍都未必能找到自己想要的,以至于现在很多设计师都花钱去购买素材,你说要是拿去参赛或者商用还好,就拿平常设计来说你舍得花这个钱去买吗,…

ubuntu-base 20.04防火墙配置方法

ubuntu-base 20.04防火墙配置方法 在ubuntu-base 20.04 上配置防火墙可以使用 UFW(Uncomplicated Firewall)工具。以下是一些基本的防火墙配置命令: 1. 检查防火墙状态: sudo ufw status 2. 启用防火墙: sudo ufw…

numpy.resize(修改数据维度)

numpy.resize 函数用于调整数组的大小。它接受一个数组和一个新的形状作为参数,并返回具有新形状的新数组。如果新数组的大小大于原始数组的大小,resize 将重复原始数组的元素以填充新数组。如果新数组的大小小于原始数组的大小,则 resize 将…

亚马逊云科技Amazon Bedrock,现推出更多模型选择和全新强大功能

亚马逊云科技在re:Invent 2023上宣布推出Amazon Bedrock更多模型选择和强大功能,帮助客户更轻松地构建和规模化针对其业务定制的生成式AI应用程序。 Amazon Bedrock是一项全面托管的服务,用户可轻松访问来自AI21 Labs、Anthropic、Cohere、Meta、Stabili…

未能正确利用原型继承(js的问题)

考虑下面代码: BaseObject function(name) {if (typeof name ! "undefined") {this.name name;} else {this.name default} }; 上面代码比较简单,就是提供了一个名字,就使用它,否则返回 default: var firstObj n…

网页设计的灵感从哪来?试试这15个灵感网站

设计灵感网站是许多设计师必备的工具,因为它们提供了一个创造性的源泉,可以帮助设计师找到灵感和灵感,从而开发出惊人的设计。 推荐15个设计灵感网站,涵盖了平面设计、网页设计、UI设计等不同领域的设计。 即时设计资源广场 即…

shell学习帖子积累

.bashrc与.bash_profile区别_bashprofile和bashrc-CSDN博客 帖子2: $0 - 脚本名 $1 - 命令参数1 $# - 几个参数 $ - 参数分别是什么 $$ - 当前脚本PID $USER - 用户 $HOSTNAME - 主机名 $LINENO - 行号 $RANDOM - 随机数 $? - 返回函数结果 实例: abc.s…

Linux系统vim,gcc,g++工具使用及环境配置,动静态库的概念及使用

Linux系统vim,gcc,g工具使用及环境配置,动静态库的概念及使用 1. Linux编辑器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5简单的vim配置 2.Linux编译器-gcc/g的使用2.1 准备阶段2.2gcc的使用2.…

了解 git rebase

了解 git rebase 大多数人习惯使用 git merge 将更改从功能分支合并到主分支,但还有其他方法。我们是否曾经遇到过 git rebase 这个术语并想知道它是什么?或者我们可能听说过 rebase 和 merge ,但不确定何时使用哪个?不用担心&am…

企业架构LB-服务器的负载均衡之Haproxy实现

企业架构LB-服务器的负载均衡之HAProxy实现 学习目标和内容 1、能够通过HAProxy实现负载均衡 ###1、介绍 Introduction HAProxy, which stands for High Availability Proxy, is a popular opensource software TCP/HTTP LoadBalancer and proxying solution which can be ru…

力扣111. 二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2 示例 2: 输入…

最大子段和问题

题目&#xff1a; 分治法求解思路&#xff1a; 代码&#xff1a; #include<iostream> using namespace std;int maxSum(int arr[], int left, int right) {int sum 0;if (left right){if (arr[left] > 0){return arr[left];}else{return 0;}}else{int center (l…

AWS攻略——子网

文章目录 分配子网给Public子网分配互联网网关创建互联网网关附加到VPC 给Public子网创建路由表关联子网 打通Public子网和互联网网关 创建Public子网下的EC2进行测试配置Private子网路由给Private子网创建路由表附加在Private子网 创建Private子网下的EC2进行测试创建实例在跳…

Java / Scala - Trie 树简介与应用实现

目录 一.引言 二.Tire 树简介 1.树 Tree 2.二叉搜索树 Binary Search Tree 3.字典树 Trie Tree 3.1 基本概念 3.2 额外信息 3.3 结点实现 3.4 查找与存储 三.Trie 树应用 1.应用场景 2.Java / Scala 实现 2.1 Pom 依赖 2.2 关键词匹配 四.总结 一.引言 Trie 树…

c++通讯录操作系统

实现功能 1、添加联系人 2、显示联系人 3、删除联系人 4、查找联系人 5、修改联系人 6、清空联系人 0、退出通讯录 //-封装函数显示该界面 如 void showmenu //-在main函数中调用封装好的函数 #include<iostream> #include<string> #define max 1000 using n…

如何使用京东商品SKU API获取商品的保修信息?

一、背景介绍 京东商品SKU API是京东开放平台提供的一套API接口&#xff0c;用于获取京东商城的商品SKU信息。保修信息是商品SKU信息中的重要组成部分&#xff0c;通过该API可以获取到商品的保修政策、保修期限等详细信息。本文将介绍如何使用京东商品SKU API获取商品的保修信…