C语言复合梯形公式实现定积分


假设被积函数为

f

x

,积分区间为

,

a

b

,把区间

,

a

b

等分成

n

个小区间,

各个区间的长度为

h

,即

/

h

b

a

n

,称之为“步长”

。根据定积分的定义及几

何意义,定积分就是求函数

f

x

在区间

,

a

b

中图线下包围的面积。将积分

区间

n

等分,各子区间的面积近似等于梯形的面积,面积的计算运用梯形公

式求解,再累加各区间的面积,所得的和近似等于被积函数的积分值,

n

大,所得结果越精确。以上就是利用复合梯形公式实现定积分的计算的算法思

想。

 

复合梯形公式:

    

      假设被积函数为f(x),积分区间为[a,b] ,把区间[a,b]等分成n个小区间,各个区间的长度为step,即step=(b-a)/n,称之为“步长”。根据定积分的定义及几何意义,定积分就是求函数f(x)在区间[a,b]中图线下包围的面积。将积分区间n等分,各子区间的面积近似等于梯形的面积,面积的计算运用梯形公式求解,再累加各区间的面积,所得的和近似等于被积函数的积分值n越大,所得结果越精确。以上就是利用复合梯形公式实现定积分的计算的算法思想。

复合梯形公式:

 

具体源代码如下:

 1 #include <math.h>
 2 #include <stdio.h>
 3 
 4 double integral(double(*fun)(double x), double a, double b, int n)  5 {  6     double sum,step,result;  7     int i;  8     sum=(fun(a)+fun(b))/2;  9     step=(b-a)/n; /*积分步长*/
10     for(i=1;i<n;i++) 11     sum=sum+fun(a+i*step); 12     result=sum*step; 13     return result;/*返回积分值*/
14 } 15 
16 double function(double x) 17 { 18     return (x*sin(x));  /*修改此处可以改变被积函数*/
19 } 20 
21 void main() 22 { 23     double result; 24     result=integral(function,1.0,2.0,150);/*修改此处可以改变积分上下限和步长*/
25     printf("result=%f\n",result); 26 }

注:double(*fun)(double x),定义函数指针

参考:用C语言求积分


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM