利用复化梯形公式、复化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文件。
利用复化梯形公式、
复化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是计算误差。
成
绩
评
定
教师签名:
年 月 日