复化梯形公式和复化Simpson公式word.doc

合集下载

(完整版)复合梯形公式与复合辛普森公式对比

(完整版)复合梯形公式与复合辛普森公式对比

SHANGHAI JIAO TONG UNIVERSITY题目名称:复合梯形公式与复合辛普森公式对比学生姓名:学生学号:班级:学院(系):目录1.概述 (3)2.问题提出 (4)3.算法推导 (5)4.算法框图 (6)4.1复合梯形公式算法流程图 (6)4.2 复合辛普森公式算法流程图 (7)5.MATLAB源程序 (8)6.结论与展望 (9)图表目录图4-1 复合梯形公式算法流程图 (6)图4-2 复合辛普森公式算法流程图 (7)图6-1 MATLAB计算结果 (9)表2-1函数计算结果表 (4)1.概述梯形求积公式和辛普森求积公式分别是牛顿-科斯特公式中n=1和n=2时的情形。

其中梯形求积公式可表示为由于牛顿-科斯特公式在n≥8时不具有稳定性,故不可能通过提高阶的方法来提高求积精度。

为了提高精度通常可把积分区间分成若干子区间(通常是等分),再在每个子区间上用低阶求积公式。

这种方法称为复合求积法。

本文主要讨论复合梯形公式和复合辛普森公式在同一数学问题中的应用。

首先给出了复合梯形公式和复合辛普森公式的推导过程以及其余项的表达形式,然后用流程图的形式介绍算法思路,再运用MATLAB编写代码计算结果,最后对结果进行对比讨论。

希望通过两个算法在同一个算例中的应用对比,更好的理解和掌握复合梯形公式和复合辛普森公式的适用范围和适用条件。

并且能够熟悉MATLAB编程求解问题的流程,掌握编程化的思想方法。

同时对两种方法的计算结果对比分析,讨论两种求积方法的计算精度。

2.问题提出对于函数f(x)=sinxx给出的函数表如下,试用复合梯形公式和复合辛普森公式计算积分I=∫sinxx dx1。

表 2-1函数计算结果表3. 算法推导3.1复合梯形公式根据梯形公式,将区间[a,b]划分为n 等份,分点x k =a +kℎ,h =b−a n,k =0,1,…,n ,在每个子区间[x k ,x k+1](k =0,1,…,n −1)上采用梯形公式,则得:记则T n 为复合梯形公式。

复化梯形公式和复化辛普生公式

复化梯形公式和复化辛普生公式
return result;
}
void simpson::integration()//实现积分
{
cout<<"输入上限和下限";
cin>>b>>a;
cout<<"输入你要使用simposn法则的数目(即等分数)";
cin>>n;
h=(b-a)/n;
sum_even_terms=0.0;
sum_odd_terms=0.0;
for(k=1;k<n;k++)
{
sum_even_terms+=sine(k*h);
}
for(k=0;k<n;k++)
{
sum_odd_terms+=sine((2*k+1)*h/2);
}
integral=(2.0*sum_even_terms+4.0*sum_odd_terms+sine(b)+1)*h/6.0;
《数值分析》实验报告
姓名
学号
日期
2012.11.20
实验室
设备编号
实验题目
用复化梯形公式和复化辛普生公式求I=∫01sinx/xdx
一实验目的
1.了解复化梯形公式和复化辛普生公式。
2.用复化梯形公式和复化辛普生公式求I=∫01sinx/xdx。
二实验内容
算法:复化梯形公式是Tn=∑h/2[f(xi)+ f(xi+1)]=(b-a)/2n[f(a)+2∑f(xi)+f(b)]记子段[xi,xi+1]的中点为xi+1/2,则复化Simpson公式为Sn=∑h/6[f(xi)+4f(xi+1/2)+ f(xi+1)]=b-a/6n[f(a)+4∑f(xi+1/2)+2f(xi)+f(b)]

复化梯形公式和复化Simpson公式

复化梯形公式和复化Simpson公式

一、计算定积分的近似值: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=等分数 n=7019已知值与计算值的误差 R=2. 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=等分数 n=24已知值与计算值的误差 R=用复化梯形公式计算的结果为:,与精确解的误差为:。

(完整版)复化积分法(复化梯形求积,复化Simpson公式,变步长求积法)MATLAB编程实验报告

(完整版)复化积分法(复化梯形求积,复化Simpson公式,变步长求积法)MATLAB编程实验报告
format loБайду номын сангаасg;
syms t;
y=sin(t)/t;
a=0;b=1;
R0=0.5*10^(-3);
TN(a,b,y,R0);
结论如下:
三、结论:
复化梯形求积:
复化Simpson公式
变步长求积法
h=(b-a)/n;
f=0;
for k=1:n
x(k)=a+h*(k-1);
w(k)=x(k)+h/2;
z(k)=subs(y,t,w(k));
f=f+z(k);
end
T(i)=T(i-1)/2+h/2*f
if ((T(i)-T(i-1))/3)<=R0
break;
end
end
tl=T(i)
clc,clear;
q=1;
end
p=subs(y,t,b);
T(1)=(b-a)/2*(q+p);
i=2;
n=i-1;
h=(b-a)/n;
z1=a+h/2;
z2=subs(y,t,z1);
T(2)=T(1)/2+h/2*z2;
while ((T(i)-T(i-1))/3)>R0
i=i+1
n=i-1;
n=2^(n-1)
x(k)=a+(k-1)*h
z(k)=subs(y,t,x(k));
end
for i=2:n
f=f+z(i);
end
q=subs(y,t,a);
if y=='sin(t)/t'&&a==0
q=1;
end

复化梯形和复化simposon求积分

复化梯形和复化simposon求积分

课程设计报告课程名称数值逼近专业信息与计算科学班级姓名学号指导教师日期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积分比梯形积分和抛物线积分具有更好的精度。

matlab实现复化梯形公式,复化simpson公式以及romberg积分

matlab实现复化梯形公式,复化simpson公式以及romberg积分

(一) 实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化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积分,建立文件。

复合梯形公式和复合Simpson公式用法的比较

复合梯形公式和复合Simpson公式用法的比较

复合梯形公式和复合Simpson 公式用法的比较一、问题叙述由曲线y ()f x = ,a x b ≤≤绕x 轴旋转得到立体,其表面积计算公式为2(baS f x π=⎰分别用N=10的复合梯形公式和N=5的复合Simpson 公式求解下列每个的曲线绕x 轴旋转得到立方体的表面积。

(1)3(),01f x x x =≤≤ (2)()sin ,0/4f x x x π=≤≤ ; (3)()e ,01x f x x -=≤≤。

二、问题分析由叙述可知,三个函数在各自的定义域上函数值都大于0,且函数在各自的定义域上都是单调的。

(1)复合梯形公式取正整数n,令(b a)/n h =-,则点(k 0,1,,n)k x a kh =+=将[a,b]分为n 个小区间,利用定积分的性质可得11110011(x)(x)(x )f(x )2 =(a)f(b)2(x )2j jn n bx j j ax j j n j j h f dx f dx f h f f +--+==-=⎡⎤=≈+⎣⎦⎡⎤++⎢⎥⎣⎦∑∑⎰⎰∑所以,复合梯形公式的近似面积为:11(a)f(b)2(x )2n j j h S f f -=⎡⎤=++⎢⎥⎣⎦∑(2)复合Simpson 公式取正整数n,令h=(b-a)/2n,(j 0,1,,2n)j x a jh =+=.利用定积分的性质,以及Simpson 公式[]012(x)(x )4f(x )f(x )(f)3bahf dx f R =+++⎰在小区间222,j j x x -⎡⎤⎣⎦上的应用,有 2222221211(x)(x)(x )4f(x )f(x )3j nnbj j j j ax j j hf dx f dx f ---==⎡⎤=≈++⎣⎦∑∑⎰⎰整理可得,复合Simpson 公式的近似面积为:121211[f(a)f(b)4(x )2(x )]3n n j j j j hS f f --===+++∑∑。

复化梯形公式和复化抛物线公式 -回复

复化梯形公式和复化抛物线公式 -回复

复化梯形公式和复化抛物线公式是数值积分中常用的近似计算方法,用于估计函数在给定区间上的定积分值。

1. 复化梯形公式(Composite Trapezoidal Rule):复化梯形公式通过将积分区间划分为多个小区间,然后在每个小区间上应用梯形公式进行计算。

具体步骤如下:- 将积分区间[a, b]均匀地分成n个小区间,每个小区间的宽度为h = (b - a) / n。

- 对于每个小区间,计算函数在两个端点的值,然后将这两个值与小区间宽度相乘并除以2,得到该小区间的梯形面积。

- 将所有小区间的梯形面积相加,即可得到近似的定积分值。

复化梯形公式的公式表示为:∫[a, b] f(x) dx ≈ h/2 * [f(a) + 2f(a+h) + 2f(a+2h) + ... + 2f(a+(n-1)h) + f(b)]2. 复化抛物线公式(Composite Simpson's Rule):复化抛物线公式通过将积分区间划分为多个小区间,然后在每个小区间上应用抛物线公式进行计算。

具体步骤如下:- 将积分区间[a, b]均匀地分成n个小区间,每个小区间的宽度为h = (b - a) / n。

- 对于每个小区间,计算函数在三个节点(起点、终点和中点)处的值,然后将这三个值与小区间宽度相乘并按照一定的权重进行组合,得到该小区间的抛物线面积。

- 将所有小区间的抛物线面积相加,即可得到近似的定积分值。

复化抛物线公式的公式表示为:∫[a, b] f(x) dx ≈ h/3 * [f(a) + 4f(a+h) + 2f(a+2h) + 4f(a+3h) + ... + 2f(a+(n-2)h) + 4f(a+(n-1)h) + f(b)]需要注意的是,选择合适的n值对于准确估计积分值非常重要。

一般情况下,增加n的值可以提高计算精度,但也会增加计算的复杂性和时间成本。

因此,在实际应用中需要根据需求进行权衡和选择合适的n值。

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

数值计算方法上机题目3
一、计算定积分的近似值:
2
21x e xe dx =⎰ 要求:
(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限7102
1
-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;
(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;
(3)将计算结果与精确解比较,并比较两种算法的计算量。

1.复化梯形公式
程序:
程序1(求f (x )的n 阶导数:
syms x
f=x*exp(x) %定义函数f (x )
n=input('输入所求导数阶数:')
f2=diff(f,x,n) %求f(x)的n 阶导数
结果1
输入n=2
f2 =
2*exp(x) + x*exp(x)
程序2:
clc
clear
syms x%定义自变量x
f=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 %求等分数n
Rn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项
if abs(Rn)<e %用余项进行判断
break% 符合要求时结束
end
end
h=(b-a)/n %求h
Tn1=0
for k=1:n-1 %求连加和
xk=a+k*h
Tn1=Tn1+f(xk)
end
Tn=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-008
2. Simpson公式
程序:
程序1:(求f(x)的n阶导数):
syms x
f=x*exp(x) %定义函数f(x)
n=input('输入所求导数阶数:')
f2=diff(f,x,n) %求f(x)的n阶导数
结果1
输入n=4
f2 =
4*exp(x) + x*exp(x)
程序2:
clc
clear
syms x%定义自变量x
f=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 %求等分数n
Rn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项
if abs(Rn)<e %用余项进行判断
break% 符合要求时结束
end
end
h=(b-a)/n %求h
Sn1=0
Sn2=0
for k=0:n-1 %求两组连加和
xk=a+k*h
xk1=xk+h/2
Sn1=Sn1+f(xk1)
Sn2=Sn2+f(xk)
end
Sn=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。

等分数n=7019
用复化Simpson公式计算的结果为:7.3891,与精确解的误差为:2.7284e-008。

等分数n=24
3、柯斯特公式求积分:
程序代码:
(1)function [y,Ck,Ak]=NewtonCotes(fun,a,b,n)
if nargin==1
[mm,nn]=size(fun);
if mm>=8
error('为了保证NewtonCotes积分的稳定性,最多只能有9个等距节点!')
elseif nn~=2
error('fun构成应为:第一列为x,第二列为y,并且个数为小于10的等距节点!')
end
xk=fun(1,:);
fk=fun(2,:);
a=min(xk);
b=max(xk);
n=mm-1;
elseif nargin==4
xk=linspace(a,b,n+1);
if isa(fun,'function_handle')
fx=fun(xk);
else
error('fun积分函数的句柄,且必须能够接受矢量输入!') end
else。

相关文档
最新文档