数值积分:通过复合梯形法计算

news2025/2/22 11:23:25

在物理学和工程学中,很多问题都可以通过数值积分来求解,特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中,我将讨论如何使用 复合梯形法 来进行数值积分,并以一个简单的计算为例,展示如何使用该方法,并附带Matlab程序。

数值积分的基本原理

数值积分的基本思想是将一个连续的积分问题转化为离散的求和问题,通常是通过将积分区间划分成若干小的子区间。

复合梯形法

复合梯形法就是其中的一种方法,它的基本原理如下:

  1. 首先,将积分区间分为 n 个小区间,每个小区间的宽度为 h。
  2. 然后,利用梯形公式近似每个小区间内函数的积分:
    在这里插入图片描述

将积分区间 [ a , b ] [a, b] [a,b] 划分为 n n n 等分,则每个小区间的宽度为: h = b − a n h = \frac{b - a}{n} h=nba
因此,积分可以表示为:
I = ∫ a b f ( x )   d x = ∑ k = 0 n − 1 ∫ x k x k + 1 f ( x )   d x I = \int_a^b f(x) \, dx = \sum_{k=0}^{n-1} \int_{x_k}^{x_{k+1}} f(x) \, dx I=abf(x)dx=k=0n1xkxk+1f(x)dx
每个子区间 [ x k , x k + 1 ] [x_k, x_{k+1}] [xk,xk+1] 上的积分使用梯形公式,得到:
∫ x k x k + 1 f ( x )   d x ≈ h 2 [ f ( x k ) + f ( x k + 1 ) ] \int_{x_k}^{x_{k+1}} f(x) \, dx \approx \frac{h}{2} \left[ f(x_k) + f(x_{k+1}) \right] xkxk+1f(x)dx2h[f(xk)+f(xk+1)]
因此,整个区间的积分为:
I = ∫ a b f ( x ) d x = ∑ k = 0 n − 1 ∫ x k x k + 1 f ( x )   d x ≈ ∑ k = 0 n − 1 h 2 [ f ( x k ) + f ( x k + 1 ) ] = h 2 { [ f ( x 0 ) + f ( x 1 ) ] + [ f ( x 1 ) + f ( x 2 ) ] + … + [ f ( x n − 2 ) + f ( x n − 1 ) ] + [ f ( x n − 1 ) + f ( x n ) ] } = h 2 [ f ( x 0 ) + 2 ∑ k = 1 n − 1 f ( x k ) + f ( x n ) ] = h 2 [ f ( a ) + f ( b ) ] + h ⋅ ∑ k = 1 n − 1 f ( x k ) \begin{aligned} I&= \int_a^b f(x) dx = \sum_{k=0}^{n-1} \int_{x_k}^{x_{k+1}} f(x) \, dx \\ &\approx \sum_{k=0}^{n-1} \frac{h}{2} \left[ f(x_k) + f(x_{k+1}) \right] \\ &= \frac{h}{2} \{ [ f(x_0) + f(x_1)] + [f(x_1) + f(x_2)] +\dots \\ &+ [f(x_{n-2}) + f(x_{n-1})] + [f(x_{n-1}) + f(x_{n})] \} \\ &= \frac{h}{2} \left[ f(x_0) + 2\sum_{k=1}^{n-1} f(x_k) + f(x_n) \right] \\ &= \frac{h}{2} \left[ f(a)+f(b) \right] + h \cdot \sum_{k=1}^{n-1}f(x_k) \\ \end{aligned} I=abf(x)dx=k=0n1xkxk+1f(x)dxk=0n12h[f(xk)+f(xk+1)]=2h{[f(x0)+f(x1)]+[f(x1)+f(x2)]++[f(xn2)+f(xn1)]+[f(xn1)+f(xn)]}=2h[f(x0)+2k=1n1f(xk)+f(xn)]=2h[f(a)+f(b)]+hk=1n1f(xk)
其中:
x k x_k xk 是区间内的离散点: x k = a + k ⋅ h x_k = a + k \cdot h xk=a+kh
f ( x ) f(x) f(x) 是被积函数。
最后一项称为复化梯形公式,记为:
T n = h 2 [ f ( a ) + 2 ∑ k = 1 n − 1 f ( x k ) + f ( b ) ] T_n = \frac{h}{2} \left[ f(a) + 2 \sum_{k=1}^{n-1} f(x_k) + f(b) \right] Tn=2h[f(a)+2k=1n1f(xk)+f(b)]

误差:若 f ( x ) ∈ C 2 [ a , b ] f(x) \in C^2[a, b] f(x)C2[a,b],其求积余项
R n ( f ) = − b − a 12 h 2 f ′ ′ ( η ) ,   其 中 η ∈ [ a , b ] R_n(f) = -\frac{b-a}{12} h^2 f^{\prime\prime}(\eta), \ 其中 \eta \in [a, b] Rn(f)=12bah2f(η), η[a,b] 可以看出误差是 h 2 h^2 h2阶,复化梯形公式是收敛的。此外, T n T_n Tn 的求积系数均为正,由定理 2 知复化梯形公式是稳定的。

复合梯形法的实现步骤

  1. 计算区间两端的函数值:这是梯形法中的基础项,计算 f ( a ) f(a) f(a) f ( b ) f(b) f(b)
  2. 计算区间中间点的函数值:计算区间内的所有点 f ( x 1 ) , f ( x 2 ) , … , f ( x n − 1 ) f(x_1), f(x_2), \dots, f(x_{n-1}) f(x1),f(x2),,f(xn1)
  3. 应用梯形公式:将所有小区间的结果加总,得到整个积分的近似值。

复合梯形法的代码实现 (Matlab)

例如,考虑函数 f ( x ) = ln ⁡ ∣ tanh ⁡ ( x ) ∣ 2 f(x) = \ln |\tanh(x)|^2 f(x)=lntanh(x)2 在区间 [ 0 , 2 π ] [0, 2\pi] [0,2π] 上的积分。使用复合梯形法来计算该积分:
∫ 0 2 π ln ⁡ ∣ tanh ⁡ ( x ) ∣ 2   d x ≈ h 2 [ ln ⁡ ∣ tanh ⁡ ( 0 ) ∣ 2 + 2 ∑ i = 1 n − 1 ln ⁡ ∣ tanh ⁡ ( x i ) ∣ 2 + ln ⁡ ∣ tanh ⁡ ( 2 π ) ∣ 2 ] \begin{aligned} \int_0^{2\pi} \ln |\tanh(x)|^2 \, dx & \approx \frac{h}{2} \left[ \ln |\tanh(0)|^2 + 2 \sum_{i=1}^{n-1} \ln |\tanh(x_i)|^2 + \ln |\tanh(2\pi)|^2 \right] \end{aligned} 02πlntanh(x)2dx2h[lntanh(0)2+2i=1n1lntanh(xi)2+lntanh(2π)2]
下面是使用复合梯形法实现数值积分的 MATLAB 代码:

% 定义积分区间
a = 0;       % 积分下限
b = 2*pi;    % 积分上限
n = 100;     % 将区间分成 100 个小区间
step = (b - a) / n;  % 每个小区间的宽度
x = a:step:b;  % 生成区间内的离散点

% 定义被积函数
f = @(x) log(abs(tanh(x)))^2;  % 这里使用一个简单的示例函数

% 复合梯形法积分
T0 = (step/2) * (f(a) + f(b));  % 计算区间两端的函数值
T1 = 0;
for i = 1:(n-1)
    T1 = T1 + (step) * f(x(i+1));  % 求和中间点的函数值
end
integral_result = T0 + T1;  % 得到积分结果

% 输出结果
disp(['积分结果:', num2str(integral_result)]);

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

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

相关文章

【Java计算机毕业设计】基于SSM+VUE保险公司管理系统数据库源代码+LW文档+开题报告+答辩稿+部署教程+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

C#之上位机开发---------C#通信库及WPF的简单实践

〇、上位机,分层架构 界面层 要实现的功能: 展示数据 获取数据 发送数据 数据层 要实现的功能: 转换数据 打包数据 存取数据 通信层 要实现的功能: 打开连接 关闭连接 读取数据 写入数据 实体类 作用: 封装数据…

仿 Sora 之形,借物理模拟之技绘视频之彩

来自麻省理工学院、斯坦福大学、哥伦比亚大学以及康奈尔大学的研究人员携手开源了一款创新的3D交互视频模型——PhysDreamer(以下简称“PD”)。PD与OpenAI旗下的Sora相似,能够借助物理模拟技术来生成视频,这意味着PD所生成的视频蕴…

RedisTemplate存储含有特殊字符解决

ERROR信息: 案发时间: 2025-02-18 01:01 案发现场: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分钟过期作案动机: stringRedisTemplate继承了Redistemplate 使用的…

Django REST Framework (DRF) 中用于构建 API 视图类解析

Django REST Framework (DRF) 提供了丰富的视图类,用于构建 API 视图。这些视图类可以分为以下几类: 1. 基础视图类 这些是 DRF 中最基础的视图类,通常用于实现自定义逻辑。 常用类 APIView: 最基本的视图类,所有其…

Zotero PDF Translate插件配置百度翻译api

Zotero PDF Translate插件可以使用几种翻译api,虽然谷歌最好用,但是由于众所周知的原因,不稳定。而cnki有字数限制,有道有时也不行。其他的翻译需要申请密钥。本文以百度为例,进行申请 官方有申请教程: Zot…

Redis离线安装

Linux系统Centos安装部署Redis缓存插件 参考:Redis中文网: https://www.redis.net.cn/ 参考:RPM软件包下载地址: https://rpmfind.net/linux/RPM/index.html http://rpm.pbone.net/ https://mirrors.aliyun.com/centos/7/os…

五、k8s:容忍 存储卷

容忍: 即使节点上有污点,依然可以部署pod。 tolerations: operator: "Exists" 不指定key,表示容忍所有的污点 cordon和drain cordon: 直接标记节点为不可用,pod不能部署到该节点。新建的pod不会再部署到该节点&#…

零售顶流三只松鼠如何重塑品牌营销新生态,寻找新的增长点?

在零售行业的变革浪潮中,三只松鼠作为休闲零食领域的代表品牌,面临着前所未有的机遇与挑战。在竞争激烈的零售市场中,三只松鼠以其突出的表现成为行业焦点。2024 年前三季度,营收 71.69 亿元,同比增长 56.46%&#xff…

USC 安防平台之移动侦测

随着第四次科技革命的开启,AI技术获取了突飞猛进的发展,视频监控对应的视频分析技术也获取了巨大的发展。 还记得15年前采用人工提取特征做前景背景分离和提取,大部分依赖CPU,最多使用一下TI的DM642 DSP加速,开发难度…

MySQL智障离谱问题,删了库确还存在、也不能再创建同名库

1、问题 今天跟后端朋友接毕设单子的时候,后端穿过来的【weather.sql】这个文件没弄好,导致这个【weather】数据库的数据是错的,因此我用datagrip的GUI界面直接右键删除,结果就是tmd删不掉,ok,我只能在那新…

IIS asp.net权限不足

检查应用程序池的权限 IIS 应用程序池默认使用一个低权限账户(如 IIS_IUSRS),这可能导致无法删除某些文件或目录。可以通过以下方式提升权限: 方法 1:修改应用程序池的标识 打开 IIS 管理器。 在左侧导航树中&#x…

pptx文档提取信息

目录 一、前言二、python-pptx提取核心代码三、LibreOffice 转换pdf再提取的核心代码一、前言 pptx文档提取解析常用的库。 如果只需要解析 .pptx 的文本、表格、图片,推荐使用 python-pptx(开源,轻量级)。 如果需要高性能、支持 .ppt、动画、格式转换,推荐 Aspose.Slid…

嵌入式八股文(四)计算机网络篇

第一章 基础概念 1. 服务 指网络中各层为紧邻的上层提供的功能调用,是垂直的。包括面向连接服务、无连接服务、可靠服务、不可靠服务。 2. 协议 是计算机⽹络相互通信的对等层实体之间交换信息时必须遵守的规则或约定的集合。⽹络协议的三个基本要素:语法、…

用deepseek学大模型04-机器学习建模过程

https://metaso.cn/s/7tEmBHr 目前已经学完深度学习的数学基础,给出机器学习建模的基本过程 好的,我现在需要回答用户的问题:已经学完深度学习的数学基础,现在要给出机器学习建模的基本过程。我需要结合我搜索到的资料来构建一个详…

基于单片机的多功能门铃控制系统设计(论文+源码)

1功能设计 本课题为基于单片机的多功能门铃控制系统设计,主要结合单片机技术,门铃控制技术进行设计,在多功能门铃控制系统的设计中,将其主要的设计功能确定如下: (1)可以实现门铃的基础功能…

docker 运行 芋道微服务

jar包打包命令 mvn clean install package -Dmaven.test.skiptrue创建文件夹 docker-ai 文件夹下放入需要jar包的文件夹及 docker-compose.yml 文件 docker-compose.yml 内容:我这里的是ai服务,所以将原先的文件内容做了变更,你们需要用到什…

win10 系统 自定义Ollama安装路径 及模型下载位置

win10 系统 自定义Ollama安装路径 及模型下载位置 由于Ollama的exe安装软件双击安装的时候默认是在C盘,以及后续的模型数据下载也在C盘,导致会占用C盘空间,所以这里单独写了一个自定义安装Ollama安装目录的教程。 Ollama官网地址&#xff1…

人工智能基础之数学基础:01高等数学基础

函数 极限 按照一定次数排列的一列数:“,“,…,"…,其中u 叫做通项。 对于数列{Un}如果当n无限增大时,其通项无限接近于一个常数A,则称该数列以A为极限或称数列收敛于A,否则称数列为发散, 极限值 左…

sourcetree gitee 详细使用

SSH 公钥设置 | Gitee 帮助中心 先配置公钥,输入gitee密码完成验证 gitee仓库创建完成 打开sourcetree 如果你本地有项目(vite )需要 git init 在设置中完成远程仓库的添加 (ssh ,https) 直接提交推送,完成后&#xf…