矩形法求解定積分
做個小筆記,如表述有不對的地方,歡迎指正。
原理
積分在圖形上表示就是面積,把被積分區域劃分成一個個小矩形,求解這些矩形的面積和即可。
被積函數:;
積分區間:;
積分區間劃分數:;
每個小矩形的面積:
說明:
你可以想象一下,在積分函數圖形上,我們把被積分區域劃分成等份,
此時每個小矩形的底爲:.
如果N足夠大,可以把被積分區域劃分成一根根針一樣大小的矩形區域。
此時小矩形的底可以看成一個點,在被積分區域內,每個小矩形對應的位置
爲:,將其代入即可得到對應小矩形的高。
假設爲第塊小矩形 , 則即爲第塊小矩形的高。
所以計算每個小矩形的面積用如上所述的公式。
如果爲等內置函數可以使用C/C++裏面的math庫
例子
求解定積分:
根據上述公式寫出矩形法求解此定積分的代碼:
#include <iostream>
#include <cmath>
using namespace std;
double get_integral_sinx(double a,double b,int N)
{
/*
積分區間:[a,b]
積分區間劃分數目:N ,越大求得的結果越精細
被積分函數:sinx
*/
double x = (b - a) / N;
double ans = 0;
for(int i = 1; i <= N; ++i)
{
ans += x * fabs(sin(a + x*i));
}
return ans;
}
int main()
{
double ans = get_integral_sinx(0,1,1000);
cout<<ans<<endl;
return 0;
}
如果你第一次接觸,你難免會對上述做法有點疑慮,怕不可靠。
爲了打消你的疑慮,我們結合我們手動求解定積分的方式來一個結果對比驗證:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout<<(1-cos(1))<<endl;
return 0;
}
運行上述兩段代碼,(運行結果我就不貼了,請自行驗證)就可以對比出矩形法求解定積分的可靠性。
其他
我們常常可以使用C/C++裏的math庫中的一些內置函數來表示我們常用的一些常數。
比如圓周率:
因爲,所以有:
const double PI = acos(-1.0);
再如:常數,我記得大概是2.7…
函數是用於計算,所以有:
const double e = exp(1.0);