当前位置:嗨网首页>书籍在线阅读

06-利用梯形法求定积分

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.5 利用梯形法求定积分

问题描述

19.png 利用梯形法求定积分 dx的值。

【分析】

定积分I = dx的几何意义就是曲线f(x)与y=0、x=a、x=b所围成的曲顶梯形的面积。为了得到定积分的值,需要将连续的图像分割为容易求解的子图像,然后利用迭代法对表达式反复操作。求定积分的方法有两种——矩形法和梯形法。

下面我们以梯形法为例讲解。函数 y=f(x)的图像如 图16.7所示。

411.png

图16.7 函数y=f(x)的图像

从图16.7中可以看出,一个曲顶梯形可以被分割为许许多多长度为h的小曲顶梯形,每个小曲顶梯形可以近似地看作梯形。第i个小曲顶梯形的面积为

s=

将h=(b−a)/n代入上式,有

s=

414.gif 其中,a为下限,b为上限,n为小曲顶梯形的个数。将上式展开,有

s≈ [f(a)+f(a+h)+f(a+h)+f(a+2h)+f(a+2h)+f(a+3h)+…+

f(a+(n−2)h)+f(a+(n−1)h)+f(a+(n−1)h)+f(b)]

415.gif 将上述公式改为迭代形式:

s= [f(a)+f(b)]

s=s+h(a+ih)

算法步骤如下。

(1)根据下限a、上限b、小曲顶梯形个数n,求出h=(b−a)/n。

(2)求出初始的s=(h/2)(f(a)+f(b))。

(3)从i=1迭代到n−1,把h(a+ih)累加到s。

s即为所求定积分。

第16章\实例16-05.c
/********************************************
*实例说明:利用梯形法求定积分
*********************************************/
1  #include<stdio.h>
2  #include<math.h>
3  #define N 1000
4  double f(double x);
5  double Integral(double a,double b,int n);
6  void main() 
7  { 
8      double a,b,value; 
9      printf("输入积分下限和上限:"); 
10     scanf("%lf,%lf",&a,&b);
11     value=Integral(a,b,N);
12     printf("sin(x)在区间[%lg,%lg]的定积分为:%lf\n",a,b,value);
13 }
14 double f(double x) 
15 /*函数f(x)*/ 
16 { 
17     return sin(x); 
18 } 
19 double Integral(double a,double b,int n) 
20 /*迭代次数*/ 
21 { 
22     double s,h; 
23     int i; 
24     h=(b-a)/n;
25     s=0.5*h*(f(a)+f(b));
26     for(i=1;i<n;i++) 
27         s=s+f(a+i*h)*h;
28     return s; 
29 }

运行结果如图16.8所示。

416.png

图16.8 运行结果

【说明】

利用矩形法求定积分的方法与利用梯形法求定积分的方法类似。

利用迭代法解决问题,需要做好以下3个方面的工作。

(1)确定迭代变量。在可以用迭代法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

(2)建立迭代关系式。所谓迭代关系式,即如何从变量的前一个值推出下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或逆推的方法来建立迭代关系式。

(3)对迭代过程进行控制。在什么时候结束迭代过程是迭代程序必须考虑的问题之一,不能让迭代过程无休止地进行。对迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要根据具体情况分析出用来结束迭代过程的条件。