利用复化梯形公式、复化simpson 公式计算积分复习过程
- 格式:doc
- 大小:110.50 KB
- 文档页数:5
复化梯形公式,复化辛普森公式,复化柯特斯公式
复化梯形公式、复化辛普森公式和复化柯特斯公式都是用来计算定积分的近似值的方法。
1. 复化梯形公式:将积分区间分成若干个小区间,在每个小区间上用梯形面积近似代替该小区间的曲边梯形面积,然后将这些梯形面积相加,得到积分的近似值。
2. 复化辛普森公式:将积分区间分成若干个等分小区间,在每个小区间上用矩形面积近似代替该小区间的曲边梯形面积,然后将这些矩形面积相加,得到积分的近似值。
3. 复化柯特斯公式:将积分区间分成若干个等分小区间,在每个小区间上用切线段长度近似代替该小区间的曲边梯形面积,然后将这些切线段长度相加,得到积分的近似值。
这三种方法都是通过将积分区间分成若干个小区间,然后在每个小区间上用近似方法计算该小区间的曲边梯形面积,最后将这些近似值相加得到积分的近似值。
它们的精度和误差都与分区间的大小有关。
复化梯形算法求解数值积分
下面详细介绍复化梯形算法的原理和步骤:
1.原理:
2.步骤:
(1)将区间[a,b]等分成N个小区间,每个小区间的长度为h=(b-a)/N。
(2) 定义x0 = a 和 xn = b,即第一个小区间的左端点和最后一个
小区间的右端点。
(3) 对于每个小区间[i, i+1],计算f(xi)和f(xi+1),然后计算小
区间[i, i+1]上的积分值Ti = h * (f(xi) + f(xi+1)) / 2
(4)将所有小区间上的积分值相加,得到近似的定积分值
I≈T=T1+T2+...+TN。
3.误差分析:
误差E=-(b-a)^3/12N^2*f''(ξ)
其中f''(ξ)是函数f(x)在区间[a,b]上的二阶导数的最大值。
4.示例:
考虑要求解函数f(x)=x^2在区间[0,1]上的定积分,可以使用复化梯
形算法进行计算。
首先将区间[0,1]等分成N个小区间,假设N=4、则每个小区间的长
度为h=(1-0)/4=0.25
然后计算每个小区间上的积分值:
最后将所有小区间上的积分值相加,得到近似的定积分值:
因此,函数f(x)=x^2在区间[0,1]上的定积分的近似值为0.75
以上就是复化梯形算法求解数值积分的原理和步骤,该算法可以通过增加小区间的数量以提高计算的精度。
同时,利用误差公式可以估计计算的误差,有助于选择适当的参数进行数值积分的计算。
数值积分:梯形规则数值积分:梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式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)龙贝格求积公式也称为逐次分半加速法。
它是在梯形公式、辛普森公式和柯特斯公式之间的关系的基础上,构造出一种加速计算积分的方法。
作为一种外推算法, 它在不增加计算量的前提下提高了误差的精度.在等距基点的情况下,用计算机计算积分值通常都采用把区间逐次分半的方法进行。
课程设计报告课程名称数值逼近专业信息与计算科学班级姓名学号指导教师日期2011-06-27理学院应用数学系一、目的意义 (1) 进一步熟悉掌握复化梯形公式及其算法;(2) 进一步熟悉掌握复化Simpsom 公式及其算法;(3) 了解比较复化梯形公式和复化Simpsom 公式的代数精度。
二、内容要求积分计算问题:分别用复化梯形和复化Simpsom 求积公式计算积分dx e x x x 5.1402)(13-⎰-,并比较计算量(精度为10-8)。
三、问题解决的方法与算法方法:复化梯形和复化Simpsom 积分公式算法:输入:端点a 、b 以及要计算的积分公式f(x);输出:积分f(x)在指定区间上的近似值Step1:编写复化梯形和复化Simpson 积分公式Step2:输入所需的断点个数nSetp3:分别调用复化梯形和复化Simpson 积分公式数值积分及其应用 报告1Setp4:比较代数精度使其达到10-8Setp5:输出复化梯形和复化Simpson积分公式对应的值四、计算程序复化梯形积分公式:#include"stdio.h"#include"math.h"void main()#define n 4{float a,b,d,y;float h[n-2],k[n-2],s[n-1];a=0.0;b=4.0;printf("输出相邻节点间距:\n");d=(b-a)/n;printf("%f\n",d);printf("输出节点函数值:\n");for(int i=0;i<n+1;i++){h[i]=a+i*d;k[i]=13*(h[i]-h[i]*h[i])*exp(-1.5*h[i]);printf("k[%d]=%f\n",i,k[i]);}s[0]=k[0]+k[n];for(i=1;i<n;i++){s[i]=s[i-1]+2*k[i];}y=0.5*d*s[n-1];printf("输出积分值:\n");printf("%f\n",y);}复化抛物线积分公式:#include"stdio.h"#include"math.h"#define n 4void main(){float a,b,h;double x[100],k[100],y[100],g[100],z[100];printf("输入积分上下限:\n");scanf("%f %f",&a,&b);printf("输出积分步长:\n");h=(b-a)/4;printf("%f\n",h);for(int i=1;i<n;i++){x[i]=a+h*i;k[i]=x[i]-0.5*h;}k[n]=b-0.5*h;x[0]=a;x[n]=b;for(i=0;i<n+1;i++){y[i]=13*(x[i]-x[i]*x[i])*exp(-1.5*x[i]);} for(i=1;i<n+1;i++){g[i]=13*(k[i]-k[i]*k[i])*exp(-1.5*k[i]);} z[0]=y[0]+y[n];z[1]=0.0;z[2]=0.0;for(i=1;i<n;i++){z[1]=z[1]+y[i];}for(i=1;i<n+1;i++){z[2]=z[2]+g[i];}z[3]=h*(z[0]+2*z[1]+4*z[2])/6;printf("%f\n",z[3]);}五、计算结果与分析:复化梯形积分公式:复化抛物线积分公式:输出相邻节点间距:1.000000输出节点函数值:k[0]=0.000000k[1]=0.000000k[2]=-1.294464k[3]=-0.866502k[4]=-0.000026输出积分值:-6.482936Press any key to continue输入积分上下限:0 4输出积分步长:1.000000-1.608667Press any key to continue结果分析:通过该算法可以看出复化体形积分和simpson积分比梯形积分和抛物线积分具有更好的精度。
(一) 实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simps on 公式以及 romberg 积分。
问题三数值积分椭圆周长的计算。
考虑椭圆其周长,只要计算其第一象限的长度即可.用参数方程可以表示为X acost (0 t /2), y bs int计算公式为.a 2 sin 21 b 2 cos 2 tdt0 为计算方便,我们可以令a 1,即计算下面的积分0 Ja 2sin 2t~ t a 0 <si n 2t (b )2cos 2 tdt 可以归结为上面的形式)采用复化梯形公式,复化Simpson 公式以及Romberg 积分的方法 计算积分I (b )「J 1 (b 2 1)cos 2tdt给出通用程序,该通用程序可以计算任何一个函数在任意一个区 间在给定的精度下的数值积分。
程序输出为计算出的数值积分值以及 计算函数值的次数。
(三)算法介绍首先利用给出的各迭代公式,设计程序。
在matlab 对话框中输入要计算的函数,给出区间和精度。
问题描述b 2 1,为计算 sin 21 2 2 b cos tdt复化梯形的迭代公式为:J b f (x) dx 二h/2 f(已)+ 2X°二+ f (b);章L. J * ' 』,复化simps on迭代公式为:J;f (x)dx 二h/3p(a) + 辽負1(x2j) + 4斗g〔fgj - i) + f (b)Romberg迭代公式为:削」- 1 h - 1. j - 1n _ n(四)程序对于复化梯形公式和复化simpson公式,我们放在中(転记后的程序可用来把b看为变量时的算法实现) %复化梯形公式function y=jifenn(f,n,a,b) (说明:f表示任一函数,n精度,a, b为区间)fi=f(a)+f(b);h=(b-a)/n;d=1;%fun cti on f=jife n(n ,a,b,c)%syms t%y=sqrt(1+(c A2-1)*cos(t)A2);%ya=subs(y,t,a);%yb=subs(y,t,b);%fi=ya+yb;for i=1:n-1x=a+i*h;fi=fi+2*f(x);d=d+1;%yx=subs(y,t,x);%fi=fi+2*yx;endf4=h/2*fi,d%复化simposon公式f仁0;f2=0;dd=1;for i=1:n-1dd=dd+1;if rem(i,2)~=0;x1=a+i*h; f1=f1+f(x1);else rem(i,2)==0; x2=a+i*h; f2=f2+f(x2) ;endendf3=(h/3)*(f(a)+4*f1+2*f2+f(b)),dd对于romberg积分,建立文件。
复化梯形算法求解数值积分梯形公式是一个基本的数值积分方法,它假设被积函数在每个小区间上是线性的。
具体来说,对于一个积分区间[a,b],将其等分成n个小区间,每个小区间的宽度为h=(b-a)/n。
则积分的近似计算可以表示为:∫[a, b]f(x)dx ≈ h/2 * [f(a) + 2f(x1) + 2f(x2) + ... +2f(xn-1) + f(b)]其中,xi是每个小区间的边界点,即xi = a + i*h。
1.将积分区间[a,b]等分成n个小区间,计算小区间宽度h=(b-a)/n。
2.初始化积分值I为0。
3.通过梯形公式计算每个小区间的积分值,并将其累加到I中。
具体步骤如下:- 计算小区间边界点xi = a + i*h,i从1到n-1- 计算每个小区间的函数值f(xi)。
-将小区间首尾函数值f(a)和f(b)分别乘以h的一半(即h/2)加到I中。
- 将中间小区间的函数值f(xi)乘以h加到I中。
4.返回积分值I作为近似结果。
需要注意的是,复化梯形算法对于一些函数可能不太适用。
在积分区间内存在较大的函数值变化或函数不连续的情况下,该算法的精度可能会下降。
此时,可以考虑使用其他更复杂的数值积分方法,如复化 Simpson 算法或高斯-勒让德公式。
综上所述,复化梯形算法是一种简单有效的数值积分方法。
通过将积分区间分成多个小区间,并使用梯形公式进行近似计算,可以得到较高精度的积分结果。
然而,该方法的速度较慢,并在一些情况下可能不太适用。
因此,在实际应用中,需要根据具体问题的特点选择合适的数值积分方法。
复合梯形公式和复合辛普森公式例题复合梯形公式和复合辛普森公式例题数值计算是现代科学技术中重要的研究领域之一,而数值积分是数值计算中的一个重要分支。
数值积分是指在一定区间上用数值方法来逼近求解定积分的过程。
综合考虑精度和效率,梯形公式和辛普森公式是数值积分中比较常用的方法,而复合梯形公式和复合辛普森公式则是对前两种方法的改进和完善。
一、复合梯形公式(一)基本原理梯形公式是数值积分中运用最广泛的一种方法,其基本思想是将被积函数在区间[a,b]上的曲线用若干条梯形逼近,然后计算梯形的面积之和,得到函数曲线下的面积。
若将区间[a,b]分为n个小区间,梯形公式还可以推广为复合梯形公式。
复合梯形公式的基本原理是将整个区间[a,b]等分为n 个小区间,每个小区间的长度为h=(b-a)/n,然后对于每个小区间求出梯形的面积,并将所有梯形面积加起来得到函数曲线下的面积,并作为积分的近似值。
具体地说,复合梯形公式的表达式为:$$\int_a^b f(x)dx \approx \frac{h}{2}[f(a)+2\sum_{i=1}^{n-1} f(x_{i})+f(b)]$$其中,$x_1=a+h,x_2=a+2h,...,x_{i+1}=x_i+h,...,x_{n}=b-h$,h是小区间长度。
(二)例题现在考虑如下的积分:$$I=\int_0^1 e^{x^2} dx$$将整个区间[0,1]等分为4个小区间,得到$h=0.25$,对于每个小区间,可以分别求出梯形的面积,得到:$$\frac{h}{2}[f(0)+2f(0.25)+2f(0.5)+2f(0.75)+f(1)]$$代入函数$f(x)=e^{x^2}$,得到近似积分值为$1.4627$。
使用Matlab代码进行计算,得到具体结果为:>> f=@(x) exp(x.^2); h=0.25; x=0:h:1;I=h/2*(f(x(1))+2*sum(f(x(2:end-1)))+f(x(end))) sprintf('%.5f',I)ans =1.46270可以发现,与精确值$1.46265$相比,误差很小,说明复合梯形公式是一种很有效的近似积分方法。
(一)实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simpson 公式以及romberg 积分。
(二)问题描述问题三数值积分椭圆周长的计算。
考虑椭圆,为计算其周22221x y a b+=长,只要计算其第一象限的长度即可.用参数方程可以表示为,cos (0/2)sin x a t t y b t π=⎧≤≤⎨=⎩计算公式为/0π⎰为计算方便,我们可以令,即计算下面的积分1a =/0π⎰/0π=⎰(可以归结为上面的/0π⎰/0a π=⎰形式)采用复化梯形公式,复化Simpson 公式以及Romberg 积分的方法计算积分/0()I b π=⎰给出通用程序,该通用程序可以计算任何一个函数在任意一个区间在给定的精度下的数值积分。
程序输出为计算出的数值积分值以及计算函数值的次数。
(三)算法介绍首先利用给出的各迭代公式,设计程序。
在matlab 对话框中输入要计算的函数,给出区间和精度。
复化梯形的迭代公式为:;∫b a f(x)dx =ℎ/2[f (a )+2∑n ‒1j =1f (x j )+f(b)]复化simpson 迭代公式为:;∫b a f(x)dx =ℎ/3[f (a )+2∑(n 2)‒1j =1f (x 2j )+4∑(n 2)j =1f (x 2j ‒1)+f(b)]Romberg 迭代公式为:。
R k,j =R k,j ‒1+R k,j ‒1—R k ‒1,j ‒14j ‒1-1(四)程序对于复化梯形公式和复化simpson 公式,我们放在jifenn.m 中。
(%标记后的程序可用来把b 看为变量时的算法实现)%复化梯形公式function y=jifenn(f,n,a,b) (说明:f 表示任一函数,n 精度,a ,b 为区间)fi=f(a)+f(b);h=(b-a)/n;d=1;%function f=jifen(n,a,b,c)%syms t%y=sqrt(1+(c^2-1)*cos(t)^2);%ya=subs(y,t,a);%yb=subs(y,t,b);%fi=ya+yb;for i=1:n-1x=a+i*h;fi=fi+2*f(x);d=d+1;%yx=subs(y,t,x);%fi=fi+2*yx;endf4=h/2*fi,d%复化simposon 公式f1=0;f2=0;dd=1;for i=1:n-1dd=dd+1;if rem(i,2)~=0;x1=a+i*h;f1=f1+f(x1);else rem(i,2)==0;x2=a+i*h;f2=f2+f(x2) ;endendf3=(h/3)*(f(a)+4*f1+2*f2+f(b)),dd对于romberg积分,建立romberg.m文件。
复化梯形求积公式复化梯形求积法是一种用于数值积分的常见方法,它可以帮助我们求解一元定积分(即 integrals 或者是积分函数)。
在复化梯形求积法中,我们需要对函数 f(x) 在某一区间 [a,b]内的值进行插值,并将插值后的函数值相加,以计算该函数在该区间上的积分值。
复化梯形求积法的步骤如下:第一步:分解积分区间[a,b],将其分解为 n 个子区间,其中区间长度为 h=(b-a)/n。
第二步:对积分区间[a,b] 中每个子区间使用复化梯形公式来计算它们的积分值。
根据复化梯形求积公式,积分区间 [a,b] 中每个子区间的积分值如下:Ii = h/2 * [f(xi) + f(xi+1)] (i=0,1,...,n-1)其中,xi 是第 i 个(0≤i≤n-1)子区间的左端点,xi+1 是第 i 个子区间的右端点,f(xi) 是第 i 个子区间左端点处的函数值,f(xi+1) 是第 i 个子区间右端点处的函数值。
第三步:将所有子区间积分值进行累加,得到积分区间[a,b]的总积分值。
按照复化梯形求积法,积分区间 [a,b] 的总积分值计算公式如下:I=h/2 * [f(x0)+f(xn)+∑(i=1,2,...,n-1)[f(xi)+f(xi+1)]]以上就是复化梯形求积法的基本原理及其用于求解一元定积分的步骤:首先将积分区间分解为子区间,然后使用复化梯形公式计算每个子区间的积分值,最后将子区间积分值相加得到积分区间的总积分值。
这种求积方法容易理解,计算量小,计算速度快,因此复化梯形求积法在积分计算中有着重要的应用价值。
在复化梯形求积法中,可以使用高斯公式来加快积分值的计算。
高斯公式的定义如下:I=h/2 * [f(x0)+f(xn)+c1f(x1)+c2f(x2)+...+cnf(xn-1)]其中,c1,...,cn 是某些常数,x1,...,xn-1 为积分区间上的中点。
应用高斯公式,可以将积分计算量减小一半以上,同时也大大减少计算精度上的误差。
用复化Simpson 求积分函数1.实验目的:(1)掌握用复化Simpson 求积分函数。
(2)附加培养学生的动手能力。
2.实验要求:(1)输入:需要积分的函数,积分的上下线,区间的等分数 。
(2)输出:根据复化Simpson 原理求解的函数积分结果。
3.程序流程:(1)选择需要积分的函数; (2)输入积分函数的上限a ; (3)输入积分函数的下限b ;(4)输入积分区间需要等分数n 。
4.复化Simpson 求解原理:由于Simpson 求积公式要用到三个节点,所以每个子区间1[,]k k x x -上添加一个中点1/2k x -,即, 1/21()2k x a k h -=+-然后在每个子区间上利用Simpson 公式,并将它们想加便的:[]1/21()(1)4()()6nb k k ak hf x dx f k f xf x -=≈-++∑⎰这就是复化Simpson 公式。
** 程序中需要选择的积分函数F 1,F 2,F 3 **F 1表示函数10sin ()x f x d xx=⎰。
F 2表示函数2145ln ()xx e xf x ++++=⎰。
F 3表示函数14co s sin ()1co s x x f x d x x=+⎰。
5.操作流程图:6.分别选择函数F1、F2、F3时的运行结果。
(1)函数F1运行结果图。
(2)函数F2运行结果图。
(3)函数F3的运行结果。
7.源码#include<stdio.h>#include<math.h>//定义函数F1double f1(double x){double s;s=sin(x)/x;if(x==0){return 1;}else{return s;}}//定义函数F2double f2(double x){double s;s=(4+5*x+exp(x)+sqrt(x*x+1)+log(x))/sqrt(2*x*x+1);return s;}//定义函数F3double f3(double x){double s;s=cos(x)*sin(x)/(1+pow(cos(x),4));return s;}main(){int j,i; //for循环中循环变量int t; //用于判断选择那个函数float p,h,a,b,n,d;//p表示点间距,h表示步长,a表示上线,b表示下线,n表示等分数,d表示需要的点数。
一 、实验目的掌握复合辛普森求积公式的运用,能够用复合辛普森公式对函数进行近似 求值二 、实验要求 对于函数xx x f sin )(=,给出8=n 时的函数表,试用复合梯形公式及复合辛普森公式计算积分 dx x x I ⎰=10sin 三、实验内容1 复合梯形公式 将区间],[b a 划分为n 等份,分点n k n a b h kh a x k ,,1,0,,⋅⋅⋅=-=+=,在每个子区间],[1+k k x x )(1,,1,0-⋅⋅⋅=n k 上采用梯形公式))()((2)(b f a f a b dx x f ba +-≈⎰,则得 )()]()([2)()(101101f R x f x f h dx x f dx x f I n n k k k n k x x b a k k ++===∑∑⎰⎰-=+-=+ 记)]()(2)([2)]()([21111b f x f a f h x f x f h T n k k n k k k n ++=+=∑∑-=-+ 2 辛普森公式将区间],[b a 划分为n 等份,在每个子区间],[1+k k x x 上采用辛普森公式,若记h x x k k 212/1+=+ )()]()(4)([6)()(1012/1101f R x f x f x f h dx x f dx x f I n n k k k k n k x x b a k k +++===∑∑⎰⎰-=++-=+记=n S ∑-=++++112/1)]()(4)([6n k k k x f x f a f h=)]()(2)(4)([611102/1b f x f x f a f h n k k n k k ∑∑-=-=++++ 四、实验程序#include<stdio.h>#include"math.h"double fun1(double x){double f;if(x==0)f=1;elsef=sin(x)/x;return f;}fun(double a,double b,double h,double n){double x1;double sum=0.0;int i;sum+=(fun1(a)+fun1(b));for(i=1;i<=n-1;i++){x1=a+i*h;sum+=(2*fun1(x1));}sum*=(h/2);printf("用复合梯形公式求得的积分为:\n");printf("%lf\n",sum);}void main(){double a,b,n;double h;double t;printf("请输入积分上限与积分下限:\n");scanf("%lf%lf",&a,&b);printf("请输入把此区间n 等分的n:\n");scanf("%lf",&n);t=b-a;h=t/n;fun(a,b,h,n);}复合辛普森公式程序#include<stdio.h>#include"math.h"double fun1(double x){double f;if(x==0)f=1;elsef=sin(x)/x;return f;}fun(double a,double b,double h,double n) {double x1,x2;double sum=0.0;int i;sum+=(fun1(a)+fun1(b));for(i=1;i<=n-1;i++){x1=a+i*h;sum+=(2*fun1(x1));}for(i=0;i<=n-1;i++){x2=a+i*h+0.5*h;sum+=(4*fun1(x2));}sum=sum*(h/6);printf("%lf\n",sum);}void main(){double a,b,n;double h;double t;printf("请输入积分上限与积分下限:\n");scanf("%lf%lf",&a,&b);printf("请输入把此区间n等分的n:\n");scanf("%lf",&n);t=b-a;h=t/n;fun(a,b,h,n);}五、实验结果实验得到的结果:六、实验总结通过这次实验我对用复合梯形和辛普森公式求积分有了更多的了解。
复化simpson公式Simpson公式是求积分的重要方法,由英国数学家Thomas Simpson在1743年提出。
Simpson公式的基本思想是将定积分的区间分成n个等分,每个等分被近似地看成一个三角型,以此来计算定积分的值。
首先,根据Simpson公式,将积分区间[a, b]等分为n个点:X0 = a,X1 = a + h,X2 = a + 2h,…,Xn = b。
其中,h = (b – a)/n。
接着,假定函数f(x)在[a, b]上可以用n次多项式来近似,即f(x) = a0 + a1x + a2x2 + … + anxn。
然后,根据Simpson公式,可以得到定积分的近似值:∫abf(x)dx ≈ h/3[f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + … + 4f(xn-1) + f(xn)]上式就是Simpson公式的原始形式,它的精确度和n的大小有关,当n越大时,Simpson公式的精确度越高。
基于Simpson公式,还有一种叫做复化Simpson公式的积分计算方法。
复化Simpson公式把定积分区间分成多个子区间,在每个子区间上使用Simpson公式计算,然后把所有子区间的积分值加起来,就可以得到定积分的近似值。
例如,把[a, b]分成n个子区间[x0, x1],[x1, x2],…,[xn-1, xn],它们的积分值分别为I1,I2,…,In,则复化Simpson公式的结果为:∫abf(x)dx ≈ I1 + I2 + … + In复化Simpson公式比单一Simpson公式更容易理解和使用,它还可以提高计算精度,使用复化Simpson公式可以得到更准确的结果。
从上面可以看出,Simpson公式是一种简单、高效的积分计算方法,它可以使用复化Simpson公式提高精度,在很多工程和科学应用中都得到了广泛的应用。
MATLAB实现复化梯形公式复化SIMPSON公式以及ROMBERG积分复化梯形公式、复化SIMPSON公式和ROMBERG积分是常用的数值积分方法,用于对定积分进行数值近似计算。
下面将介绍MATLAB实现这三种方法的具体步骤。
复化梯形公式使用多个等距的子区间进行近似计算,然后将子区间上的梯形面积求和。
MATLAB代码如下:```matlabh=(b-a)/n;%子区间宽度x=a:h:b;%子区间节点y=f(x);%子区间节点对应的函数值result = h * (sum(y) - (y(1) + y(end)) / 2); % 计算近似积分值end```复化SIMPSON公式同样使用多个等距的子区间进行近似计算,但是每个子区间上使用二次多项式拟合。
MATLAB代码如下:```matlabh=(b-a)/n;%子区间宽度x=a:h:b;%子区间节点y=f(x);%子区间节点对应的函数值result = (h / 3) * (y(1) + y(end) + 4 * sum(y(2:2:end-1)) + 2 * sum(y(3:2:end-2))); % 计算近似积分值end```3. ROMBERG积分(Romberg Integration)ROMBERG积分是一种逐次精化的数值积分方法,通过不断提高梯形法则的阶数进行近似计算。
MATLAB代码如下:```matlabfunction result = romberg_integration(f, a, b, n)R = zeros(n, n); % 创建一个n*n的矩阵用于存储结果h=b-a;%子区间宽度R(1,1)=(h/2)*(f(a)+f(b));%计算初始近似积分值for j = 2:nh=h/2;%缩小子区间宽度sum = 0;for i = 1:2^(j-2)sum = sum + f(a + (2 * i - 1) * h);endR(j, 1) = 0.5 * R(j-1, 1) + (h * sum); % 使用梯形法则计算积分值for k = 2:jR(j, k) = R(j, k-1) + (R(j, k-1) - R(j-1, k-1)) / ((4^k) - 1); % 使用Romberg公式计算积分值endendresult = R(n, n); % 返回最终近似积分值end```以上是MATLAB实现复化梯形公式、复化SIMPSON公式以及ROMBERG积分的代码。
三维复化Simpson积分是利用复化方法求得Simpson公式,其中n为区间分割的子区间数,h为子区间长度,a为积分区间的左端点,b为积分区间的右端点。
具体步骤如下:
1.将积分区间[a, b]均匀地分割成n个小区间,小区间的长度为h=(b-a)/n。
2.在每个小区间的中点处取值,将积分区间[a, b]分成n个小区间,每个小区间的长度为h/2。
3.对每个小区间进行Simpson积分,得到每个小区间的积分值。
4.将所有小区间的积分值相加,得到总积分值。
以上信息仅供参考,如需了解更多信息,请查阅相关书籍或咨询专业人士。
编程MATLAB程序实现复化梯形和辛普森数值积分MATLAB是一种高级编程语言和计算环境,适用于各种科学和工程应用。
在MATLAB中,可以使用数值积分的方法来近似计算函数的定积分。
本文将介绍如何使用MATLAB编程实现复化梯形和辛普森数值积分。
首先,我们来介绍复化梯形法。
复化梯形法是一种基本的积分数值方法,它将定积分区间等分为若干个小的子区间,然后在每个子区间上应用梯形公式进行近似计算。
下面是复化梯形法的MATLAB代码:``` matlabh=(b-a)/N;x=a:h:b;y=f(x);I = h * (sum(y) - (y(1) + y(end)) / 2);end```在上述代码中,`f`是积分的函数,`a`和`b`是积分的上下限,`N`是子区间的数量。
首先,我们计算出每个子区间的步长`h`,然后生成一个数组`x`,其中包含了每个子区间的起始点和终止点。
接下来,根据积分函数`f`计算出在每个子区间上的函数值,并将这些函数值存储在数组`y`中。
最后,使用梯形公式计算出近似积分结果`I`。
下面是使用复化梯形法进行数值积分的示例:``` matlaba=0;b = pi;N=100;disp(I);```接下来,我们来介绍辛普森法。
辛普森法是一种更精确的数值积分方法,它将定积分区间等分为若干个小的子区间,然后在每个子区间上应用辛普森公式进行近似计算。
下面是辛普森法的MATLAB代码:``` matlabh=(b-a)/(2*N);x=a:h:b;y=f(x);I = h / 3 * (y(1) + y(end) + 4 * sum(y(2:2:end-1)) + 2 * sum(y(3:2:end-2)));end```在上述代码中,`f`是积分的函数,`a`和`b`是积分的上下限,`N`是子区间的数量。
首先,我们计算出每个子区间的步长`h`,然后生成一个数组`x`,其中包含了每个子区间的起始点和终止点。
实验四、复化梯形公式和复化Simpson公式的精度比较(2学时)一、实验目的与要求1、熟悉复化Simpson公式和复化梯形公式的构造原理;2、熟悉并掌握二者的余项表达式;3、分别求出准确值,复化梯形的近似值,复化Simpson的近似值,并比较后两者的精度;4、从余项表达式,即误差曲线,来观察二者的精度,看哪个更接近于准确值。
二、实验内容:对于函数sin()xf xx=,试利用下表计算积分1sin xI dxx=⎰。
表格如下:注:分别利用复化梯形公式和复化Simpson公式计算,比较哪个精度更好。
其中:积分的准确值0.9460831I=。
三、实验步骤1、熟悉理论知识,并编写相应的程序;2、上机操作,从误差图形上观察误差,并与准确值相比较,看哪个精度更好;3、得出结论,并整理实验报告。
四、实验注意事项1、复化梯形公式,程序主体部分:for n=2:10T(n)=0.5*T(n-1)for i=1:2^(n-2)T(n)=T(n)+(sin((2*i-1)/2^(n-1))/((2*i-1)/2^(n-1)))/2^(n-1);endend2、复化Simpson公式,程序主体部分:for i=1:10n=2.^ix=0:1/n:1f=sin(x)./xf(1)=1s=0for j=1:n/2s=s+f(2*j)endt=0for j=1:(n/2-1)t=t+f(2*j-1)endS(i)=1/3/n*(f(1)+4*s+2*t+f(n+1))end五.实验内容复化梯形公式和复化辛普森公式的引入复化梯形公式:110[(()]2n n k k k h T f x f x -+==+∑;复化辛普森公式:11102[(4()()]6n n k k k k h S f x f x f x -++==++∑; 根据题意和复化梯形公式、复化辛普森公式的原理编辑程序求解代码如下: Matlab 代码clcs=quad('sin(x)./x',0,1)p1=zeros(10,1);p2=zeros(10,1);for k=6:15s1=0;s2=0;x=linspace(0,1,k);y=sin(x)./x;z=(1/(2*(k-1))):(1/(k-1)):1;sz=sin(z)./z;y(1)=1;for i=1:(k-1)s1=s1+0.5*(x(i+1)-x(i))*(y(i)+y(i+1));endfor j=1:(k-1)s2=s2+(1/6)*(x(j+1)-x(j))*(y(j)+y(j+1)+4*sz(j)); endp1(k-5)=s1-s;p2(k-5)=s2-s;endp1;p2;s1=s+p1(4)s2=s+p2(4)format longfor k=1:length(p1)p1(k)=abs(p1(k));p2(k)=abs(p2(k));endp1p2plot(6:1:15,p1,'-r')hold onplot(6:1:15,10000*(p2),'-c') hold off部分程序结果输出:s =0.946083070076534s1 =0.945690863582701s2 =0.946083085384947结果分析根据结果输出可知:积分10sin()xI dxx=⎰的准确值为:I= 0.946083070076534;通过复化梯形公式和复化辛普森公式得到的积分值为:s1 =0.945690863582701:s2 =0.946083085384947;相对误差为:411100 4.1510100S I Iδ--=⨯=⨯; 822100 1.6210100S I Iδ--=⨯=⨯; 显然,从相对误差可知通过辛普森公式得到的结果误差小精度高。
利用复化梯形公式、
复化simpson 公式
计算积分
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
2
实验目的或要
求
1、利用复化梯形公式、复化simpson 公式计算积分
2、比较计算误差与实际误差
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
取n=2,3,…,10分别利用复化梯形公式、复化simpson 公式计算积分
1
2
0
Ixdx
,并与真值进行比较,并画出计算误差与实际误差之间的曲
线。
利用复化梯形公式的程序代码如下:
function f=fx(x)
f=x.^2; %首先建立被积函数,以便于计算真实值。
a=0; %积分下线
b=1; %积分上线
T=[]; %用来装不同n值所计算出的结果
for n=2:10;
h=(b-a)/n; %步长
x=zeros(1,n+1); %给节点定初值
for i=1:n+1
x(i)=a+(i-1)*h; %给节点赋值
end
y=x.^2; %给相应节点处的函数值赋值
t=0;
for i=1:n
t=t+h/2*(y(i)+y(i+1)); %利用复化梯形公式求值
end
T=[T,t]; %把不同n值所计算出的结果装入 T中
end
R=ones(1,9)*(-(b-a)/12*h.^ 2*2); %积分余项(计算误差)
true=quad(@fx,0,1); %积分的真实值
A=T-true; %计算的值与真实值之差(实际误差)
x=linspace(0,1,9);
plot(x,A,'r',x,R,'*') %将计算误差与实际误差用图像画出来
注:由于被积函数是x.^2,它的二阶倒数为2,所以积分余项为:(-(b-
a)/12*h.^ 2*2)
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
3
实
验
原
理
(
算
法
流
程
图
或
者
含
注
释
的
源
代
码
)
利用复化simpson 公式的程序代码如下:
同样首先建立被积函数的函数文件:
function f=fx1(x)
f=x.^4;
a=0; %积分下线
b=1; %积分上线
T=[]; %用来装不同n值所计算出的结果
for n=2:10
h=(b-a)/(2*n); %步长
x=zeros(1,2*n+1); %给节点定初值
for i=1:2*n+1
x(i)=a+(i-1)*h; %给节点赋值
end
y=x.^4; %给相应节点处的函数值赋值
t=0;
for i=1:n
t=t+h/3*(y(2*i-1)+4*y(2*i)+y(2*i+1)); %利用复化simpson公式求值
end
T=[T,t] ; %把不同n值所计算出的结果装入 T中
end
R=ones(1,9)*(-(b-a)/180*((b-a)/2).^4*24) ; %积分余项(计算误差)
true=quad(@fx1,0,1); %积分的真实值
A=T-true; %计算的值与真实值之差(实际误差)
x=linspace(0,1,9);
plot(x,A,'r',x,R,'*')
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
4
法二:
a=0;
b=1;
T=[];
for n=2:10
h=(b-a)/(2*n);
x=zeros(1,2*n+1);
for i=1:2*n+1
x(i)=a+(i-1)*h;
end
y=x.^4;
t=y(1)+y(2*n+1);
for i=1:n
t=t+4*y(2*i)+2*y(2*i-1);
end
T=[T,h/3*t];
end
true=quad(@fx1,0,1);
A=T-true;
x=linspace(0,1,9);
plot(x,A)
此法与第一种一样,只是所用的表达式不同。
注:由于被积函数是x.^4,它的四阶倒数是24,所以它的积分余项是:
(-(b-a)/180*((b-a)/2).^4*24)
精品资料
仅供学习与交流,如有侵权请联系网站删除 谢谢
5
实
验
结
果
分
析
及
心
得
体
会
上图是利用复化梯形公式所画出的误差。其中:红线是计算误差,‘*’
号是实际误差。-0.0017是计算误差。0.0417、0.0185、0.0104、0.0067
0.0046、0.0034、0.0026、0.0021、0.0017是n值分别为2到10的实际
误差。
上图是利用复化simpson公式所画出的误差。其中:红线是计算误
差,‘*’号是实际误差。
注:纵轴是0.0001。
0.5208、0.1029、0.0326、0.0133、0.0064、0.0035、0.0020、0.0013、
0.0008是n值分别为2到10的实际误差,-0.0083是计算误差。
成
绩
评
定
教师签名:
年 月 日