验证数值积分求积公式及复合梯形公式程序设计
数值分析课程设计-几种复合数值积分公式的比较
![数值分析课程设计-几种复合数值积分公式的比较](https://img.taocdn.com/s3/m/e3cd26ea4afe04a1b071de8d.png)
课程设计任务书专业:班级:课程名称:计算方法课程设计学生姓名:发题时间:2012 年 5 月10 日一、课题名称几种复合数值积分公式的比较。
二、课题条件参考文献:[1].张平文,李铁军. 数值分析. 北京:北京大学出版社,2009.[2].徐瑞,黄兆东,阎凤玉.Matlab 科学与工程分析.北京:科学出版社,2007。
三、设计任务根据已知定积分:计算π的近似值.要求:(1)选取10个不同的步长h=0.2,0.1,0.05,0.025,0.02,0.01,0.0125,0.01,0.005,0.0025,对每一个步长,分别用复合中点公式、复合梯形公式、复合Simpson 公式计算定积分并将计算结果和真实值π做比较(即给出计算所得值和π的差)。
(2)给出程序清单。
必须说明程序中哪些是主程序,哪些是子程序;程序中必须有详细的注释和参数说明;必须简明扼要地说明如何运行程序。
四、设计说明书(或论文)内容前言、问题描述、具体理论知识点、具体实例、程序清单、程序实现、参考文献、总结、小组成员分工合作清单。
五、进度计划(列出完成项目设计内容、绘图等具体起始日期)6月3-5日网上查阅资料,6月6-18日上机16节,编程并上机实现。
6月20日上缴试验报告以及电子文件(试验报告以及原程序)。
指导教师(签名):年月日教研室主任(签名):年月日一、前言在实际问题中,往往会遇到被积函数f(x)的原函数无法用初等函数来表示,或函数只能用表格表示,或有的虽然能用初等函数表示,但过分复杂,所以这些情形都需要去建立定积分的近似计算公式来做积分计算。
数值积分是进行定积分计算的一种方法,它可以解决不能用定积分基本公式计算的所有定积分问题。
数值积分涉及很多计算公式,这里主要介绍复合中点公式,复合梯形公式,复合Simpson 公式.二、 问题描述根据已知定积分:计算π的近似值.要求:(1) 选取10个不同的步长h=0.2,0.1,0.05,0.025,0.02,0.01,0.0125,0.01,0.005,0.0025, 对每一个步长,分别用复合中点公式、复合梯形公式、复合 Simpson 公式计算定积分并将计算结果和真实值π 做比较(即给出计算所得值和π 的差)。
用复合梯形公式和复合辛普森公式求函数积分
![用复合梯形公式和复合辛普森公式求函数积分](https://img.taocdn.com/s3/m/19cc1222e2bd960590c6772a.png)
《数值分析》实验报告(模板)
学号********班级信科121姓名张凯茜
【实验课题】用复合梯形公式和复合辛普森公式求函数积分
【实验目标】
1.掌握复合梯形公式与复合辛普森公式的基本思想。掌握常用的数值积分方法(特别是梯形法、Simpson方法、Cotes公式、Romberg算法以及Gauss求积公式)的原理。
【附程序】
复合梯形公式
functionT=comptra(a,b,tol)
h=b-a;
k=0;
T=((f(a)+f(b))*h)/2;
P=T+1;
whileabs(P-T)>tol
P=T;
m=0; h=h/2;
fori=1:2^k
m=m+f(a+(2*i-1)*h);
end
T=0.5*P+m*h; k=k+1;
2.学会用matlab编程实现用复合梯形公式与复合辛普森公式求积分。
3.熟悉matlab软件的使用,通过实验体会常用数值积分方法的逐步精致化过程。
【理论概述与算法描述】
1.根据梯形公式 ,将区间【a,b】划分为n等份,分点x(k)=a+kh,h=(b-a)/n,k=0,1,2,3,……,在每个区间【x(k),x(k+1)】(k=0,1,2……n-1)上采用梯形公式,得
end
复合辛普森公式
functionS=comsinp(a,b,tol)
h=b-a;
k=1;
S=((f(a)+f(b)+4*f((a+b)/2))*h)/6;
P=S;
whileabs(P-S)>tol
P=S;
数值分析积分实验报告(3篇)
![数值分析积分实验报告(3篇)](https://img.taocdn.com/s3/m/0c53ac55a22d7375a417866fb84ae45c3b35c287.png)
第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。
通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。
二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。
实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。
2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。
实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。
3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。
实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。
4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。
它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。
实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。
三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。
2. 选取几个不同的函数,对积分区间进行划分。
3. 使用不同方法计算积分近似值,并与实际积分值进行比较。
4. 分析不同方法的精度和效率。
四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。
2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。
3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。
4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。
数值积分上机报告辛普森公式
![数值积分上机报告辛普森公式](https://img.taocdn.com/s3/m/529277856529647d272852ad.png)
ቤተ መጻሕፍቲ ባይዱ其余项可记为
h3 Rn ( f ) I Tn [ f ( k )], k ( xk , xk 1 ) 12 k 0
n 1
复合辛普森求积公式 将 区 间 [a, b] 划 分 为 n 等 份 , 在 每 个 子 区 间 [ xk , xk 1 ] 上 采 用 辛 普 森 公 式 , 若 记
j
xj y j f (x j )
1 0 1.0000
2 0.1 0.41
3 0.20 0.50
4 0.30 0.61
5 0.50 0.91
6 0.80 2.02
7 1.0 2.46
第一题——复合梯形公式 clear a=1; b=3; n=[8,10,20,50]; for(i=1:1:4) s=0; for(k=1:1:n(i)-1) h=(b-a)/n(i); x=a+k*h; s=s+f(x); end T=0.5*h*(f(a)+2*s+f(b)) end function函数 function y=f(x) y=1/x; end 第一题——复合辛普森公式 clear a=1; b=3; n=[8,10,20,50]; for(i=1:1:4) s=0;
h h 180 2
4 n 1
f
k 0
( 4)
( k ), k ( xk , xk 1 )
三、代码
问题:1. 1
1
2
1 dx ,把区间分别 n=8,10,20,50 等分,比较复化梯形公式和复化 Simposn 公式 x 计算的近似值和准确值的结果;
3
2. 0 e x dx =? 3.分别用复化梯形公式和复化 Simposn 公式求下列离散数据的数值积分。
数值积分:梯形规则
![数值积分:梯形规则](https://img.taocdn.com/s3/m/514a565a32687e21af45b307e87101f69e31fb72.png)
数值积分:梯形规则数值积分:梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式1.问题描述微积分方法求积有很大的局限性,当碰到被积函数很复杂时,找不到相应的原函数。
积分值在几何上可解释为由 x=a,x=b,y=0和y=f(x) 所围成的曲边梯形的面积。
积分计算之所以有困难,就是因为这个曲边梯形有一条边y=f(x)是曲线。
2.理论与方法依据积分中值定理,底为b-a,而高为f(e)的矩形面积恰等于所求曲边梯形的面积I.f(e)称作区间[a,b]上的平均高度。
这样,只要对平均高度f(e)提供一种算法,便相应地获得一种数值求积的算法。
1.梯形规则(Trapezoidal rule)简单选取区间[a ,b]的中点高度作为平均高度。
取h=b-aa0=⌠(a-b)(x-b)/(a-b)dx=(b-a)/2a1=⌠(a-b)(x-a)/(b-a)dx=(b-a)/2得到:2.辛普森规则(Simpson rule)可视作用a , b与c=(a+b)/2三点高度的加权平均值作为平均高度。
3.复合梯形规则(Composite numerical)设将求积区间[a,b]划分为n等份,步长h=(b-a)/2 ,等分点为xi=a+bi , i=0,1,...,n 所谓复化求积法,就是先用低阶求积公式求得每个子段[xi,xi+1]上的积分值,然后再将它们累加求和,用各段积分之和Ii,i=0,1,n-1作为所求积分的近似值。
复化梯形公式:4.复合辛普森规则(Composite Simpson)记子段[xi,xi+1]的中点为则复化公式为复化Simpson公式:5.龙贝格求积公式(Romberg)龙贝格求积公式也称为逐次分半加速法。
它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。
作为一种外推算法, 它在不增加计算量的前提下提高了误差的精度.在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。
MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)
![MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)](https://img.taocdn.com/s3/m/1524bc34b9f3f90f77c61b00.png)
佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 数值积分专业班级 机械工程 姓 名 余红杰 学 号 2111505010 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、理解如何在计算机上使用数值方法计算定积分⎰badxx f )(的近似值;2、学会复合梯形、复合Simpson 和龙贝格求积分公式的编程与应用。
3、探索二重积分⎰⎰Ddxdy y x f ),(在矩形区域},|),{(d y c b x a y x D ≤≤≤≤=的数值积分方法。
二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。
(5) 写出实验报告。
三、实验步骤1、用不同数值方法计算积分149xdx =-(1)取不同的步长h ,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两公式的精度。
(2)用龙贝格求积计算完成问题(1)。
2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分xyDedxdy -⎰⎰,其中积分区域{01,01}D x y =≤≤≤≤。
1.%Int_t.m 复化梯形:function F = Int_t(x1,x2,n)% 复化梯形求积公式% x1,x2 为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。
%样点矩阵及其函数值:x = linspace(x1,x2,n+1);y = f(x);m = length(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零:y(1) = 0;y(m) = 0;%算出区间长度,步长h:h = (x2 -x1)/n;a = [1 2*ones(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfunction y = f(x)y = sqrt(x).*log(x);%run11.mclc,clear;%分为10个区间,步长0.1的积分值:F = Int_t(0,1,10);F10 = F%分为100个区间F = Int_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%Int_s.mfunction F = Int_s(x1,x2,n)% 复化梯形求积公式% x1,x2 区间,分为n个区间。
编程实现数值积分的几种--方法 c语言
![编程实现数值积分的几种--方法 c语言](https://img.taocdn.com/s3/m/c10c7487b52acfc788ebc956.png)
编程实现数值积分的几种--方法c语言数值计算2010-11-05 09:52:43 阅读385 评论1 字号:大中小订阅复化梯形公式在区间不大时, 用梯形公式、辛卜生公式计算定积分是简单实用的, 但当区间较大时, 用梯形公式、辛卜生公式计算定积分达不到精确度要求 . 为了提高计算的精确度,我们将[a,b] 区间n等分,在每个小区间上应用梯形公式、辛卜生公式计算定积分,然后将其结果相加,这样就得到了复化梯形公式和复化辛卜生公式。
1. 复化梯形公式将积分区间等分, 设, 则节点为对每个小区间上应用梯形公式, 然后将其结果相加,则得(3.14)称(3.14) 式为复化梯形公式 .当在[a,b] 上有连续的二阶导数时,则复化梯形公式(3.14) 的余项推导如下:因为所以在区间[a,b] 上公式(3.14) 的误差为又因为在区间[a,b] 上连续,由连续函数的性质知,在区间[a,b] 上存在一点,于是( 3.15 )复化梯形公式,复化抛物线公式和Romberg求积法的算法程序:以下程序均定义误差限为1*10^-5;1)复化梯形公式:#include <stdio.h>#include <math.h>#define e 1e-5#define a 0 //积分下限a#define b 1 //积分上限b#define f(x) (4/(1+(x*x))) //被积函数f(x)int main(){int i,n;double h,t0,t,g;n=1; //赋初值h=(double)(b-a)/2;t=h*(f(a)+f(b));do{t0=t;g=0;for (i=1;i<=n;i++)g+=f((a+(2*i-1)*h));t=(t0/2)+(h*g); //复化梯形公式n*=2;h/=2;}while (fabs(t-t0)>e); //自定义误差限e printf("%.8lf",t); //输出积分的近似值return 0;}2)复化抛物线公式:#include <stdio.h>#include <math.h>#define e 1e-5#define a 0 //积分下限a#define b 1 //积分上限b#define f(x) (4/(1+(x*x))) //被积函数f(x)int main(){int i,n;double f1,f2,f3,h,s0,s;f1=f(a)+f(b); //赋初值f2=f(((double)(b+a)/2));f3=0;s=((double)(b-a)/6)*(f1+4*f2);n=2;h=(double)(b-a)/4;do //复化抛物线算法{f2+=f3;s0=s;f3=0;for (i=1;i<=n;i++)f3+=f((a+(2*i-1)*h));s=(h/3)*(f1+2*f2+4*f3);n*=2;h/=2;}while (fabs(s-s0)>e); //自定义误差限printf("%.8lf",s);return 0;}3)Romberg求积法:#include <stdio.h>#include <math.h>#define e 1e-5#define a 0 //积分下限a#define b 1 //积分上限b#define f(x) (4/(1+(x*x))) //被积函数f(x)double t[100][100];int main(){int n,k,i,m;double h,g,p;h=(double)(b-a)/2;t[0][0]=h*(f(a)+f(b));k=1;n=1;do //Romberg算法{g=0;for (i=1;i<=n;i++)g+=f((a+((2*i-1)*h)));t[k][0]=(t[k-1][0]/2)+(h*g);for (m=1;m<=k;m++){p=pow(4,(double)(m));t[k-m][m]=(p*t[k-m+1][m-1]-t[k-m][m-1])/(p-1);}m-=1;h/=2;n*=2;k+=1;}while (fabs(t[0][m]-t[0][m-1])>e); //自定义误差限eprintf("%.8lf",t[0][m]);return 0;}给定精度,定义误差限为1*10^-5,分别求出步长的先验估计值:用复化梯形公式计算,要求h<0. 007746。
复合梯形公式
![复合梯形公式](https://img.taocdn.com/s3/m/176f6311d5bbfd0a78567379.png)
《复合梯形公式》实验报告实验名称:复合梯形公式成绩: ___________专业班级:数学与应用数学1202班姓名:张晓彤学号:2012254010227实验日期:2014年11月23日实验报告日期:2014年11月3日一、实验目的(1) 掌握数值积分函数的调用格式(2) 掌握复合梯形公式的思想和构造过程(3) 能够应用matlab软件编写复合梯形公式的程序并能熟悉应用,以此来解决相关例题(4) 利用复合梯形公式求数值积分的近似值,以解决其它科学实验的计算问题二、实验内容2.1验证积分函数的调用格式并求函数积分值1 2例1:用两种不同的方法求:I 0e x dx .1 2 v2 :c o例2:计算二重积分I 1 e sin( x2y)dxdy2.2编写复合梯形公式程序并验证1 2例:用符合梯形求积公式求积分I 0e x sinxdx的近似值.要求将区间3等分,4的等分,6等分,9等分,分别得到积分值,并与真值进行比较•能得到什么结论?三、实验环境该实验应用matlab2014来进行实验的验证和设计.四、实验步骤和实验结果4.1验证积分函数的调用格式并求函数积分值1 x2例3:(数值积分)用两种不同的方法求:I 0e x dx .法一:建立被积函数文件法:先建立一个函数文件ex.m:fun cti on ex=ex(x)ex=exp(-x.A2);end然后在MATLAB^令窗口,输入命令:format longI=quad( 'ex' ,0,1)I =0.746824180726425I=quadl( 'ex' ,0,1)I =0.746824133988447法二:不建立关于被积函数的函数文件时:g=i nline( 'exp(-x.A2)' );I=quadl(g,0,1)I =0.7468241339884471 2 2y )dxdy 例4:(数值积分)计算二重积分I 1 e x 2sin( X2(1)建立一个m文件fxy.mfun cti on f=fxy(x,y)global ki;ki=ki+1;f=exp(-x42/2).*si n(x42+y);(2) 调用dblquad 函数求解global ki;ki=0;I=dblquad( 'fxy' ,-2,2,-1,1)KiI =1.574493189744944ki =1050使用inline 函数不建立被积函数的函数文件,程序如下:f=inline( 'exp(-x.A2/2).*sin(x.A2+y)' , 'x' , 'y');I=dblquad(f,-2,2,-1,1)I =1.5744931897449444.2 编写复合梯形公式程序并验证12例:用符合梯形求积公式求积分I e x sinxdx的近似值.要求将区间3等分,4的等分,6等分,9等分,分别得到积分值,并与真值进行比较.能得到什么结论?建立复合梯形公式的fhTX.m 文件:function [H] = fhTX(a,b,n)%ab分别是积分函数的上下限%%门为区间等分份数%%I返回的是得到的积分近似值%h=(b-a)/n; %h为步长%I=0;x=a:h:b; % 等分点出的节点Xi%f=exp(x.A2).*sin(x); %被积函数表达式%for k=1:n; %节点xi开始循环%J=f(k)+f(k+1); % 复合梯形公式的递推公式%I=I+J; %递推公式求和%end H=I*h/2;End(1) 将区间3 等分得到结果H=fhTX(0,1,3) %函数调用%H =0.8246 %得到近似解%I仁quad('exp(x.A2).*sin(x)',0,1) %quad计算真值%I1 =0.7787R=abs(I1-H) %近似解和真值之间的误差%ans =0.0458所以,将区间 3 等分后得到的结果为0.8246,和真值之间存在的误差为0.0458.2) 将区间4 等分得到的结果H=fhTX(0,1,4) %函数调用%H =0.8047 %得到近似解%abs(I1-H)ans =0.0260 %近似解和真值之间的误差%通过结果可以看出,将区间 4 等分后的结果和真值之间的误差缩小为0.0260,较三等分得到的结果略微良好.3) 将区间6 等分得到的结果H=fhTX(0,1,6) %函数调用%H =0.7904 %得到近似解%abs(I1-H)ans =0.0116 %近似解和真值之间的误差%当区间等分数为 6 时,误差减小到0.0116,比区间等分数为 4 的时候更精确4) 将区间9 等分得到的结果H=fhTX(0,1,9) %函数调用%H =0.7839 %得到近似解%abs(ll-H)ans =0.0052 %近似解和真值之间的误差%这时的误差缩小为0.0052,更加靠近真值了.通过四种不同的等分区间来对积分值进行近似估计,我们可以发现,区间等分份数越多,得到的结果越靠近真值,得到的结果越精确我们用相同的方法得到更多数据的结果入下:从表格中我们很清楚的可以看到在某个较大的范围内,当n越大时,得到的结果和真值越接近,当达到一定程度时,近似值将不会再变化.五、实验讨论、结论通过四种不同的等分区间来对积分值进行近似估计,我们可以发现,区间等分份数越多,得到的结果越靠近真值,得到的结果越精确,但符合梯形公式在对积分值进行估计的过程中存在的问题是:在某个较大的范围内,无论区间等分多少份,或者说无论步长取得多么小,总会存在一个更小的步长h,使得结果过更加精确,但当超过这个规定的范围,当区间等分份数过大时,得到的近似值将不会再变价.所以说,采用梯形公式得到的结果,随着区间等分份数的增多,会越来越接近真值,但永远不能得到最精确的结果.所以,在对某些函数进行积分计算的时候,一些简单的函数我们可以直接进行积分到精确的结果,但是对于一些较复杂,找不到原函数的函数而言,利用复合梯形公式可以很好的得到近似解,它在进行函数积分的过程中起到了很好作用,能解决我们在积分环节的一些问题.六、参考资料【1】李庆阳,王能超,易大义,数值分析第五版,清华大学出版社, 1995.【2】刘卫国,matlab程序设计与应用,高等教育出版社,2002.。
复化梯形算法求解数值积分
![复化梯形算法求解数值积分](https://img.taocdn.com/s3/m/9dc9c53310661ed9ad51f3e8.png)
复化梯形算法求解数值积分摘要求某函数的定积分时,在多数情况下,被积函数的原函数很难用初等函数表达出来,因此能够借助微积分学的牛顿-莱布尼兹公式计算定积分的机会是不多的。
另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解。
由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题。
构造数值积分公式最通常的方法是用积分区间上的n 次插值多项式代替被积函数,由此导出的求积公式称为插值型求积公式。
特别在节点分布等距的情形称为牛顿-柯茨公式,例如梯形公式与抛物线公式就是最基本的近似公式。
但是它们的精度较差。
而且高阶Newton-Cotes求积公式是不稳定的。
因此,通常不用高阶求积公式得到比较精确的积分值,而是将整个积分区间分段,在每一小段上用低阶求积公式。
这种方法称为复化求积方法。
本文从三个积分实例出发,主要讨论复化梯形公式以及精确程度分析。
关键词:数值积分;复化求积公式;复化梯形算法;MATLABTHE REHABILITATION OF TRAPEZOID FORMULA TO SOLVE THE NUMERICAL INTEGRATIONABSTRACTFind the definite integral of a function, in most cases, the original integrand function is difficult toexpress the elementary functions, it can use calculus of Newton - Leibniz formula to calculate thedefinite integral of the few opportunities . In addition, many practical problems in the integrand is often a list of functions or other forms of non-continuous function, the definite integral of suchfunctions, indefinite integral method can not solve. For these reasons, the numerical integration oftheory and method has been the subject of calculation of the basic mathematical research.Structural formula for numerical integration method is used most often on the n-th integration interval polynomial interpolation instead of the integrand, thus derived is called interpolation-typequadrature formula quadrature formula. Especially in the case of equidistant distribution of nodesis called Newton - Keci formula, such as trapezoidal formula and the formula is the most basicparabolic approximation formula. But their accuracy is poor. And high-level Newton-Cotesquadrature formula is unstable. So it is usually not higher-order quadrature formula to be moreprecise integral values, but the whole range of sub-points, with each short on low-level quadrature formula. This method is called complex method of quadrature.This example from three points of departure, the main complex of the trapezoid formula anddiscuss the accuracy of the analysis.Key words: Numerical integration;Rehabilitation of numerical integration;Rehabilitation of trapezoid formula;MA TLAB目录1 问题的提出 (1)2 问题的分析 (2)3 问题假设 (2)4 符号说明 (3)5 模型的建立及求解 (3)5.1 模型的准备工作 (3)5.1.1 复化梯形数值积分基本原理........... (3)5.2 模型的建立及求解 (4)6 模型验证及结果分析 (8)参考文献 (9)附录 (10)1问题提出有很多实际问题常常需要计算积分才能求解。
复合梯形公式例题代码matlab
![复合梯形公式例题代码matlab](https://img.taocdn.com/s3/m/720df3ac6394dd88d0d233d4b14e852459fb3974.png)
复合梯形公式(Composite Trapezoidal Rule)是数值分析中常用的数值积分方法,它通过将区间划分为若干个小区间,并对每个小区间进行梯形面积的计算来逼近定积分的值。
在本文中,我们将使用MATLAB编写一个复合梯形公式的例题代码,并对所得结果进行分析。
1. 复合梯形公式的原理复合梯形公式是通过将整个积分区间[a, b]等分为n个小区间,每个小区间的宽度为h=(b-a)/n,然后对每个小区间应用梯形面积公式进行计算,并将结果相加得到整个积分的近似值。
具体而言,对于每个小区间[i, i+1],使用梯形面积公式计算出该区间内的积分近似值为:\[ \frac{h}{2}(f(x_i)+f(x_{i+1})) \]其中,\(x_i = a + i \cdot h\),\(x_{i+1} = a + (i+1) \cdot h\),而f(x)为被积函数。
然后将所有小区间的积分近似值相加得到整个积分的近似值:\[ I \approx \frac{h}{2}(f(x_0)+2f(x_1)+2f(x_2)+...+2f(x_{n-1})+f(x_n)) \]2. 复合梯形公式的MATLAB实现下面我们将使用MATLAB编写一个复合梯形公式的例题代码。
假设我们要计算定积分:\[ \int_{0}^{\pi/2} \sin(x) dx \]我们定义被积函数:```matlabfunction y = f(x)y = sin(x);end```我们编写复合梯形公式的代码:```matlabfunction I =posite_trapezoidal_rule(f, a, b, n)h = (b-a) / n;x = a:h:b;y = f(x);I = h/2 * (y(1) + 2*sum(y(2:end-1)) + y(end));end```我们调用该函数进行计算:```matlaba = 0;b = pi/2;n = 100;I =posite_trapezoidal_rule(f, a, b, n);disp(['The approximate value of the integral is: ', num2str(I)]); ```3. 结果分析通过运行上述代码,我们得到定积分的近似值为1。
计算方法_实验六_数值积分
![计算方法_实验六_数值积分](https://img.taocdn.com/s3/m/becb1a6b1ed9ad51f11df20e.png)
实验六数值积分(1)复化梯形积分
1、实验程序
实现复化梯形积分的MATLAB函数文件agui_trapz.m
在MATLAB命令窗口输入及实验结果及操作界面
(2)复化辛普生求积公式
1、实验程序
实现复化辛普生求积公式的MATLAB函数文件agui_simpson.m
在MATLAB命令窗口输入及实验结果及操作界面
(3)龙贝格积分
1、实验程序
实现龙贝格积分的MATLAB函数文件agui_rbg.m
在MATLAB命令窗口输入及实验结果及操作界面
结果分析
从上面三种方法,我们可以得出如下表格,方便进行比较:
在求
⎰
2
1
dx xe x 和⎰
+1
02
14
dx x 时,复化梯形公式、复化辛普生公式和龙贝格数值积分公
式都有着较高的精度,其中龙贝格数值积分公式精度基本上是最高的。
而在对积分区间作同样的分割的条件下,复合辛普生求积公式比复合梯形公式的计算精度高。
我们已知,数值求积的误差除了与被积函数有关之外,还与积分区间的长度(b-a )有关,积分区间越小,则求积公式的截断误差也越小,因此在求积分时,常把积分区间分成若干小区间,在每个区间上采用次数不高的求积公式,这就是基本的原理。
在计算速度方面,从表中可看出,复化梯形公式的等分数要比其它两个大得多,且从计算结果上很容易知道复化辛普生公式也比复化梯形公式的收敛速度快得多。
而龙贝格数值积分公式的计算量是最少的。
由上可知,龙贝格数值积分公式在精度和计算速度上都是最高的。
而使用龙贝格公式通过对梯形值进行外推加速的处理,能使精度快速提高。
复化梯形公式和复化Simpson公式
![复化梯形公式和复化Simpson公式](https://img.taocdn.com/s3/m/9b5cafd6910ef12d2bf9e702.png)
数值计算方法上机题目3一、计算定积分的近似值:221x e xe dx =⎰ 要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。
1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。
f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果Tn= 7.3891等分数n=7019已知值与计算值的误差R= 2.8300e-0082. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果Sn= 7.3891等分数n=24已知值与计算值的误差R= 2.7284e-008用复化梯形公式计算的结果为:7.3891,与精确解的误差为:2.8300e-008。
数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序培训讲学
![数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序培训讲学](https://img.taocdn.com/s3/m/3e511050cc17552706220806.png)
数值分析复化S i m p s o n积分公式和复化梯形积分公式计算积分的通用程序数值分析第五次程序作业PB09001057 孙琪【问题】分别编写用复化Simpson积分公式和复化梯形积分公式计算积分的通用程序;用如上程序计算积分:取节点并分析误差;简单分析你得到的数据。
【复化Simpson积分公式】Simpson法则:使用偶数个子区间上的复合Simpson法则:设n是偶数,则有将Simpson法则应用于每一个区间,得到复合Simpson法则:公式的误差项为:其中δ【复化梯形积分公式】梯形法则:对两个节点相应的积分法则称为梯形法则:如果划分区间[a,b]为:那么在每个区间上可应用梯形法则,此时节点未必是等距的,由此得到复合梯形法则:对等间距h=(b-a)/n及节点,复合梯形法则具有形式:误差项为:【算法分析】复合Simpson法则和复合梯形法则的算法上述描述中都已介绍了,在此不多做叙述。
【实验】通过Mathematica编写程序得到如下结果:1.利用复化Simpson积分公式得:可以看出,当节点数选取越来越多时,误差项越来越小,这从复合的Simpson公式很好看出来,因为在每一段小区间内,都是用Simpson法则去逼近,而每一段的误差都是由函数在该区间内4阶导数值和区间长度的4次方乘积决定的,当每一段小区间越来越小时,相应的每一段小区间内的逼近就会越来越好,从而整体的逼近效果就会越来越好。
2.利用复化梯形积分公式得:可以看出,当节点数选取越来越多时,误差项越来越小,这从复合的梯形公式很好看出来,因为在每一段小区间内,都是用梯形法则去逼近,而每一段的误差都是由函数在该区间内2阶导数值和区间长度的2次方乘积决定的,当每一段小区间越来越小时,相应的每一段小区间内的逼近就会越来越好,从而整体的逼近效果就会越来越好。
【分析】通过对上述两种法则的效果来看,复合Simpson法则的误差要比复合梯形法则收敛到0更快,说明复合Simpson法则逼近到原来的解更快,这主要是因为在每一段小区间内,复合Simpson法则利用得是Simpson法则,复合梯形法则利用得是梯形法则,前者的误差项要比后者的误差项小很多,因此造成了逼近速度的不一样。
复合梯形和复合辛普森MATLAB程序10页
![复合梯形和复合辛普森MATLAB程序10页](https://img.taocdn.com/s3/m/5bece65fae1ffc4ffe4733687e21af45b207fe58.png)
复合梯形和复合辛普森MATLAB程序10页
复合梯形公式和复合辛普森公式都是数值积分方法中的常用方法。
本文将编写MATLAB 程序来实现这两种方法。
一、复合梯形公式
复合梯形公式是将被积函数在每个小区间内近似为一个梯形,再将这些梯形的面积相
加得到数值积分结果。
具体的,在区间$[a,b]$中,将其分成$n$个小区间,记每个小区间的长度为
$h=\frac{b-a}{n}$,则复合梯形公式的数值积分公式为:
$$
\int_a^bf(x)dx\approx \frac{h}{2}\sum_{i=1}^n(f(x_{i-1})+f(x_i))
$$
其中,$x_i=a+ih$,$i=0,1,\dots,n$。
将以上公式写成MATLAB代码:
function result=composite_trapezoidal(f,a,b,n)%f为被积函数,a,b为积分上下限,n为小区间数
h=(b-a)/n;
result=f(a)+f(b);
for i=1:n-1
x=a+i*h;
result=result+2*f(x);
end
result=result*h/2;
end
上述程序中,首先计算$h$,从而计算出$x_i$,然后使用循环遍历每个小区间内的中
点$x$,计算其所在梯形面积,并将所有梯形面积相加得到最终结果。
二、复合辛普森公式
最后需要指出的是,虽然复合辛普森公式的收敛速度比复合梯形公式快,但是当被积函数存在奇点或者发散点时,复合辛普森公式可能不收敛。
此时需要选择其他的数值积分方法来计算。
复化梯形求积分实例——用Python进行数值计算
![复化梯形求积分实例——用Python进行数值计算](https://img.taocdn.com/s3/m/7416a6fe4bfe04a1b0717fd5360cba1aa8118c3c.png)
复化梯形求积分实例——⽤Python进⾏数值计算⽤程序来求积分的⽅法有很多,这篇⽂章主要是有关⽜顿-科特斯公式。
学过插值算法的同学最容易想到的就是⽤插值函数代替被积分函数来求积分,但实际上在⼤部分场景下这是⾏不通的。
插值函数⼀般是⼀个不超过n次的多项式,如果⽤插值函数来求积分的话,就会引进⾼次多项式求积分的问题。
这样会将原来的求积分问题带到另⼀个求积分问题:如何求n次多项式的积分,⽽且当次数变⾼时,会出现龙悲歌现象,误差反⽽可能会增⼤,并且⾼次的插值求积公式有可能会变得不稳定:详细原因不赘述。
⽜顿-科特斯公式解决这⼀问题的办法是将⼤的插值区间分为⼀堆⼩的插值区间,使得多项式的次数不会太⾼。
然后通过引⼊参数函数将带有幂的项的取值范围固定在⼀个固定范围内,这样⼀来就将多项式带有幂的部分的求积变为⼀个固定的常数,只需⼿⼯算出来即可。
这个常数可以直接带⼊多项式求积函数。
上式中x的求积分区间为[a, b],h = (b - a)/n, 这样⼀来积分区间变为[0, n],需要注意的是从这个公式可以看出⼀个⼤的区间被分为n个等长的⼩区间。
这⼀部分具体请参见任意⼀本有关数值计算的书!n是⼀个事先确定好的值。
⼜因为⼀个⼤的插值区间需要被分为等长的多个⼩区间,并在这些⼩区间上分别进⾏插值和积分,因此此时的⽜顿-科特斯公式被称为:复化⽜顿-科特斯公式。
并且对于n的不同取值⽜顿-科特斯有不同的名称:当n=1时,叫做复化梯形公式,复化梯形公式也就是将每⼀个⼩区间都看为⼀个梯形(⾼为h,上底为f(t), 下底为f(t+1))。
这与积分的本质:⽆限分隔相同。
当n=2时,复化⽜顿-科特斯公式被称为复化⾟普森公式(⾮美国法律界著名的那个⾟普森)。
我这篇⽂章实现的是复化梯形公式:⾸先写⼀个函数求节点函数值求和那部分:"""@brief: 求和 ∑f(xk) : xk表⽰等距节点的第k个节点,不包括端点xk = a + kh (k = 0, 1, 2, ...)积分区间为[a, b]@param: xk 积分区间的等分点x坐标集合(不包括端点)@param: func 求积函数@return: 返回值为集合的和"""def sum_fun_xk(xk, func):return sum([func(each) for each in xk])然后就可以写整个求积分函数了:"""@brief: 求func积分 :@param: a 积分区间左端点@param: b 积分区间右端点@param: n 积分分为n等份(复化梯形求积分要求)@param: func 求积函数@return: 积分值"""def integral(a, b, n, func):h = (b - a)/float(n)xk = [a + i*h for i in range(1, n)]return h/2 * (func(a) + 2 * sum_fun_xk(xk, func) + func(b))相当的简单试验:当把⼤区间分为两个⼩区间时:分为20个⼩区间时:求的积分值就是这些彩⾊的梯形⾯积之和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《复合梯形公式》实验报告
实验名称:验证数值积分求积公式及复合梯形公式程序设计成绩:___________
专业班级:数学与应用数学1202班姓名:王晓阳学号:2012254010228 实验日期:2014 年10月20日
实验报告日期:2014年11月3日
一.实验目的
1掌握定积分的数值求解方法,验证数值积分求积公式.
2.掌握数值积分的基本思想.
3.掌握matlab实现数值积分函数的调用格式.
4.编写复合梯形公式matlab程序及学会调用.
5.学会用复合梯形公式求函数近似解.
二、实验内容
1.数值积分的实现
(1)被积函数是一个解析式
Matlab提供了quad函数和quadl函数来求定积分.它们的调用格式为:
Quad(filename,a,b,tol,trace)
Quadl(filename,a,b,tol,trace)
其中filename 是被积函数名。
a 和b 分别是定积分的下限和上限。
Tol 用来控制积分精度,默认时取610tol -=。
Trace 控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取trace=0。
例6.20 用两种不同的方法求2
10x I e dx -=⎰. (2)被积函数由一个表格定义
在matlab 中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y)函数。
其中向量X 、Y 定义函数关系Y=f(X).X 、Y 是两个等长的向量;
()12,,n X x x x =,()12,,n Y y y y =,并且12n x x x <<<,积分区间是[]1,n x x 。
例6.21用trapz 函数计算210
x I e dx -=⎰. (3)二重积分数值求解
Matlab 提供的dblquad 函数可以直接求出二重定积分的数值解。
该函数的调用格式为:I=dblquad(f,a,b,c,d,tol,trace)
该函数求f(x,y)在[a,b]*[c,d]区域上的二重定积分。
例6.22 计算二重定积分()2
122212sin x e x y dxdy ---+⎰
⎰
2.复合梯形公式 由于牛顿-柯特斯公式在8n ≥时不具有稳定性,故不可能通过提高阶的方法来提高求积精度.为了提高精度通常可把积分区间分成若干子区间(通常是等分),再在每个子区间上用低阶求积公式,这种方法称为复合求积法.
将区间[],a b 划分为n 等份,分点0,0,1,
k x x kh k n =+=,0,,n b a a x b x h n
-===
,在每个子区间[]1,k k x x +上采用梯形公式
()()()2b
a b a f x dx f a f b -≈
+⎡⎤⎣⎦⎰,则得()()()()()1
111002k k n n b x k k n a x k k h I f x dx f x dx f x f x R f +--+=====++⎡⎤⎣
⎦∑∑⎰⎰. 记()()()()()11101222n n n k k k k k h h T f x f x f a f x f b --+==⎡⎤=+=++⎡⎤⎣⎦⎢⎥⎣⎦
∑∑,称为复合梯形公式,其余项可由[]
()()()3'',,12b a R f f a b ηη-=-∈得[]()()3
1''10,,12n n n k k k k k h R f I T f x x ηη-+=⎡⎤=-=-∈⎢⎥⎣⎦
∑.由于
()}{()()}{
1''''''01min max n k k k k f f f n ηηη-=≤≤∑,所以(),a b η∃∈,使()()1''
''01n k k f f n ηη-==∑.于是复合梯形公式的余项为[]()2''12
n b a R f h f η-=-.(),a b η∈. ()lim 0n n R f →∞=即lim n n T I →∞
=,所以复合梯形公式收敛. 以以原函数()()sin x f x x
=为例,进行matlab 程序设计. 三、实验环境
MATLAB R2014a
四、实验步骤
(一)验证数值积分公式
(1)被积函数是一个解析式
例6.20先建立一个函数M文件ex.m:
function ex=ex(x)
ex=exp(-x.^2);
end
然后在matlab命令窗口,输入命令:
format long
I=quad('ex',0,1)
(2)被积函数由一个表格定义
例6.21
在matlab命令窗口,输入命令:
X=0:0.01:1;
Y=exp(-X.^2);
trapz(X,Y)
(3)二重积分数值求解
例6.22
(1)建立一个函数文件fxy.m
function f=fxy(x,y)
global ki;
ki=ki+1; %ki用于统计被积函数的调用次数f=exp(-x.^2/2).*sin(x.^2+y);
end
(2)调用dblquad函数求解
global ki;ki=0;
I=dblquad('fxy',-2,2,-1,1)
(二)复合梯形公式算法流程图
(三)程序设计
以原函数()
() sin x
f x
x
=为例,a,b分别为积分区间的上限和下限,n为将积分区间划分的份数.
1.编写原函数M文件f.m
function y=f(x)
y=sin(x)/x;
2.编写求复合梯形公式M文件FT.m
function Tn=FT(a,b,n)
a=input('请输入a的值:');
b=input('请输入b的值:');
n=input('请输入n的值:');
h=(b-a)/n;
for k=0:n
x(k+1)=a+k*h;
if x(k+1)==0
x(k+1)=10^(-10);
end
end
T1=h/2*(f(x(1))+f(x(n+1)));
for i=2:n
F(i)=h*f(x(i));
end
T2=sum(F);
Tn=T1+T2;
3.运行程序
4.用quad求解与复合梯形公式求解结果做对比I=quad('sin(x)./x',0,1)
五、实验结果
(一) 验证数值积分公式
(1) 被积函数是一个解析式
I =0.746824180726425
(2) 被积函数由一个表格定义
ans =0.7468
(3) 二重积分数值求解
I =1.5745
(二)复合梯形公式程序运行结果:
FT
请输入a 的值:0
请输入b 的值:1
请输入n 的值:8
ans =0.9457
FT
请输入a 的值:0
请输入b 的值:1
请输入n 的值:3
ans =0.9433
调用quad 命令运行结果
I =0.9461
六、实验讨论、结论
1.对于函数()()sin x f x x
=,将积分区间[0,1]划分为8等份,应用复合梯形公式matlab 程序求得积分()10sin x I dx x
=⎰的近似值80.9457T =.调用quad 命令求得I=0.9461,余项[]n n R f I T =-为0.0004.当将积分区间划分为3等份时,30.9433T =,余项为0.0028,由此可知,将区间划分的份数越多,结果越准确.
2.通过实验进一步学习了积分的数值计算方法,设法构造某个简单函数近似
表示,然后得到近似值。
公式不但具有最高代数精度,而且收敛性和稳定性都有保证,因此是高精度的求积公式。
七、参考资料
[1]李庆杨,王能超,易大义. 数值分析. 清华大学出版社,2008,P106
[2]刘卫国. MATLAB程序设计与应用. 高等教育出版社,2006,P157。