📄 simposn.c
字号:
/******************************************/
/* */
/* 复合辛普生 */
/* */
/******************************************/
#include<stdio.h>
#include<math.h>
#define type "%lf" /*-数据类型-*/
#define epsilon 1e-8
typedef double Dtype;
Dtype f(Dtype x)
{
return exp(x)*cos(x);
}
Dtype Df3(Dtype x)
{
return -2*exp(x)*(cos(x)+sin(x));
}
void main()
{
int k,n;
Dtype a,b,h,sum,Sn;
/*-输入区间[a,b]及n等分-*/
printf("Please input [a,b]:\n");
scanf(type type,&a,&b);
/*-利用复合辛普生公式计算Sn-*/
n=1;
do{
h=(b-a)/n;
Sn=f(a);sum=0;
for(k=0;k<=n-1;k++)
sum+=f(a+k*h+h/2);
Sn+=4*sum;
sum=0;
for(k=1;k<=n-1;k++)
sum+=f(a+k*h);
Sn+=2*sum+f(b);
Sn=Sn*h/6;
n=n+1; /*-逐渐增加等分数-*/
}while(fabs(-1/(double)180*pow((h/2),(double)4)*(Df3(b)-Df3(a)))>epsilon);
printf("n=%d,Sn="type,n-1,Sn);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -