复化积分法(复化梯形求积-复化Simpson公式-变步长求积法)MATLAB编程实验报告 (1)
复化梯形公式,复化辛普森公式,复化柯特斯公式

复化梯形公式,复化辛普森公式,复化柯特斯公式
复化梯形公式、复化辛普森公式和复化柯特斯公式都是用来计算定积分的近似值的方法。
1. 复化梯形公式:将积分区间分成若干个小区间,在每个小区间上用梯形面积近似代替该小区间的曲边梯形面积,然后将这些梯形面积相加,得到积分的近似值。
2. 复化辛普森公式:将积分区间分成若干个等分小区间,在每个小区间上用矩形面积近似代替该小区间的曲边梯形面积,然后将这些矩形面积相加,得到积分的近似值。
3. 复化柯特斯公式:将积分区间分成若干个等分小区间,在每个小区间上用切线段长度近似代替该小区间的曲边梯形面积,然后将这些切线段长度相加,得到积分的近似值。
这三种方法都是通过将积分区间分成若干个小区间,然后在每个小区间上用近似方法计算该小区间的曲边梯形面积,最后将这些近似值相加得到积分的近似值。
它们的精度和误差都与分区间的大小有关。
复化梯形公式和复化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=用复化梯形公式计算的结果为:,与精确解的误差为:。
复合梯形公式、复合辛普森公式matlab

复合梯形公式、复合⾟普森公式matlab 1. ⽤1阶⾄4阶Newton-Cotes公式计算积分程序:function I = NewtonCotes(f,a,b,type)%syms t;t=findsym(sym(f));I=0;switch typecase 1,I=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));case 2,I=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(a+b)/2)+...subs(sym(f),t,b));case 3,I=((b-a)/8)*(subs(sym(f),t,a)+3*subs(sym(f),t,(2*a+b)/3)+...3*subs(sym(f),t,(a+2*b)/3)+subs(sym(f),t,b));case 4,I=((b-a)/90)*(7*subs(sym(f),t,a)+...32*subs(sym(f),t,(3*a+b)/4)+...12*subs(sym(f),t,(a+b)/2)+...32*subs(sym(f),t,(a+3*b)/4)+7*subs(sym(f),t,b));case 5,I=((b-a)/288)*(19*subs(sym(f),t,a)+...75*subs(sym(f),t,(4*a+b)/5)+...50*subs(sym(f),t,(3*a+2*b)/5)+...50*subs(sym(f),t,(2*a+3*b)/5)+...75*subs(sym(f),t,(a+4*b)/5)+19*subs(sym(f),t,b));case 6,I=((b-a)/840)*(41*subs(sym(f),t,a)+...216*subs(sym(f),t,(5*a+b)/6)+...27*subs(sym(f),t,(2*a+b)/3)+...272*subs(sym(f),t,(a+b)/2)+...27*subs(sym(f),t,(a+2*b)/3)+...216*subs(sym(f),t,(a+5*b)/6)+...41*subs(sym(f),t,b));case 7,I=((b-a)/17280)*(751*subs(sym(f),t,a)+...3577*subs(sym(f),t,(6*a+b)/7)+...1323*subs(sym(f),t,(5*a+2*b)/7)+...2989*subs(sym(f),t,(3*a+4*b)/7)+...1323*subs(sym(f),t,(2*a+5*b)/7)+...3577*subs(sym(f),t,(a+6*b)/7)+751*subs(sym(f),t,b));endsyms xf=exp(-x).*sin(x);a=0;b=2*pi;I = NewtonCotes(f,a,b,1)N=1:I =N=2:I =N=3:I =(pi*((3*3^(1/2)*exp(-(2*pi)/3))/2 - (3*3^(1/2)*exp(-(4*pi)/3))/2))/4N=4:I =(pi*(32*exp(-pi/2) - 32*exp(-(3*pi)/2)))/452. 已知,因此可以通过数值积分计算的近似值。
复化求积公式的算法及其应用

复化求积公式的算法及其应用复化求积公式是数值计算方法中重要的一种技术,用于近似计算函数的积分值。
该方法通过将积分区间等分为多个小区间,并在每个小区间上使用求积公式来估计函数在该区间上的积分值。
本文将介绍复化求积公式的算法及其应用。
一、复化求积公式算法1.复化梯形求积公式复化梯形求积公式是复化求积公式中最简单的一种,其基本思想是将积分区间等分为若干个小区间,然后在每个小区间上使用梯形求积公式计算积分值,最后将所有小区间的积分值相加得到最终的积分值。
算法步骤:1)将积分区间[a,b]等分为n个小区间,每个小区间的长度为h=(b-a)/n。
2) 在每个小区间上使用梯形求积公式计算积分值,即Ii=h/2*(f(xi)+f(xi+1)),其中xi=a+i*h,i=0,1,2,...,n-13)将所有小区间的积分值相加得到最终的积分值,即I≈I0+I1+I2+...+In-12. 复化Simpson求积公式复化Simpson求积公式是一种更为精确的复化求积公式,它通过在每个小区间上使用Simpson求积公式来计算积分值,从而提高了计算精度。
算法步骤:1)将积分区间[a,b]等分为n个小区间,每个小区间的长度为h=(b-a)/n。
2) 在每个小区间上使用Simpson求积公式计算积分值,即Ii=h/6*(f(xi)+4f(xi+h/2)+f(xi+h)),其中xi=a+i*h,i=0,1,2,...,n-13)将所有小区间的积分值相加得到最终的积分值,即I≈I0+I1+I2+...+In-1二、复化求积公式应用1.数学分析中的数值积分计算,用于计算函数的定积分值。
2.物理学中的积分计算,用于计算物理量的平均值或总量。
3.统计学中的积分计算,用于计算概率密度函数的面积值。
4.工程学中的积分计算,用于计算工程问题中的各种积分量。
5.金融学中的积分计算,用于计算金融衍生品的价格或价值。
总结:复化求积公式是一种重要的数值计算方法,在数学、物理、统计、工程、金融等领域中有广泛的应用。
复化梯形法 复化矩形法 变步长梯形 变步长辛普森

陕西科技大学机械教改班用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.复化梯形法方法和复化矩形法类似,只是把原来的矩形小面积变成了梯形小面积,但是精确度明显提高了,也就是说达到同样的精度需要的时间少了。
变步长梯形求积matlab

变步长梯形求积matlab
变步长梯形求积法是一种数值积分的方法,用于计算一个函数在给定区间上的定积分。
在MATLAB中,可以使用以下代码来实现变步长梯形求积法:
```matlab
function integral = trapezoidal_rule(a, b, n, f)
h = (b - a) / n;
x = a:h:b;
y = f(x);
integral = (h/2) * (y(1) + 2*sum(y(2:end-1)) + y(end)); end
```
其中,`a`和`b`是积分区间的上下限,`n`是划分的梯形数目,`f`是要求积的函数。
函数内部的变量`h`计算出每个梯形的宽度,`x`生成了在区间上等间隔的节点,`y`根据`f`函数计算了这些节点上的函数值。
最后,利用梯形公式,将每个梯形面积加总并乘以梯形宽度的一半,得到了定积分的近似值。
使用时,可以将要求积的函数定义为一个匿名函数,并将其作为参数传递给`trapezoidal_rule`函数。
例如,计算函数`f(x) = x^2`在区间`[0, 1]`上的定积分,可以执行以下代码:
```matlab
f = @(x) x.^2;
a = 0;
b = 1;
n = 100;
integral = trapezoidal_rule(a, b, n, f);
disp(integral);
```
上述代码将会输出`0.3333`,这是函数`f(x) = x^2`在区间`[0, 1]`上的定积分的近似值。
复化梯形公式和复化辛普森公式

复化梯形公式和复化辛普森公式1. 引言嘿,大家好!今天我们来聊聊数学里那些看似高深莫测的公式,尤其是复化梯形公式和复化辛普森公式。
这些名字听起来就像是从某部科幻片里蹦出来的角色,但其实它们是我们在数值积分中不可或缺的好帮手。
你知道吗?它们就像是数学世界里的“超能英雄”,让我们轻松搞定积分,简直是妙不可言。
2. 复化梯形公式2.1 你知道什么是梯形吗?首先,咱们得聊聊复化梯形公式。
说白了,就是把一个复杂的积分任务,分解成几个小的梯形来求解。
想象一下,你在河边钓鱼,河水流得可欢了。
为了找一个合适的钓鱼点,你可能得把河分成几段,然后每一段的宽度就是你的小梯形。
你看,这就是复化梯形的魅力所在!2.2 如何运用复化梯形公式?用这个公式的时候,你只需把整个区间分成N个小区间,每个区间的宽度都是一样的。
然后,把每个小区间的函数值拿来加一加,再乘上宽度的一半,最后再把头尾的函数值加上。
这听起来是不是很简单?比如,你想算从0到1的某个函数的积分,只要把这个区间分成若干段,像切蛋糕一样,每一片都求个函数值,然后把结果合起来就行了。
简单得就像吃个冰淇淋,大家都喜欢。
3. 复化辛普森公式3.1 辛普森是谁?接下来,让我们来看看复化辛普森公式。
辛普森这个名字,大家可能都听过,或者说过“这是辛普森家的事儿”。
其实,他是一位牛逼的数学家,专门研究如何让积分变得更加简单。
辛普森公式就像是对梯形公式的一次升级,像换了个新款手机,功能更强大,效果更好。
3.2 如何运用复化辛普森公式?用复化辛普森公式的时候,我们也是把整个区间分成N个小区间,不过这里的N必须是偶数哦!每个小区间的宽度仍然是一样的。
然后,用函数值的加权平均法来计算。
换句话说,你把每个小区间的头尾和中间的函数值都考虑进来,像是为你的冰淇淋加上各种口味的配料。
最后,你的结果就会比单纯用梯形公式得来的要精准多了,仿佛一口下去,味蕾都在舞蹈。
4. 比较与应用4.1 谁更强?说到这儿,很多人就会问,复化梯形公式和复化辛普森公式,谁更厉害呢?其实,这就像问“苹果和橘子,哪个更好吃”。
复化梯形求积公式

复化梯形求积公式复化梯形求积法是一种用于数值积分的常见方法,它可以帮助我们求解一元定积分(即 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 为积分区间上的中点。
应用高斯公式,可以将积分计算量减小一半以上,同时也大大减少计算精度上的误差。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复化积分法(复化梯形求积,复化Simpson 公式,变步长求积法)
MATLAB 编程实验报告 一、 问题描述:
编写函数实现复化积分法。
二、 实验步骤(过程):
(一)复化求积法 (1)复化梯形求积:用复化梯形求积公式求解
dx x x ⎰10sin function [f]=Tn(a,b,n,y)
syms t;
h=(b-a)/n;
f=0;
for k=1: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
p=subs(y,t,b);
T=h/2*(q+p+2*f);
T=vpa(T,7)
clc,clear;
syms t;
a=0;b=1;
y=sin(t)/t;
n=8;
Tn(a,b,n,y);
(2)复化Simpson 公式:用复化Simpson 公式求解⎰211dx e x
function [f]=simpson(a,b,n,y)
syms t;
h=(b-a)/n;
f=0;l=0;
for k=1:n+1
x(k)=a+(k-1)*h
w(k)=0.5*h+x(k)
z(k)=subs(y,t,x(k));
end
for i=2:n
f=f+z(i);
end
for i=1:n
l=l+w(i);
end
q=subs(y,t,a);
if y=='sin(t)/t'&&a==0
q=1;
end
p=subs(y,t,b);
T=h/2*(q+p+2*f);
T=vpa(T,7)
clc,clear;
syms t;
a=1;b=2;
y=exp(1/t);
n=5;
simpson(a,b,n,y);
(3)变步长求积法:以书本例4.5为例function [f]=TN(a,b,y,R0)
syms t;
T=[];
f=0;
q=subs(y,t,a);
if y=='sin(t)/t'&&a==0
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)
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;
format long;
syms t;
y=sin(t)/t;
a=0;b=1;
R0=0.5*10^(-3);
TN(a,b,y,R0);
结论如下:
三、结论:
复化梯形求积:复化Simpson公式变步长求积法。