龙贝格.cpp

来自「定步长辛普森公式计算.二分法.列主高斯消去法.龙贝格.牛顿迭代法.弦截法.逐次超」· C++ 代码 · 共 64 行

CPP
64
字号
#include "stdio.h"
#include "math.h"
#include "malloc.h"
#include "iostream.h"



double Func(double x)
{
	if(x==0.0000000)
		return 1;
	else
		return(sin(x)/x);
}

double ROMBG(double a,double b,double eps)
{
	double l,h,r,s,k,l0,m,n;
	int j,q;
	double t[11];	
	l=b-a;
	h=l;
	t[0]=(Func(a)+Func(b))*l*0.5;
	for(q=0;q<=9;q++)
	{
		r=h;
		h*=0.5;
		k=h;
		s=Func(a+k);
		do
		{
			k+=r;
			if(fabs(k)<fabs(l))
				s+=Func(a+k);
		}while(fabs(k)<fabs(l));
		t[q+1]=t[q]*0.5+h*s;
		l0=1;
		for(j=q;j>=0;j--)
		{
			l0*=0.25;
			m=(t[j+1]-t[j])/(1-l0);
			t[j]+=m;
		}
	}
		n=t[0];
		m/=n;//cout<<t[0]<<t[1];
		if(fabs(m)<eps&&q>3)
		{
			r=t[0];
			return(r);
		}
		else
			return 0;
}

void main()
{
	double a,b,eps;
	a=0.0;
	b=1.0;
	eps=0.0000005;
	printf("%.10f\n",ROMBG(a,b,eps));

}

⌨️ 快捷键说明

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