【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)]
a∫bf(x)dx≈2h[f(a)+f(b)+2i=1∑n−1f(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 0∫11+e−xsin4xdx
首先写出计算被积函数值的函数
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;
}