C语言实现定积分

想到求积分,我们第一步想到的可能是通过算出带求函数的不定积分,再将两个区间端点带进去做差。但是对于计算机而言计算一个函数的不定积分往往是很困难的,那么该如何实现呢?

这里我们就要回到定积分的最原始的定义,一切从定义出发就一定能算出来。

这篇我们先看一重的情况,对于二重积分,请参见https://blog.csdn.net/weixin_42612337/article/details/82894270

定积分的定义,不过是 分割、求和、取极限

 \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;
}

下面是终端运行结果

猜你喜欢

转载自blog.csdn.net/weixin_42612337/article/details/82829351
今日推荐