定积分的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;
}

 

下面是终端运行结果

 

  • 19
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值