?? simposn.c
字號(hào):
/******************************************/
/* */
/* 復(fù)合辛普生 */
/* */
/******************************************/
#include<stdio.h>
#include<math.h>
#define type "%lf" /*-數(shù)據(jù)類型-*/
#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;
/*-輸入?yún)^(qū)間[a,b]及n等分-*/
printf("Please input [a,b]:\n");
scanf(type type,&a,&b);
/*-利用復(fù)合辛普生公式計(jì)算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; /*-逐漸增加等分?jǐn)?shù)-*/
}while(fabs(-1/(double)180*pow((h/2),(double)4)*(Df3(b)-Df3(a)))>epsilon);
printf("n=%d,Sn="type,n-1,Sn);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -