数值积分:通过复合梯形法计算
在物理学和工程学中,很多问题都可以通过数值积分来求解,特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中,我将讨论如何使用 复合梯形法 来进行数值积分,并以一个简单的计算为例,展示如何使用该方法,并附带Matlab程序。
数值积分的基本原理
数值积分的基本思想是将一个连续的积分问题转化为离散的求和问题,通常是通过将积分区间划分成若干小的子区间。
复合梯形法
复合梯形法就是其中的一种方法,它的基本原理如下:
- 首先,将积分区间分为 n 个小区间,每个小区间的宽度为 h。
- 然后,利用梯形公式近似每个小区间内函数的积分:

将积分区间 [ a , b ] [a, b] [a,b] 划分为 n n n 等分,则每个小区间的宽度为: h = b − a n h = \frac{b - a}{n} h=nb−a
因此,积分可以表示为:
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=0∑n−1∫xkxk+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)dx≈2h[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=0∑n−1∫xkxk+1f(x)dx≈k=0∑n−12h[f(xk)+f(xk+1)]=2h{[f(x0)+f(x1)]+[f(x1)+f(x2)]+…+[f(xn−2)+f(xn−1)]+[f(xn−1)+f(xn)]}=2h[f(x0)+2k=1∑n−1f(xk)+f(xn)]=2h[f(a)+f(b)]+h⋅k=1∑n−1f(xk)
其中:
• x k x_k xk 是区间内的离散点: x k = a + k ⋅ h x_k = a + k \cdot h xk=a+k⋅h 。
• 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=1∑n−1f(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)=−12b−ah2f′′(η), 其中η∈[a,b] 可以看出误差是 h 2 h^2 h2阶,复化梯形公式是收敛的。此外, T n T_n Tn 的求积系数均为正,由定理 2 知复化梯形公式是稳定的。
复合梯形法的实现步骤
- 计算区间两端的函数值:这是梯形法中的基础项,计算 f ( a ) f(a) f(a) 和 f ( b ) f(b) f(b) 。
- 计算区间中间点的函数值:计算区间内的所有点 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(xn−1)。
- 应用梯形公式:将所有小区间的结果加总,得到整个积分的近似值。
复合梯形法的代码实现 (Matlab)
例如,考虑函数 f ( x ) = ln ∣ tanh ( x ) ∣ 2 f(x) = \ln |\tanh(x)|^2 f(x)=ln∣tanh(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πln∣tanh(x)∣2dx≈2h[ln∣tanh(0)∣2+2i=1∑n−1ln∣tanh(xi)∣2+ln∣tanh(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)]);
相关文章:
数值积分:通过复合梯形法计算
在物理学和工程学中,很多问题都可以通过数值积分来求解,特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中,我将讨论如何使用 复合梯形法 来进行数值积分,并以一个简单的…...
AcWing——3624. 三值字符串
双指针解法 #include<iostream> #include<unordered_map> using namespace std; int main() {int n; cin >> n;while(n--){unordered_map<char, int> tree;string s; cin >> s;int ans 0x7fffffff; for(int i 0, j 0; j < (int)s.size();…...
【JavaEE进阶】验证码案例
目 🌲实现说明 🎄Hutool介绍 🌳准备工作 🌴约定前后端交互接口 🚩接口定义 🚩实现服务器后端代码 🚩前端代码 🚩整体测试 🌲实现说明 随着安全性的要求越来越⾼…...
Uniapp 短视频去水印解析工具开发实现
最近搞了一个有意思的小工具——短视频去水印解析器!这玩意儿可以把短视频中的水印给抹掉,还能提取视频、封面等资源。整个项目用了 Uniapp 开发,做完后体验了一下,发现还挺顺手。今天就来跟大家聊聊实现思路和代码细节~ 需求分析…...
计算机网络-八股-学习摘要
一:HTTP的基本概念 全称: 超文本传输协议 从三个方面介绍HTTP协议 1,超文本:我们先来理解「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…...
编程速递-庆祝Delphi诞生30周年!
庆祝Delphi 30周年纪念是一个特别的时刻。 回到1995年,也就是30年前,在微软Windows和互联网时代的曙光初现之时,Borland Delphi的创建者们无法想象,当时使用Borland Delphi构建的应用程序至今仍在运行——为全世界数十亿人服务。…...
每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块
本文重点 前面我们学习了VGG,从现在开始我们将学习谷歌公司推出的GoogLeNet。当年ImageNet竞赛的第二名是VGG,而第一名就是GoogLeNet,它的模型设计拥有很多的技巧,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构 GoogLeNet的网络结构 如图所示就是Go…...
性能测试流程、主流性能工具
性能测试流程 性能测试流程 测试测试需求分析 性能测试计划和方案 测什么: 测试背景 测试目的 测试范围 谁来测: 进度和分工 交付清单 怎么测: 测试策略 性能测试用例设计 性能测试测试执行 性能分析和调优 性能测试报告 测试报告是…...
DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏
DeepSeek4j Spring Boot Starter 快速入门 简介 DeepSeek4j 是一个专为 Spring Boot 设计的 AI 能力集成启动器,可快速接入 DeepSeek 大模型服务。通过简洁的配置和易用的 API,开发者可轻松实现对话交互功能。 环境要求 JDK 8Spring Boot 2.7Maven/Gr…...
无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架
Solon 框架! Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet&#…...
【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版
针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版 链接:https://pan.xunlei.com/s/VOJ8PZd4avMubnDzHQAeZDxWA1?pwdnjwm# 直接复制到游戏安装目录,保持与游戏主程序同目录下。...
使用 playwright 自定义 js 下载的路径和文件名
遇到一个问题,点击按钮自动下载文件,路径和文件名都不能自定义,可以用 playwright 来解决这个问题 from playwright.sync_api import sync_playwright import os import time class ExcelDownloader: def __init__(self, download_pat…...
Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析
#作者:孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数(扩缩容副本)1.3、Partition Reassign场景限流1.4、节点内副本移动到不…...
3.从零开始学会Vue--{{生命周期,工程化,组件化}}
1.生命周期钩子 1.是什么 生命周期 概念:就是一个Vue实例从创建 到 销毁 的整个过程 生命周期包括:① 创建 ② 挂载 ③ 更新 ④ 销毁 四个阶段 1.创建阶段:创建响应式数据 2.挂载阶段:渲染模板 3.更新阶段:修改…...
Python--网络编程
3. 网络编程与Socket 3.1 Socket基础 创建Socket import socket# TCP Socket tcp_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# UDP Socket udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)服务器端函数 函数描述bind((host, port))绑定…...
【java】方法的基本内存原理(栈和堆)
java内存主要分为栈和堆,方法相关的部分主要在栈内存里,每个方法调用时会在栈里创建一个栈帧,存放局部变量和方法执行的信息。执行完后栈帧被销毁,局部变量消失。而对象实例存在堆里,由垃圾回收器管理。 **Java方法内…...
SQLMesh 系列教程4- 详解模型特点及模型类型
SQLMesh 作为一款强大的数据建模工具,以其灵活的模型设计和高效的增量处理能力脱颖而出。本文将详细介绍 SQLMesh 模型的特点和类型,帮助读者快速了解其强大功能。我们将深入探讨不同模型类型(如增量模型、全量模型、SCD Type 2 等࿰…...
SpringBoot(接受参数相关注解)
文章目录 1.基本介绍2.PathVariable 路径参数获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 3.RequestHeader 请求头获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 4.RequestParameter 请求获取参数信息 1.…...
hbase合并队列超长问题分析
问题现象 hbase集群合并队列超长,有节点上合并任务已经运行超过1天未结束,合并队列总长不断增加。 问题分析 参数配置: 配置参数默认值含义hbase.hregion.memstore.flush.size128MMemStore达到该值会Flush成StoreFilehbase.hregion.memstore.block.multiplier4当region中…...
FPGA的星辰大海
编者按 时下风头正盛的DeepSeek,正值喜好宏大叙事的米国大统领二次上岗就业,OpenAI、软银、甲骨文等宣布投资高达5000亿美元“星际之门”之际,对比尤为强烈。 某种程度上,,是低成本创新理念的直接落地。 包括来自开源社区的诸多赞誉是,并非体现技术有多“超越”,而是…...
基于MCP协议构建AI驱动的Google Drive自动化管理工具
1. 项目概述:当AI助手学会管理你的Google Drive 如果你和我一样,每天要在Google Drive里翻找文件、整理文档、处理同事的共享请求,那你肯定也想过:要是能像跟同事聊天一样,用自然语言来操作网盘就好了。比如ÿ…...
wxauto终极指南:3步打造Windows微信自动化机器人
wxauto终极指南:3步打造Windows微信自动化机器人 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/wx/wx…...
别再手动算点了!STM32F103 DAC内置三角波发生器实战(附CubeMX配置)
解放CPU算力:STM32F103 DAC硬件三角波生成全攻略 在嵌入式系统开发中,波形生成是常见的需求场景。无论是工业控制中的测试信号注入,还是医疗设备中的基准波形模拟,传统做法往往依赖软件计算逐点输出。这种方式的弊端显而易见——…...
基于Docker部署开源媒体服务器:打造私人Netflix的完整指南
1. 项目概述与核心价值最近在折腾一些本地化的媒体管理和播放方案,偶然间在GitHub上发现了slicenferqin/clawplay这个项目。简单来说,这是一个基于Web的、自托管的媒体库管理和播放器应用。它的核心目标,是让你能在一个统一的、美观的界面上&…...
从RSS到Humanoids:一张图看懂机器人顶会‘江湖地位’与投稿策略
从RSS到Humanoids:机器人顶会投稿策略与学术生态全景解析 在机器人研究领域,学术会议不仅是展示最新成果的舞台,更是研究者职业发展的重要跳板。面对RSS、IROS、ICRA、CASE、Humanoids等众多会议,如何选择最适合的投稿目标&#…...
DouyinLiveRecorder:40+平台直播录制终极解决方案,告别频繁中断的技术指南
DouyinLiveRecorder:40平台直播录制终极解决方案,告别频繁中断的技术指南 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件,支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、…...
UnityMeshSimplifier常见问题排查:从安装到部署的完整解决方案
UnityMeshSimplifier常见问题排查:从安装到部署的完整解决方案 【免费下载链接】UnityMeshSimplifier Mesh simplification for Unity. 项目地址: https://gitcode.com/gh_mirrors/un/UnityMeshSimplifier UnityMeshSimplifier是一款强大的3D网格简化工具&am…...
终极MP4视频修复指南:用Untrunc拯救你的损坏视频文件
终极MP4视频修复指南:用Untrunc拯救你的损坏视频文件 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 你是否曾因…...
SkeyeVSS开发FAQ:ONVIF设备接入与异厂兼容
试用安装包下载 | SMS | 在线演示 项目地址:https://github.com/openskeye/go-vss 1. ONVIF 与国标的关系 ONVIF 侧重 IP 摄像机的 发现、Profile、RTSP/事件 等;GB/T 28181 侧重 SIP 注册、目录、点播信令。同一项目可能同时存在「国标设备」与「ONVI…...
LaunchedEffect 的执行机制与实践
Jetpack Compose 技术说明:LaunchedEffect 的执行机制与实践 1. 核心概念 LaunchedEffect 是 Compose 中最常用的副作用(Side-Effect)API。它允许开发者在组件的生命周期内启动一个协程,用于处理非 UI 渲染相关的逻辑(…...
