1. 程式人生 > >定積分的C語言實現

定積分的C語言實現

想到求積分,我們第一步想到的可能是通過算出帶求函式的不定積分,再將兩個區間端點帶進去做差。但是對於計算機而言計算一個函式的不定積分往往是很困難的,那麼該如何實現呢?

這裡我們就要回到定積分的最原始的定義,一切從定義出發就一定能算出來。

定積分的定義,不過是 分割、求和、取極限

 \int_{a}^{b}f(x)dx = \lim_{N\rightarrow \infty }\sum_{i = 0}^{N}\left [ f(a + \tfrac{b-a}{N}\times i) \times \tfrac{b-a}{N}\right ]

當然,這裡面影響定積分的精度的主要因素就是N的大小,N越大,計算結果越接近真實值, 但同時,N越大,計算時間也就越長。

下面是C語言的程式碼,我們以求 f(x) = e^{x} 的定積分為例。

#include <stdio.h>
#include <math.h>

long double function(long double x)
{
    long double y;
    y = exp(x);
    
return y;
}

int main(void)
{
    unsigned long long N = 100000000;
    printf("Please enter the interval.\n");    //讓使用者輸入積分割槽間
    long double a , b;
    scanf("%Lf %Lf" , &a , &b);                //這裡的 a 和 b 分別是積分上下界
    long double integration;
    
    for (unsigned long long i = 0 ; i <= N ; i++)
    {
        integration += function(a + ((b - a) / N) * i) * ((b - a) / N);
    }
    
    printf("The integration is %Lf\n" , integration);

return 0;
}

下面是終端執行結果