【C语言基础】利用复合梯形求积公式计算定积分

【C语言基础】利用复合梯形求积公式计算定积分

一、复合梯形求积公式

这是数值分析中一种求解定积分的近似方法。适用于被积函数的原函数不能用初等函数表示的情况。

基本思路

将被积函数 f(x)与x轴围成的区域分成n个梯形,把n个梯形面积求和得到积分的近似值。若精度不满足需要,则可以将每个区间再等分一次,得到2n+1个等分区间,然后再求和,直到精度满足需要。

公式

∫ a b f ( x ) d x ≈ h 2 [ f ( a ) + f ( b ) + 2 ∑ i = 1 n − 1 f ( x i ) ] \int\limits_a^b f(x)dx \approx \frac{h}{2}[f(a)+f(b)+2\sum_{i=1}^{n-1} f(x_i)] abf(x)dx2h[f(a)+f(b)+2i=1n1f(xi)]
其中:

n 为等分区间数
h=(b-a)/2 (积分步长)
C语言实现算法

以下面积分为例:

∫ 0 1 1 + e − x s i n 4 x d x \int\limits_0^11+e^-xsin4xdx 011+exsin4xdx

首先写出计算被积函数值的函数
double f(double x)
{
    return 1 + exp(-x)*sin(4x);
}
然后写出求积分近似解的表达式
double caculate(double a,double b)
{
    double y1,y2,h;
    int n=1,i;
    h = a-b;
    y1 = h*(f(a)+f(b))/2;
    do
    {
       y2 = y1;
       n = n*2;
       h = (a-b)/n;
       y1 = f(a)+f(b);
       for(i=1;i<n:i++)
             y1 = y1 + f(a + i*h);
        y1 = h*y1/2;
    }while(fabs(y2-y1)>1.0e-5));
    return y2;
}
其中frab()是用来计算绝对值的函数
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值