数值积分——复化梯形求积公式 | 北太天元

复化求积法的思想:
将区间 [ a , b ] [a,b] [a,b]进行 n n n等分,步长 h = b − a n h=\frac{b-a}{n} h=nba,等分点 x k = a + k h , k = 0 , 1 , 2 , ⋯   , n x_{k}=a+kh,k=0,1,2,\cdots,n xk=a+kh,k=0,1,2,,n,
先在每个子区间 [ x k , x k + 1 ] [x_k,x_{k+1}] [xk,xk+1]上采用低阶的数值求积公式求得近似积分值 I k I_k Ik,
再将它们累加并以和 ∑ k = 0 n − 1 I k \sum_{k=0}^{n-1}I_k k=0n1Ik作为积分 I = ∫ a b f ( x ) d x \mathrm{I}=\int_{\mathrm{a}}^{\mathrm{b}}\mathrm{f}(\mathrm{x})\mathrm{d}\mathrm{x} I=abf(x)dx的近似值.

复化梯形求积公式

将积分区间 [ a , b ] [a,b] [a,b]进行 n n n等分,步长为 h = b − a n h=\frac{b-a}{n} h=nba,节点 x k = a + k h , ( k = 0 , 1 , 2 , ⋯   , n ) x_{k}=a+kh,(k=0,1,2,\cdots,n) xk=a+kh,(k=0,1,2,,n)
I ( f ) = ∫ a b f ( x ) d x = ∑ i = 0 n − 1 ∫ x i x i + 1 f ( x ) d x I(f)=\int_a^bf(x)\mathrm{d}x=\sum_{i=0}^{n-1}\int_{x_i}^{x_{i+1}}f(x)\mathrm{d}x I(f)=abf(x)dx=i=0n1xixi+1f(x)dx

[ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1]上使用梯形公式
∫ x i x i + 1 f ( x ) d x = h 2 [ f ( x i ) + f ( x i + 1 ) ] − f ′ ′ ( ξ i ) h 3 12 ≈ h 2 [ f ( x i ) + f ( x i + 1 ) ] \int_{x_i}^{x_{i+1}}f(x)\mathrm{d}x=\frac{h}{2}[f(x_i)+f(x_{i+1})]-f''(\xi_i)\frac{h^3}{12}\approx\frac{h}{2}[f(x_i)+f(x_{i+1})] xixi+1f(x)dx=2h[f(xi)+f(xi+1)]f′′(ξi)12h32h[f(xi)+f(xi+1)]


I ( f ) = ∑ i = 0 n − 1 { h 2 [ f ( x i ) + f ( x i + 1 ) ] − f ′ ′ ( ξ i ) h 3 12 } ≈ h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] I(f)=\sum_{i=0}^{n-1}\left\{\frac{h}{2}[f(x_{i})+f(x_{i+1})]-f^{\prime\prime}(\xi_{i})\frac{h^{3}}{12}\right\} \approx h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_{i})+\frac{1}{2}f(b)\right] I(f)=i=0n1{2h[f(xi)+f(xi+1)]f′′(ξi)12h3}h[21f(a)+i=1n1f(xi)+21f(b)]

得复化梯形公式
T ( h ) = T n ( f ) = h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] ≈ ∫ a b f ( x ) d x T(h)=T_n(f)=h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_i)+\frac{1}{2}f(b)\right]\approx \int_a^bf(x)\mathrm{d}x T(h)=Tn(f)=h[21f(a)+i=1n1f(xi)+21f(b)]abf(x)dx


算法

♡ \heartsuit 复化梯形求积公式:T = comp_tra_integral(a,b,n,f)

  1. 输入

    • [ a , b ] [a,b] [a,b]
    • n n n:将 [ a , b ] [a,b] [a,b] n n n等分
    • f f f:已经定义好的函数,支持向量运算
  2. 实现步骤

    • 计算出 [ a , b ] [a,b] [a,b] n n n等分后得到的 n + 1 n+1 n+1个节点,构成向量 x 0 x_0 x0
    • y 0 = f ( x 0 ) y_0 = f(x_0) y0=f(x0)
    • 代入
      ∫ a b f ( x ) d x ≈ h [ 1 2 f ( a ) + ∑ i = 1 n − 1 f ( x i ) + 1 2 f ( b ) ] = T \int_a^bf(x)\mathrm{d}x\approx h\left[\frac{1}{2}f(a)+\sum_{i=1}^{n-1}f(x_i)+\frac{1}{2}f(b)\right] = T abf(x)dxh[21f(a)+i=1n1f(xi)+21f(b)]=T
  3. 输出

    • T T T:通过复化梯形求积公式得到的积分近似值

北太天元源程序

function T = comp_tra_integral(a,b,n,f)
% [a,b]
% n :小区间的个数
% f:定义好的函数
%
%   Version:            1.0
%   last modified:      07/10/2023
    h = (b-a)/n;
    k = 0:1:n;
    xi = a + k * h;
    yi = f(xi);
    sumy = sum(yi(2:1:n));
    T = (yi(1)/2 + sumy + yi(n+1)/2)*h;
end

保存为 comp_tra_integral.m文件

数值算例

用数值积分法近似计算
π = 4 ∫ 0 1 1 1 + x 2 d x \pi = 4\int_0^1 \frac{1}{1+x^2}\mathrm{d}x π=4011+x21dx
编写复化梯形公式的实现程序,分别取剖分段数 $ n = 10, 20, 40, 80, 160, $ 计算积分值与 π \pi π 的误差并作图;

% 复化梯形求积例子
%   last modified:      07/11/2023
%   file need: comp_tra_integral.m
%%
clc;clear all;format long;
f = @(x) 4./(1+x.^2);

N = [10 20 40 80 160];
delta = zeros(1,5);
k = 1;
for n = N
    T = comp_tra_integral(0,1,n,f);
    delta(k) = abs(pi-T);
    k++;
end
    	plot(N,delta,'b');
disp(delta);

运行后得到
在这里插入图片描述
可以发现,复化求积法下对积分的计算是非常稳定的,避开了Newton-Cotes 公式下随阶数升高带来的不稳定性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

普惠金融淘金热:抢占‘高成长‘企业,抓住下一个十年的财富机遇!

官.网地址:合合TextIn - 合合信息旗下OCR云服务产品 2013年,十八届三中全会正式提出“发展普惠金融”,普惠金融自此上升为国家战略;十年来,我国普惠金融取得了长足发展,逐步构建了多层次、广覆盖的中国特…

文件上传漏洞-白名单检测

如何确认是否是白名单检测 上传一张图片与上传一个自己构造的后缀,如果只能上传图片不能上传其它后缀文件,说明是白名单检测。 绕过技巧 可以利用 00 截断的方式进行绕过,包括 %00 截断与 0x00 截断。除此之外如果网站存在文件包含漏洞&…

《环阳宗海逍遥游》

第一天:《六十八道拐》五月二日游兴浓,大观公园门囗逢。海埂西门再集合,蓝光城里意无穷。呈贡过后松茂过,阳宗镇上心欢融。宜良城中暂歇脚,六十八拐路难通。宜良住宿赏夜色,期待明朝再接龙。 第二天:《情人岛苗王峡行》…

【正点原子Linux连载】 第三十四章 Linux USB驱动实验 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1)实验平台:正点原子ATK-DLRK3568开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id731866264428 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第三十…

模块化 手写实现webpack

模块化 common.js 的导入导出方法: require \ export 和 module.exports export 和 module.export nodejs 内存1.4G -> 2.8G cjs ESModule 主要区别: require属于动态类型:加载执行 同步 esmodul是静态类型:引入时并不会真的去…

mysql事故复盘: 单行字节最大阈值65535字节(原创)

背景 记得还在银行做开发,投产上线时,项目发版前,要提DDL的sql工单,mysql加1个字段,因为这张表为下游数据入湖入仓用的,长度较大。在测试库加字段没问题,但生产库字段加不上。 先说结论 投产…

[前端]NVM管理器安装、nodejs、npm、yarn配置

NVM管理器安装、nodejs、npm、yarn配置 NVM管理器安装 nvm(Node.js version manager) 是一个命令行应用,可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 nvm下载地址:https://github.com/coreybutler/nvm-windows/releases 1.全部…

手撕sql面试题:根据分数进行排名,不使用窗口函数

分享一道面试题: 有一个分数表id 是该表的主键。该表的每一行都包含了一场考试的分数。Score 是一个有两位小数点的浮点值。 以下是表结构和数据: Create table Scores ( id int(11) NOT NULL AUTO_INCREMENT, score DECIMAL(3,2), PRIMARY KEY…

Linux shell编程学习笔记47:lsof命令

0 前言 今天国产电脑提示磁盘空间已耗尽,使用用df命令检查文件系统情况,发现/dev/sda2已使用100%。 Linux shell编程学习笔记39:df命令https://blog.csdn.net/Purpleendurer/article/details/135577571于是开始清理磁盘空间。 第一步是查看…

LeetCode_链表的回文结构

✨✨所属专栏:LeetCode刷题专栏✨✨ ✨✨作者主页:嶔某✨✨ 题目描述: 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bo…

【telnet 命令安装】centos8 linux下安装telnet命令

在CentOS 8上安装Telnet服务,您需要分别安装Telnet客户端和服务器端。以下是安装步骤的概述: 检查是否已安装Telnet: 您可以使用rpm命令来检查系统是否已经安装了Telnet客户端或服务器端。例如: rpm -qa | grep telnet-client rpm…

标准 数字化

政策法规: 标准化建设相关政策,包括《国家标准化发展纲要》,《重庆市的标准化条例》 标准数字化转型路线:标准数字化转型的白皮书、发展跟踪报告之类 相关文献:标准数字化转型发展现状与工作路线(大多是电力方面)、数…

uni-app canvas 签名

调用方法 import Signature from "/components/signature.vue" const base64Img ref() //监听getSignImg uni.$on(getSignImg, ({ base64, path }) > {base64Img.value base64//console.log(签名base64, path >, base64, path) //拿到的图片数据// 之后取消…

基于51单片机的矩阵按键扫描的proteus仿真

文章目录 一、按键按键按键消抖 二、独立按键仿真图仿真程序 三、矩阵按键仿真图仿真程序 四、总结 一、按键 按键 按键通常指的是电子设备上的一种输入装置,用于在按下时发送信号,以便设备执行相应的操作。按键可以分为独立按键和矩阵按键两种类型。 …

无人机GB42590接收端 +接收端模组,同时支持2.4G与5.8G双频

严格按照GB42590的协议开发的发射端,通过串口和模块通讯,默认波特率 921600。 http://www.doit.am/深圳四博智联科技有限公司https://shenzhendoit.taobao.com/category-1734422372.htm?spma1z10.1-c-s.0.0.560c74d77eT01G&searchy&catNameGB4…

Qt开发(二)打包发布

注意qt6生成的exe不能再win7(包含win7)以下运行 1、编译程序 编译程序不演示 2、找到exe文件 在这个路径下找到该exe文件 3、打包 新建一个文件夹 将exe放在该文件夹下除了exe开始这里面没有其他文件 找到安装目录下 在cmd中运行 把这个文件和编…

【Java】文件大小转换工具类(B,KB,MB,G,TB,PB)

说明 使用方法:FileMemoryUtil.prettyByteSize(35871),参数为字节个数 返回结果:保留一位小数的自适应结果(例如:4.1KB)。可以留意在浏览器上下载的文件,会根据文件大小展示不同的单位&#xff…

Docker创建redis容器

Docker运行Redis 一&#xff1a;Docker安装Redis docker search redis二&#xff1a;Docker拉取镜像 下面两个命令看自己的需求 docker pull <镜像名称>&#xff1a;<版本号> #需要自己清楚自己需要什么般本的redisdocker pull redis #这个命令会自动下载最新…

C语言入门课程学习笔记3

C语言入门课程学习笔记3 第12课 - if 语句编程练习第13课 - switch 多分支选择语句第14课 - 程序中的循环结构第15课 - while 语句编程练习第16课 - do...while 与 for第17课 - break 与 continue 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程&#xff0c;图片全部来源于…

BUUCTF-Misc21

[GXYCTF2019]SXMgdGhpcyBiYXNlPw1 1.打开附件 是一个文本文档 里面有很多字符串 2.PuzzleSolver 用PuzzleSolver工具进行多组base64解码 3.得到flag 间谍启示录1 1.打开附件 是一个.iso文件 2.foremost 用foremost 分离文件 查看分离的文件 发现一个压缩包 3.运行 解压之…