变步长辛普生.cpp

来自「数值分析程序。。。。。好多程序下载 喜欢的朋友可以下 随时欢迎」· C++ 代码 · 共 46 行

CPP
46
字号
#include <iostream.h>
#include <math.h>
double f (double x)
{
  double y;
   if(x==0)
	   y=1;
	   else
   y=sin(x)/x;
   return y;
	/*double y;
	y=3*x*x*x+2*x*x-5*x+1;
	return y;*/
}

void main()
{
	int n;
	double a,b,g,p,q,h,t,e;
	double s1,s2;
	cout<<"请输入积分上下限a,b和误差限e的值"<<endl;
	 cin>>a>>b>>n;     
	 h=b-a;
	 p=f(b)+f(a);
	 s2=0.5*p*h;
	 t=0.0;

	for(n=1;n<=1000;)
	{
		s1=s2;
		h=0.5*h;
		g=0.0;
		for(q=a+h;q<b-0.5*h;q+=2*h)
		    g=g+f(q);
			s2=(p+4*g+2*t)*h/3;
			t=t+g;
			n=n+n;
			if(fabs(s1-s2)<e)
				break;
	}
	cout<<s2<<endl;
}
			
				
	 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?