梯形積分法
(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;
    }

 

Hosted by www.Geocities.ws

1