对于积分间隔[a,b]
成立了
辛普森公式
辛普森公式可以看作是改进的梯形公式。
梯形公式是以直线逼近实际曲线,而辛普森公式则以二次曲线(即抛物线)逼近。以二次曲线逼近实际曲线
根据辛普森公式可得各积分小区间内的积分值如下式所示:
其中
于是,全积分区间[a, b]的积分值为
为便于计算机计算,上式可写成
其中
C语言程序实现辛普森公式计算积分
- 计算积分
- 代码
#include <;
#include <ma;
/*函数定义*/
double f(double x)
{
return )*exp(-1*x);
}
/*辛普森公式计算积分*/
double simpson(
double a, double b, int n)
{
double h = (b-a)/n;
double s0,s1=0.0,s2=0.0;
double S;
double x;
int i;
s0 = f(a) + f(b);
for( i = 1; i < n; i += 2 )
{
x = a + h * i;
s1 += f(x);
}
for( i = 2; i < n; i += 2 )
{
x = a + h * i;
s2 += f(x);
}
S = h*(s0+4*s1+2*s2)/3;
return S;
}
int main(void)
{
//积分区间[a, b]
double a = -1.0, b = 1.0;
//区间分割数
int N[5]={10,20,30,50,100};
int i = 0;
for( i = 0; i < 5; i++ )
printf("[%3d等分]积分近似值:\n\
I = %.7lf\n",
N[i], simpson(a, b, N[i]));
return 0;
}
- 编译・执行
$ gcc -lm -o simpson
$ ./simpson
[ 10等分]积分近似值:
I = 3.0862715
[ 20等分]积分近似值:
I = 3.0861682
[ 30等分]积分近似值:
I = 3.0861626
[ 50等分]积分近似值:
I = 3.0861614
[100等分]积分近似值:
I = 3.0861613
1.《全积分怎么算?总结很全面速看!积分近似计算之辛普森公式》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《全积分怎么算?总结很全面速看!积分近似计算之辛普森公式》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3123257.html