用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...