simposn.c

来自「数值计算方法中几个重要的算法用VC++实现」· C语言 代码 · 共 54 行

C
54
字号
/******************************************/
/*                                        */
/*             复合辛普生                 */
/*                                        */
/******************************************/
#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 + =
减小字号Ctrl + -
显示快捷键?