数值分析复化梯形公式,复化Simpson公式MATLAB程序

合集下载

MATLAB复化梯形法与龙贝格法计算定积分

MATLAB复化梯形法与龙贝格法计算定积分

MATLAB复化梯形法与龙贝格法计算定积分复化梯形法和龙贝格法是常用的数值积分方法,用于计算定积分的近似值。

在MATLAB中,可以使用这两种方法来计算定积分。

1.复化梯形法:复化梯形法是基于将积分区间等分成若干子区间,并用梯形面积来近似每个子区间上的积分值。

整个积分的近似值等于所有子区间上的梯形面积之和。

首先,将积分区间[a,b]等分成N个子区间,每个子区间的长度为h=(b-a)/N。

然后,可以用以下公式计算每个子区间上的梯形面积:S=(f(x_i)+f(x_{i+1}))*h/2其中,f(x_i)和f(x_{i+1})是在子区间上取的两个点的函数值,x_i 和x_{i+1}分别是子区间的起始点和终止点。

```matlabh=(b-a)/N;x=a:h:b;result = 0;for i = 1:Nresult = result + (f(x(i)) + f(x(i + 1))) * h / 2;endend```2.龙贝格法:龙贝格法是一种自适应的数值积分方法,它基于逐次加密网格和不同阶数的梯形法来提高近似的精度。

首先,将积分区间[a, b]分割成n个子区间。

然后,可以使用复化梯形法来计算每个子区间上的积分值。

接下来,应用Richardson外推方法,通过逐次加密网格并对不同阶数的梯形法进行迭代,以获得更精确的近似值。

```matlabfunction result = romberg(f, a, b, max_depth, tol)R = zeros(max_depth, max_depth);h=b-a;R(1,1)=(f(a)+f(b))*h/2;for j = 2:max_depthh=h/2;R(j, 1) = R(j - 1, 1) / 2 + sum(f(a + (0:2^(j - 2)) * h) * h);for k = 2:jR(j,k)=R(j,k-1)+(R(j,k-1)-R(j-1,k-1))/(4^(k-1)-1);endif abs(R(j, j) - R(j - 1, j - 1)) < tolresult = R(j, j);return;endendresult = R(max_depth, max_depth);end```在使用上述代码计算定积分时,需要定义一个函数f来表示被积函数,并提供积分区间[a, b]的起始点和终止点。

用复合梯形公式和复合辛普森公式求函数积分

用复合梯形公式和复合辛普森公式求函数积分
附录一:
《数值分析》实验报告(模板)
学号********班级信科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;

matlab利用复合梯形公式计算积分

matlab利用复合梯形公式计算积分

matlab利用复合梯形公式计算积分复合梯形公式是一种常用的数值积分方法,用于近似计算定积分。

在本文中,我们将使用MATLAB编程语言来实现复合梯形公式,并计算给定函数的积分。

首先,我们需要了解复合梯形公式的原理。

复合梯形公式是通过将积分区间划分为多个小区间,并在每个小区间上使用梯形面积来近似计算定积分。

具体而言,对于一个函数f(x),我们将积分区间[a, b]划分为n个小区间,每个小区间的宽度为h=(b-a)/n。

然后,我们可以使用以下公式来计算定积分的近似值:∫[a, b] f(x) dx ≈ h/2 * (f(a) + 2*f(x1) +2*f(x2) + ... + 2*f(xn-1) + f(b))其中,x1, x2, ..., xn-1是每个小区间的中点。

接下来,我们将使用MATLAB编程语言来实现复合梯形公式。

首先,我们需要定义要计算积分的函数f(x),以及积分区间[a, b]和划分的小区间数n。

```matlab\nfunction result =composite_trapezoidal(f, a, b, n)\n h = (b - a)/ n;\n x = a:h:b;\n result = h/2 * (f(a) +2*sum(f(x(2:end-1))) + f(b));\nend\n```在上述代码中,我们首先计算小区间的宽度h,并生成一个包含所有小区间的向量x。

然后,我们使用MATLAB的sum函数来计算除首尾之外的所有小区间上函数值的和,并将其乘以h/2得到积分的近似值。

接下来,我们可以定义要计算积分的函数f(x)。

例如,我们可以计算函数f(x) = x^2在积分区间[0, 1]上的积分。

```matlab\nfunction y = f(x)\n y =x.^2;\nend\n```最后,我们可以调用composite_trapezoidal函数来计算定积分的近似值。

计算方法复化求积法实验

计算方法复化求积法实验

实验名称:实验6 复化求积法实验题目:测得飞机在高度h时的上升速度v(h)的数据如表6-4所列。

h/km 0 2 4 6 8 10v/(km/s)50.0 46.0 40.0 32.2 22.5 10.0飞机从地面上升到Hkm高度所需时间可用公式t=01 ()Hdhv h分别用复化梯形公式和复化Simpson公式计算飞机上升到8km高空所需要的时间。

实验目的:掌握复化梯形公式和复化Simpson公式求积分的方法。

基础理论:通过给出的数据和关系式,计算区间的数值积分。

实验环境:操作系统:Windows XP;实验平台:matlab实验过程:程序:f=inline('5./(1/2*h+3/2)');h=(10-0)/5;temp=f(0);xk=0;for i=1:4xk=xk+h;temp=temp+2*f(xk);endtemp=temp+f(1);temp=temp*h/2; %使用化简后的公式fprintf('\n复化梯形公式计算的结果:%f',temp);temp=0;h=(10-0)/2; %对复化simpson公式分成2个小区间xk=0;yk=f(0); % xk-x[k]for i=0:1xkh=xk+h/2;ykh=f(xkh); %xkh-x[k+1/2]xk1=xk+h;yk1=f(xk1); %xk1-x[k+1]temp=temp+h*(yk+4*ykh+yk1)/6; %加上每个小区间上的面积 xk=xk1;yk=yk1; %右端点是下一个小区间的左端点endfprintf('\n复化simpsom公式计算的结果:%f\n',temp);结果:结果分析:两种方法计算的结果稍微有点偏差。

附录:。

复化Simpson公式

复化Simpson公式

2012-2013(1)专业课程实践论文复化Simpson公式肖云龙,0818180214,R数学08-2班Simpson 公式是一个数值积分公式,在计算一些多项式函数(三次或三次一下)的定积分时会得出精确值。

但容易验证它对于)(x f =4x 通常是不准确的,因此,Simpson 公式实际上具有三次代数精度。

提高阶的途径并不总能取得满意的效果。

为了改善求积的精度,通常采用复化求积法。

Simpson 公式)]()2(4)([6b f ba f a f ab S +++-= 将定积分⎰=ba dx x f I )(的积分区间],[b a 分隔为n 等分,各节点为n j jh a x j ,,1,0, =+= nab h -=复化梯形公式的形式])()(2)([211∑-=++=n j j n b f x f a f hT记子区间[1,+j j x x ] 的中点为21+j x则复化Simpson 公式:n S ])(4)(2)()((6102111∑∑-=+-=+++=n j j n j j x f x f b f a f h#include<iostream.h>#include<math.h>double function(double x){ double s;s=x/(4+x*x);return s;}double ReiterationOfSimpson(double a,double b,double n,double f(double x)) { double h,fa,fb,xk,xj;h=(b-a)/n;fa=f(a);fb=f(b);double s1=0.0;double s2=0.0;for(int k=1;k<n;k++){ xk=a+k*h;s1=s1+f(xk);}for(int j=0;j<n;j++){ xj=a+(j+0.5)*h;s2=s2+f(xj);}double sn;sn=h/6*(fa+fb+2*s1+4*s2);return sn;}main(){double a,b,Result,n;cout<<"请输入积分下限:"<<endl;cin>>a;cout<<"请输入积分上限:"<<endl;cin>>b;cout<<"请输入分割区间数n:"<<endl;cin>>n;cout<<"复化Simpson公式计算结果:";Result=ReiterationOfSimpson(a,b,n,function);cout<<Result<<endl;return 0;}例1.用Simpson 公式求积分⎰+1024x x解:运行程序(1) 请输入积分下限:输入a 的值为0,回车。

复合梯形公式matlab代码,复合梯形公式

复合梯形公式matlab代码,复合梯形公式

复合梯形公式matlab代码,复合梯形公式《复合梯形公式》由会员分享,可在线阅读,更多相关《复合梯形公式(20页珍藏版)》请在⼈⼈⽂库⽹上搜索。

1、从积分和式到求积公式 插值型求积公式 求积公式的代数精度 复合梯形公式 MATLAB求积分命令,第五章 数值积分与数值微分,椭圆周长计算:,x =a cos t y =b sin t,0 t 2,椭圆积分,x = a sin cos y = b sin sin z = c cos ,D= (,) |0 2, 0 ,思考题: 椭球⾯的⾯积计算,椭球⾯积的积分表达式? 对⼆重积分的计算问题? 三维体积的离散数据计算?,积分和式的计算: f (x)Ca, b单增, 令 h = (b a)/n, xk = a + kh, (k = 0,1,2,n),近似计算,4.8612e+004 4.8660e+0。

2、04 4.8683e+004 4.8695e+004 4.8701e+004 4.8704e+004 4.8706e+004 4.8707e+0044.8707e+004,4.8803e+004 4.8755e+004 4.8731e+004 4.8719e+004 4.8713e+004 4.8710e+004 4.8709e+0044.8708e+004 4.8708e+004 4.8708e+004,a=7782.5 c=972.5,P.170⼈造卫星的轨道长度计算,数值求积公式的⼀般形式(机械求积公式),Rf 为数值求积公式余项, x0, x1, , xn为求积 结点; A0, A。

3、1, , An为求积系数.,矩形公式: 取A0 =(b a ),特别地, 时分别称为左矩公式,中矩公式,右矩公式。

,梯形公式: 取A0 =A1 =(b a)/2,Simpson 公式 取A0 = A3 =(b a )/6, A1 =2(b a )/3,,插值型求积公式: 在 a,b上取 a x0 x1 x2 xnb 作Lagrange插值,令,插值求积法,插值型求积公式的余项,例2 梯形公式的误差余项,即,例3取 x0 =a, x1 =0.5(a+b), x2 = b ,则 h=0.5(b a ),A0= (b-a)/6 A1=2(b-a)/3 A2= (b-a)/6,著名的 Simpson。

数值分析实验报告

end
%消元过程
fori=k+1:n
m=A(i,k)/A(k,k);
forj=k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*A(k,k);
end
det=det*A(n,n);
%回代过程
ifabs(A(n,n))<1e-10
flag='failure';return;
*x=(x0,x1….,xn),插值节点
*y=(y0,y1,…,yn);被插函数f(x)在插值节点处的函数值
*t求插值函数Pn(x)在t处的函数值
*返回值 插值函数Pn(x)在t处的函数值
*/
procedureNewton
forj=0to n
d1jyj;
endfor
forj=1to n
fori=j to n
[n,m]=size(A);nb=length(b)
%当方程组行与列的维数不相等时,停止计算,并输出出错信息
ifn~=m
error('The row and columns of matrix A must beepual!');
return;
end
%当方程组与右端项的维数不匹配时,停止计算,并输出错误信息
clear
fprintf('gauss-seidel迭代法')
x1_(1)=0;
x2_(1)=0;
x3_(1)=0;
fori=1:9
x1_(i+1)=7.2+0.1*x2_(i)+0.2*x3_(i);

复化求积公式求数值积分

应用软件课程设计——复化求积公式求数值积分数学0801班 ***一、实验目的程序1:利用复化梯形公式以及复化辛普森公式求解定积分的数值解。

程序2:分析剖分区间个数对复化梯形公式精度的影响。

程序3:比较MATLAB 的quad 、quadl 命令与上述两种方法的精度;比较在相同剖分区间下两种求数值积分方法的精度。

分析与探讨两种方法精度不同的原因。

说明:原题目给出的积分精确值I=4.006994稍过粗糙,所以通过计算机求解得到更为精确的解析解。

详见测试结果。

二、算法说明自定义函数有:积分函数〔在此题中为dx e I x ⎰+=201〕:hanshu.m 〔附录1〕复化梯形公式求定积分数值解tixing.m 〔附录2〕 复化辛普森公式求定积分数值解xps.m 〔附录3〕 积分原函数解析解jxj.m 〔附录4〕程序1:p1.m 〔附录5〕1、n=2000;%确定积分区间分割份数2、tx=tixing(0,2,n);%用复化梯形公式求解3、xps=xps(0,2,n);%用复化辛普森公式求解4、显示结果disp(['积分区间分割分数为:',num2str(n)]) disp('复化梯形公式的求解结果:'),disp(tx) disp('复化辛普森公式的求解结果:'),disp(xps)程序2-1:p21.m 〔附录6〕1、jxj=jxj(2)-jxj(0);%求出解析解。

2、tx=zeros(5,1);%给数值解向量赋值。

d=zeros(5,1);%给误差向量赋值。

3、i=1,2,3,4,54、n=10^i;%定义剖分份数。

5、tx(i)=tixing(0,2,n);%将剖分份数n 代入,求出该n 下的数值解。

d(i)=tx(i)-jxj;%求出误差。

6、结束循环 7、输出结果程序2-2:p22.m 〔附录7〕1、jxj=jxj(2)-jxj(0);%求出解析解。

复化梯形公式和复化辛普森公式的精度比较(共7页)

- 让每一个人同等地提高(tí gāo)自我实验四、复化梯形(tīxíng)公式和复化Simpson 公式的精度(jīnɡ dù)比较(2 学时(xuéshí))一、实验目的(mùdì)与要求1、熟习复化 Simpson 公式和复化梯形公式的结构原理;2、熟习并掌握两者的余项表达式;3、分别求出正确值,复化梯形的近似值,复化Simpson 的近似值,并比较后两者的精度;4、从余项表达式,即偏差曲线,来察看两者的精度,看哪个更靠近于正确值。

二、实验内容:关于函数 f (x) sin x,试利用下表计算积分 I 1sin xdx 。

x x表格以下:x 0 1/8 1/4 3/8 1/2 5/8 3/4 7/8 1 f ( x)1注:分别利用复化梯形公式和复化Simpson 公式计算,比较哪个精度更好。

此中:积分的正确值I0.9460831。

三、实验步骤1、熟习理论知识,并编写相应的程序;2、上机操作,从偏差图形上察看偏差,并与正确值对比较,看哪个精度更好;3、得出结论,并整理实验报告。

四、实验注意事项11- 让每一个人同等地提高(tí gāo)自我1、复化梯形公式,程序主体(zhǔtǐ)部分:for n=2:10T(n)=*T(n-1)for i=1:2^(n-2);endend2、复化 Simpson 公式(gōngshì),程序主体部分: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五.实验(shíyàn)内容复化梯形(tīxíng)公式和复化辛普森公式的引入22- 让每一个(yī ɡè)人同等地提高自我复化梯形(tīxíng)公式:T n n 1 h [ f (x k f ( x k 1 )] ;k 0 2复化辛普森公式:S n n 1 h4 f ( x 1 ) f (x k 1 )] ;[ f (x kk 0 6k2依据题意(tí yì)和复化梯形公式、复化辛普森公式的原理编写程序求解代码以下:Matlab 代码(dài mǎ)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+*(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;33- 让每一个人同等地提高(tí gāo)自我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部分(bù fen)程序结果输出:s=s1 =s2 =结果剖析1 sin( x);依据结果输出可知:积分 I dx 的正确值为: I=x44- 让每一个人同等(tóngděng)地提高自我经过复化梯形公式(gōngshì)和复化辛普森公式获得的积分值为:s1 =:s2 =;相对偏差为:S 1 I 100 4.15 10 4 ; 1I 100S 2 I 100 1.62 10 8 ; 2 I 100明显,从相对偏差可知经过辛普森公式获得(huòdé)的结果偏差小精度高。

复化梯形法 复化矩形法 变步长梯形 变步长辛普森

陕西科技大学机械教改班用C++的积分其实积分的思想就是,微分—>求和—>取极限,如果是用纯手工法那就是先对一个函数微分,再求出它的面积,在取极限,因为我们的计算速度和计算量有限,现在有了计算机这个速度很快的机器,我们可以把微分后的每个小的面积加起来,为了满足精度,我们可以加大分区,即使实现不了微分出无限小的极限情况,我们也至少可以用有限次去接近他,下面我分析了四种不同的积分方法,和一个综合通用程序。

一.积分的基本思想1、思路:微分—>求和—>取极限。

2、Newton —Leibniz 公式 ⎰-=ba a Fb F dx x f )()()( 其中,)(x F 被积函数)(x f的原函数。

3、用计算机积分的思路在积分区间内“微分—>求和—>控制精度”。

因为计算机求和不可以取极限,也就是不可以无限次的加下去,所以要控制精度。

二.现有的理论1、一阶求积公式---梯形公式⎰=+-=b a T b f a f a b dx x f )]()([2)( 他只能精确计算被积函数为0、1次多项式时的积分。

2、二阶求积分公式——牛顿、科特斯公式 ⎰=+++-=ba Sb f a b f a f a b dx x f )]()2(4)([6)(他只能精确计算被积函数为0、1、2、3次多项式时的积分。

三.四种实现方法1.复化矩形法将积分区间[a,b]等分成n 个子区间:],[],[],[],[],[112322110n n n n x x x x x x x x x x ---、、、 则h=(b-a)/n,区间端点值k x =a+kh)hf(x ))f(x x (x I 11121=-=)()()x (22232x hf x f x I =-=............................)()()(111n ---=-=n n n n x hf x f x x I∑==ni i x hf T 1n )(源程序:#include <iostream.h>#include<math.h>double f(double x) //计算被积函数{double y;y=log(1+x)/(1+x*x); //被积函数return y;}double Tn(double a,double b,int n) //求Tn{double t=0.0;double xk; //区间端点值double t1,t2; //用来判断精度do{double h=(b-a)/n;for(int k=1;k<=n-1;k++) //每一小段的矩形叠加 {t1=t;xk=a+k*h;t+=h*f(xk);t2=t;}n++; //如果精度不够就对区间再次细分,直到达到精度要求 }while(fabs(t1-t2)<=1e-7); //判断计算精度return t;}void main(){double a=0.0; //积分下线double b=2.0; //积分上限int n=1024; //把区间分为1024段cout<<Tn(a,b,n)<<endl; //输出积分结果}执行结果:2.复化梯形法方法和复化矩形法类似,只是把原来的矩形小面积变成了梯形小面积,但是精确度明显提高了,也就是说达到同样的精度需要的时间少了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分别用复化梯形公式、复化Simpson公式计算定积分dxex201,取n=2,4,8,16分
别验证结果(精确值I=)。

复化梯形公式求定积分:
function I=tquad(x,y)
%复化梯形求积公式,其中,
%x为向量,被积函数自变量的等距结点;
%y为向量,被积函数在结点处的函数值;
n=length(x);
m=length(y);
%积分自变量的结点数应与它的函数值的个数相同
h=(x(n)-x(1))/(n-1);
a=[1 2*ones(1,n-2) 1];
I=h/2*sum(a.*y);

复化Simpson公式求定积分:
function I=squad(x,y)
%复化Simpson求积公式,其中,
%x为向量,被积函数自变量的等距结点;
%y为向量,被积函数在结点处的函数值;
n=length(x);
m=length(y);
%积分自变量的结点数应与它的函数值的个数相同
if rem(n-1,2)~=0
I=tquad(x,y);
return;
end
N=(n-1)/2;
h=(x(n)-x(1))/N;
a=zeros(1,n);
for k=1:N
a(2*k-1)=a(2*k-1)+1;
a(2*k)=a(2*k)+4;
a(2*k+1)=a(2*k+1)+1;
end
I=h/6*sum(a.*y);

相关文档
最新文档