复化梯形法 复化矩形法 变步长梯形 变步长辛普森
复化梯形公式,复化辛普森公式,复化柯特斯公式

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

}
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)]
复化梯形公式、复化辛卜生公式

复化梯形公式、复化辛卜生公式
一、复化梯形公式及其余项
在区间不大时,用梯形公式、辛卜生公式计算定积分是简单实用的,但当区间较大时, 用梯形公式、辛卜生公式计算定积分达不到精确度要求. 为了提高计算的精确度,我们将 [a,b] 区间n等分,在每个小区间上应用梯形公式、辛卜生公式计算定积分, 然后将其结果相加,这样就得到了复化梯形公式和复化辛卜生公式。
1. 复化梯形公式
将积分区间等分,设, 则节点为
对每个小区间上应用梯形公式, 然后将其结果相加,则得
(3.14)
称(3.14)式为复化梯形公式.
当在[a,b]上有连续的二阶导数时,则复化梯形公式(3.14)的余项推导如下:
因为
所以在区间[a,b]上公式(3.14)的误差为
又因为在区间[a,b]上连续,由连续函数的性质知,在区间[a,b]上存在一点,
于是
(3.15)
称(3.15)式为复化梯形公式的余项。
例1用复化梯形公式计算得
使误差小于
解和公式(3.15), 解不等式
得
即时,用复化梯形公式计算可达到精度要求,则取,用公式(3.14)计算得
而积分的准确值。
复化梯形公式,辛普森公式的matlab程序

复化梯形公式与辛普森公式的matlab程序【程序代码】cclc;disp('1.复化梯形公式求解');disp('2.simpson公式求解');disp('请进行选择:');c=input(' ');if c==1clc;disp('复化梯形公式');disp('请输入积分下限 ');a=input('a=');disp('请输入积分上限 ');b=input('b=');disp('请输入等分的数目 ');n=input('n=');h=(b-a)/n;s1=0;for i=1:n-1s1=s1+fun1(i*h);enddisp('复化梯形公式的结果:');T=h/2*(fun1(a)+2*s1+fun1(b))else if c==2clc;disp('simpson公式');disp('请输入积分下限 ');a=input('a=');disp('请输入积分上限 ');b=input('b=');disp('请输入等分的数目 ');n=input('n=');h=(b-a)/n;s2=0;for i=0:n-1s2=s2+fun1((i+0.5)*h);enddisp('辛普森公式的结果: ');S=h/6*(fun1(a)+4*s2+2*s1+fun1(b))endenddisp('菜单选项');disp('1.继续运算');disp('2.退出程序!');p=input(' ');if p==1(fuhua);else if p==2disp('正在退出,请稍候。
梯形法则和辛普森法则

梯形法则与辛普森法则1. 概述梯形法则和辛普森法则是数值积分中常用的近似方法。
它们通过将曲线或曲面分割成若干个由直线或弧线组成的小区间,并在每个小区间内估计函数值来求解定积分。
这两种方法具有较高的精度和广泛的应用领域,本文将详细介绍这两种方法的原理、应用和优缺点。
2. 梯形法则梯形法则是一种利用梯形来近似曲线下面积的方法。
假设我们要计算函数f(x)在区间[a, b]上的定积分,梯形法则将该区间分成n个小区间,每个小区间的宽度为Δx=(b-a)/n。
然后,我们可以将每个小区间内的函数值连接起来,形成若干个梯形,计算每个梯形的面积,并将它们相加,即可得到函数在整个区间上的近似积分值。
梯形法则的近似积分公式如下:∫[a, b] f(x) dx ≈ Δx/2 * [f(a) + 2f(x1) + 2f(x2) + ... + f(b)]其中,x1, x2, …, xn-1 是分割点。
梯形法则的优点是简单易懂,容易推广到多维积分,适用于一般的函数。
然而,它的缺点是存在一定的误差,特别是在曲线弯曲的区域,误差较大。
3. 辛普森法则辛普森法则是一种利用拟合曲线来近似曲线下面积的方法。
与梯形法则类似,辛普森法则也将函数f(x)在区间[a, b]上分成若干个小区间,每个小区间的宽度为Δx=(b-a)/n,但不同的是,辛普森法则采用二次多项式来拟合每个小区间内的曲线。
辛普森法则的近似积分公式如下:∫[a, b] f(x) dx ≈ Δx/3 * [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + ... + f(xn)]其中,x0, x1, x2, …, xn 是分割点,且n为偶数。
辛普森法则的优点是相比于梯形法则,它的精度更高,尤其适用于曲线较为平滑的情况。
然而,辛普森法则的缺点是计算量较大,对于需要较高精度的计算而言,分割的区间数需要相对较多。
4. 应用场景梯形法则和辛普森法则在数值计算中有广泛的应用,特别是在求解无法用解析方法求得精确解的积分问题时,这两种方法成为重要的工具。
数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序

数值分析第五次程序作业PB09001057 孙琪【问题】分别编写用复化Simpson 积分公式和复化梯形积分公式计算积分的通用程序;用如上程序计算积分: I (f )=∫sin (x )dx 40取节点x i , i =0,…,N,N 为2k ,k =0,1,…,12,并分析误差;简单分析你得到的数据。
【复化Simpson 积分公式】Simpson 法则:∫f (x )dx ≈b −a 6[f (a )+4f (a +b 2)+f (b )]b a 使用偶数个子区间上的复合Simpson 法则:设n 是偶数,x i =a +ih , h =b−a n ,(0≤i ≤n) 则有∫f (x )dx =∫f (x )dx +∫f (x )dx +⋯+∫f (x )dx =∑∫f (x )dx x 2i x 2i−2n 2i=1x n x n−2x 4x 2x 2x 0b a 将Simpson 法则应用于每一个区间,得到复合Simpson 法则:∫f (x )dx ≈h 3b a [f (x 0)+2∑f (x 2i−2)n 2i=2+4∑f (x 2i−1)n 2i=1+f (x n )] 公式的误差项为:−1180(b −a )h 4f (4)(δ) 其中δ∈(a,b)【复化梯形积分公式】梯形法则:对两个节点相应的积分法则称为梯形法则:∫f (x )dx ≈b −a 2b a [f (a )+f (b )] 如果划分区间[a,b]为:a =x 0<x 1<⋯<x n =b那么在每个区间上可应用梯形法则,此时节点未必是等距的,由此得到复合梯形法则:∫f (x )dx =∑∫f (x )dx x i x i−1n i=1b a ≈12∑(x i −x i−1)[f (x i−1)+f (x i )]ni=1 对等间距h=(b-a)/n 及节点x i =a +ih ,复合梯形法则具有形式:∫f (x )dx ≈h 2[f (a )+2∑f (a +ih )n−1i=1+f (b )]b a 误差项为:−112(b −a )h 2f ′′(δ)【算法分析】复合Simpson 法则和复合梯形法则的算法上述描述中都已介绍了,在此不多做叙述。
复化梯形法 复化矩形法 变步长梯形 变步长辛普森

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

n
f ( n 1) ( ) 余项 Rn ( x) n 1 ( x) (n 1)!
其中
lk ( x )
0 j n jk
x xj xk x j
[ a , b]
n 1 ( x) ( x xi )
i 0
n
而
f ( x) Ln ( x) Rn ( x)
假设计算 f ( xk )时有误差 k , 即
n
k f ( xk ) f ( xk )
(n) ( b a ) C 则在实际中用 k f ( xk ) 代替 (b a) k 0
n
C
表 5.1 科特斯系数
n 1 2 3 4 5
Ck( n)
1 1 , 2 2 1 4 1 , , 6 6 6 1 3 3 1 , , , . 8 8 8 8 7 16 2 16 7 , , , , . 90 45 15 45 90 19 25 25 25 25 19 , , , , , . 288 96 144 144 96 288
注: 求积公式具有 m 次代数精确度的充要条件是
2 m f ( x ) 1 , x , x , , x 它对于 都准确成立,而 m 1 对于 f ( x ) x 不准确成立。
2、求积公式的代数精度
容易验证梯形公式,辛浦生公式,科特斯公式 分别具有1,3,5次代数精度。
定理 5.1 含有 n 1 个节点的插值型数值积分公式 的代数精度至少是 n 。
令I I1
对于 f ( x) x3
I
h 0
h x dx 4
3 4
5
4
4 h h4 I1 ah2 [0 3h 2 ] 4 2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
陕西科技大学机械教改班用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.复化梯形法方法和复化矩形法类似,只是把原来的矩形小面积变成了梯形小面积,但是精确度明显提高了,也就是说达到同样的精度需要的时间少了。
⎥⎦⎤⎢⎣⎡++=∑∑-==111)(2)()(2n k k ni i x f b f a f h I 变形一下:∑-=++=11n )()]()([21n k k x f h b f a f h T 源程序:#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,h=(b-a)/n; //用来判断精度do{h=(b-a)/n;for(int k=1;k<=n-1;k++) //余项叠加,相当于每一个小梯形相加 {t1=t;xk=a+k*h;t+=f(xk);t2=t;}n++; //如果精度不够就对区间再次细分,直到达到精度要求}while(fabs(t1-t2)<=1e-7); //判断计算精度t=h*(f(a)+f(b))/2+t*h; //加上初项就是积分结果了return t;}void main(){double a=0.0; //积分下线double b=2.0; //积分上线int n=1024; //把区间分为1024段cout<<Tn(a,b,n)<<endl; //输出积分结果}执行结果:3.变步长梯形法上面我们在应用复化积分法的时候会对区间进行分割,但是在要求精度是我们也不知道事先应该分割成多少段,分的少了精度达不到,分的多了计算量太大,为了解决这个问题我在上面加了一个循环,来不断地对区间进行再次划分,直到达到精度要求,变步长积分法与我用的方法类似,只不过变步长积分法的区间划分时成倍增加的。
实现方法;由复化梯形法知道;∑-=++=11n )()]()([21n k k x f h b f a f h T 步长h=(b-a)/n现在将步长分半,即在相邻两节点[]1,+k k x x 的中点)(21121+++=k k k x x x 处增加一个求积节点,那么 []∑∑-=+-=⋅+⋅++=1021112)(2)(24)()(n k k n n k k n n n x f h x f h b f a f h T 变形一下:n n k n n k k n n n h k h a x na b h x f h T T ⋅++=-=⋅+=+-=+∑2/)()(222110212其中:源程序:#include <iostream.h>#include <math.h>double f(double x) //计算被积函数的值{double y;y=log(1+x)/(1+x*x);return y;}double t2ntn(double a,double b){int n=1;double hn=b-a; //原步长double tn=0.0;double t2n=(f(a)+f(b))*hn/2.0;while(fabs(t2n-tn)>1e-7) //判断精度{tn=t2n;t2n=0.0;for(int k=0;k<=n-1;k++) //循环叠加t2n+=f(a+hn/2.0+k*hn);t2n=tn/2.0+t2n*hn/2.0;n=n*2;hn=hn/2.0; //步长分半}return t2n;}void main(){double a=0.0;double b=2.0;cout<<t2ntn(a,b)<<endl;}执行结果:4.变步长辛普森法之前的积分斜边都是直线,如果用抛物线接近就会更准确复化辛普森求积公式h k a x na b h x f x f b f a f h T k n k k n k k n ⋅+=-=⎥⎦⎤⎢⎣⎡+++=∑∑-=+-=/)()(4)(2)()(6102/111然后就只要每次让他的积分区间加倍就行直到达到要求的精度#include <stdio.h>#include <iostream.h>#include <math.h>double a=0.0,b=2.0,e=1e-7; //积分上下线,和精度要求int n=1024;double f(double x){Double y;y=log(1+x)/(1+x*x); //被积函数return y;}float simpson(){int i;double s,sn,s2n,p,x,h;h=(b-a)/n; //步长s=f(a)+f(b);p=0;x=a+h; //积分端点for(i=1;i<=n-1;i++){if((i%2)!=0){p=p+4*f(x); //在区间中间时乘4x=x+h;}else{s=s+2*f(x); //积分端点时乘2x=x+h;}}s=s+p; //第一次求和s2n=s*h/3; //积分值do{sn=s2n;x=a+h/2; //变步长s=s-p/2;p=0;for(i=1;i<=n;i++) //变步长只需要加就行了{p=p+4*f(x);x=x+h;}s=s+p;n=n*2;h=h/2;s2n=s*h/3;}while(fabs(s2n-sn)>e); //控制精度return s2n;}void main(){cout<<simpson()<<endl;}执行结果:四.用C++写的综合程序#include <stdio.h>#include <iostream.h>#include <math.h>class Bjhs //抽象类{public:virtual double f(double x)=0; //虚计算被积函数virtual void print()=0; //输出函数virtual double Tn()=0; //虚函数};class Fhjx:public Bjhs //复化矩形法类{public:Fhjx(){a=0;b=2;e=1e-7;n=1024;} //构造函数付初值double f(double x); //计算被积函数double Tn() //求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)<=e); //判断计算精度return t;}void print() //输出{cout<<"用复化矩形法计算的结果"<<Tn()<<endl;}private:double a,b,e;int n;};double Fhjx::f(double x) //外联函数{double y;y=log(1+x)/(1+x*x); //被积函数return y;}class Fhtx:public Bjhs //复化梯形法{public:Fhtx(){a=0;b=2;e=1e-7;n=1024;}double f(double x); //计算被积函数double Tn() //求Tn{double t=0.0;double xk; //区间端点值double t1,t2,h=(b-a)/n; //用来判断精度do{h=(b-a)/n;for(int k=1;k<=n-1;k++) //余项叠加,相当于每一个小梯形相加{t1=t;xk=a+k*h;t+=f(xk);t2=t;}n++; //如果精度不够就对区间再次细分,直到达到精度要求}while(fabs(t1-t2)<=1e-7); //判断计算精度t=h*(f(a)+f(b))/2+t*h; //加上初项就是积分结果了return t;}void print(){cout<<"用复化梯形法计算的结果"<<Tn()<<endl;}private:double a,b,e;int n;};double Fhtx::f(double x){double y;y=log(1+x)/(1+x*x); //被积函数return y;}class Bbctx:public Bjhs //变步长梯形法{public:Bbctx(){a=0;b=2;e=1e-7;n=1;tn=0;}double f(double x); //计算被积函数的值double Tn(){double hn=b-a; //原步长double t2n=(f(a)+f(b))*hn/2.0;while(fabs(t2n-tn)>e) //判断精度{tn=t2n;t2n=0.0;for(int k=0;k<=n-1;k++) //循环叠加t2n+=f(a+hn/2.0+k*hn);t2n=tn/2.0+t2n*hn/2.0;n=n*2;hn=hn/2.0; //步长分半}return t2n;}void print(){cout<<"用变步长梯形法计算的结果"<<Tn()<<endl;}private:double a,b,e;double tn;int n;};double Bbctx::f(double x){double y;y=log(1+x)/(1+x*x); //被积函数return y;}class Bbcxps:public Bjhs //变步长辛普森法{public:Bbcxps(){n=1024;a=0;b=2;e=1e-7;} //积分上下线,和精度要求double f(double x);double Tn(){int i;double s,sn,s2n,p,x,h;h=(b-a)/n; //步长s=f(a)+f(b);p=0;x=a+h; //积分端点for(i=1;i<=n-1;i++){if((i%2)!=0) //判奇偶,也就是看哪点乘几{p=p+4*f(x); //在区间中间时乘4x=x+h;}else{s=s+2*f(x); //积分端点时乘2x=x+h;}}s=s+p; //第一次求和s2n=s*h/3; //积分值do{sn=s2n;x=a+h/2; //变步长s=s-p/2;p=0;for(i=1;i<=n;i++) //变步长只需要加就行了{p=p+4*f(x);x=x+h;}s=s+p;n=n*2;h=h/2;s2n=s*h/3;}while(fabs(s2n-sn)<=e); //控制精度return s2n;}void print(){cout<<"用变步长辛普森法计算的结果"<<Tn()<<endl;}private:double a,b,e,p;int n;};double Bbcxps::f(double x){double y;y=log(1+x)/(1+x*x); //被积函数return y;}void display(Bjhs&q) //输出函数{q.Tn();q.print();};void main() //选择你想要的方法,用switch语句{char a;Fhjx b;Fhtx c;Bbctx d;Bbcxps e;cout<<"求函数y=log(1+x)/(1+x*x)的积分值"<<endl;cout<<"请输入你要选用的方法的编号"<<endl;cout<<"A.复化矩形法 B.复化梯形法"<<endl;cout<<"C.变步长梯形法 D.变步长辛普森法"<<endl;cin>>a;switch(a){case'A': display(b);break;case'B': display(c);break;case'C': display(d);break;case'D': display(e);break;default:cout<<"输入代码错误"<<endl;break;}}执行结果:。