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