用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

Ronberg算法计算积分

2012-08-28 作者: 神马举报

[c]代码库

/*Ronberg算法计算积分
语法:result=integral(double a,double b);
参数:
a:	积分上限
b:	积分下限
function f:	积分函数
返回值:	f在(a,b)之间的积分值
注意:
 	function f(x)需要自行修改,程序中用的是sina(x)/x
 	需要 math.h
 	默认精度要求是1e-5
*/

double f ( double x )
{
	return sin ( x ) /x; //在这里插入被积函数
}

double integral ( double a,double b )
{
	double h=b-a;
	double t1= ( 1+f ( b ) ) *h/2.0;
	int k=1;
	double r1,r2,s1,s2,c1,c2,t2;
loop:
	double s=0.0;
	double x=a+h/2.0;
	while ( x<b )
	{
		s+=f ( x );
		x+=h;
	}
	t2= ( t1+h*s ) /2.0;
	s2=t2+ ( t2-t1 ) /3.0;
	if ( k==1 )
	{
		k++;
		h/=2.0;
		t1=t2;
		s1=s2;
		goto loop;
	}
	c2=s2+ ( s2-s1 ) /15.0;
	if ( k==2 )
	{
		c1=c2;
		k++;
		h/=2.0;
		t1=t2;
		s1=s2;
		goto loop;
	}
	r2=c2+ ( c2-c1 ) /63.0;
	if ( k==3 )
	{
		r1=r2;
		c1=c2;
		k++;
		h/=2.0;
		t1=t2;
		s1=s2;
		goto loop;
	}
	while ( fabs ( 1-r1/r2 ) >1e-5 )
	{
		r1=r2;
		c1=c2;
		k++;
		h/=2.0;
		t1=t2;
		s1=s2;
		goto loop;
	}
	return r2;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...