[C] Ronberg算法计算积分 →→→→→进入此内容的聊天室

来自 , 2020-10-31, 写在 C, 查看 147 次.
URL http://www.code666.cn/view/819e3d6c
  1. /*Ronberg算法计算积分
  2. 语法:result=integral(double a,double b);
  3. 参数:
  4. a:    积分上限
  5. b:    积分下限
  6. function f:   积分函数
  7. 返回值:    f在(a,b)之间的积分值
  8. 注意:
  9.         function f(x)需要自行修改,程序中用的是sina(x)/x
  10.         需要 math.h
  11.         默认精度要求是1e-5
  12. */
  13.  
  14. double f ( double x )
  15. {
  16.         return sin ( x ) /x; //在这里插入被积函数
  17. }
  18.  
  19. double integral ( double a,double b )
  20. {
  21.         double h=b-a;
  22.         double t1= ( 1+f ( b ) ) *h/2.0;
  23.         int k=1;
  24.         double r1,r2,s1,s2,c1,c2,t2;
  25. loop:
  26.         double s=0.0;
  27.         double x=a+h/2.0;
  28.         while ( x<b )
  29.         {
  30.                 s+=f ( x );
  31.                 x+=h;
  32.         }
  33.         t2= ( t1+h*s ) /2.0;
  34.         s2=t2+ ( t2-t1 ) /3.0;
  35.         if ( k==1 )
  36.         {
  37.                 k++;
  38.                 h/=2.0;
  39.                 t1=t2;
  40.                 s1=s2;
  41.                 goto loop;
  42.         }
  43.         c2=s2+ ( s2-s1 ) /15.0;
  44.         if ( k==2 )
  45.         {
  46.                 c1=c2;
  47.                 k++;
  48.                 h/=2.0;
  49.                 t1=t2;
  50.                 s1=s2;
  51.                 goto loop;
  52.         }
  53.         r2=c2+ ( c2-c1 ) /63.0;
  54.         if ( k==3 )
  55.         {
  56.                 r1=r2;
  57.                 c1=c2;
  58.                 k++;
  59.                 h/=2.0;
  60.                 t1=t2;
  61.                 s1=s2;
  62.                 goto loop;
  63.         }
  64.         while ( fabs ( 1-r1/r2 ) >1e-5 )
  65.         {
  66.                 r1=r2;
  67.                 c1=c2;
  68.                 k++;
  69.                 h/=2.0;
  70.                 t1=t2;
  71.                 s1=s2;
  72.                 goto loop;
  73.         }
  74.         return r2;
  75. }
  76.  

回复 "Ronberg算法计算积分"

这儿你可以回复上面这条便签

captcha