永发信息网

跪求c语言(不是c++)编程龙贝格求积分代码

答案:1  悬赏:40  手机版
解决时间 2021-04-26 20:09
  • 提问者网友:姑娘长的好罪过
  • 2021-04-26 11:26
跪求c语言(不是c++)编程龙贝格求积分代码
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-04-26 12:41
#include
#include
#include
double fx(double x)//被积函数
{
    if(x==0)return 1;
    return sin(x)/x;
}
double getS(double a,double b,double h)
{
   double res=0.0;
   double i;
   for(i=a+h/2.0; i       res+=fx(i);
   return res;
}
double Romberg(double a,double b,double e)
{//龙贝格积分,在区间[a,b]上积分,误差为e
   int k=1;
   double T1,T2,S1,S2,C1,C2,R1,R2;
   double h=b-a;
   double s;
   T1=(fx(a)+fx(b))*h/2.0;
   int counter=0;//循环上限
   while(1)
    {
       counter++;
       s=getS(a,b,h);
       T2=(T1+h*s)/2.0;
       S2=(4.0*T2-T1)/3.0;
       h/=2.0;
       T1=T2;
       S1=S2;
       C1=C2;
       R1=R2;
       if(k==1)
       {
           k++;
           continue;
       }
       C2=(16.0*S2-S1)/15.0;
       if(k==2)
       {
           k++;
           continue;
       }
       R2=(64.0*C2-C1)/63.0;
       if(k==3)
       {
           k++;
           continue;
       }
       if(fabs(R1-R2)=100)break;
    }
   return R2;
}
int main()
{
    printf("%lf
",Romberg(-1,1,0.00000001));
    return 0;
}追问大神,求解各算法步骤及其功能,万分感谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯