梯形積分法
(trapezoidal quadrature rule)
梯形公式是可以用來求近似面積的簡單計算法之一。
將圖形分割成幾個區間,分割越多的話,就越接近真正的面積。
#include <iostream>
using namespace std;
// f(x) = x^2
double f(double x)
{
return (x * x);
}
// g(x) = x^3 + 3x^2
double g(double x)
{
return (x * x * x + 3 * x * x);
}
// 使用梯形公式將函數func 分割成n等份,從x1積分到x2為止
double trapezoidal(double x1, double x2, int n, double (*func)(double
x))
{
double sum = 0.0;
double step = (x2 - x1) / n;
for (int i = 0 ; i < n ; ++i)
sum += ( (*func)(x1 + step * i) + (*func)(x1
+ step * (i+1)) ) * step / 2.0;
return sum;
}
int main()
{
cout << trapezoidal(0, 1, 10, f) <<
endl;
cout << trapezoidal(1, 3, 15, g) <<
endl;
return 0;
}