24小时热门版块排行榜    

查看: 214  |  回复: 1

zhangjin_7

铜虫 (小有名气)

[求助] 求助romberg调试

#include
#include
#define jifen(x) pow(3,x)*pow(x,1.4)*(5*x+7)*sin(pow(x,2))//定义待求积分函数
#define E 0.00001//定义控制迭代误差大小
main()
{
        double newarray[20]={0},oldarray[20]={0};//定义两个数列分别表示迭代是用到的两组数据
        double fistarray(double a,double b,int j);//声明一个函数计算新数组的第一个元素
        int i=1,j,k;//定义i为新数组中元素个数,j控制将新数组赋值给旧数组,k控制计算新数组
        oldarray[0]=jifen(1)+jifen(3);//初始化旧数组中第一个元素
        newarray[0]=(3-1)/2*(jifen(1)+jifen(3)-2*jifen(2));//初始化新数组中第一个元素
        newarray[1]=(4*newarray[0]-oldarray[0])/(4-1);//初始化新数组中第二个元素
        while(fabs(newarray-oldarray[i-1])>=E)
        {
                for(j=0;j<=i;j++)//将新数组数据赋给旧数组
                        oldarray[j]=newarray[j];
                i++;//新数组长度增加一位
                newarray[0]=0.5*(oldarray[0]+fistarray(1,3,i));
                for(k=1;k<=i;k++)//给新数组第一个元素以后的赋值
                {
                        newarray[k]=(pow(4,k)*newarray[k-1]-oldarray[k-1])/(pow(4,k)-1);
                }
        }
        printf("%f",newarray);

}
double fistarray(double a,double b,int j)//帮助计算新数组第一个元素
{
        int i;
        double s=0,ss=0;
        for(i=1;i<=pow(2,j-1);i++)
        {
                s+=jifen(a+(2*i-1)*((b-a)/pow(2,j)));
        }
        ss=(b-a)/pow(2,j-1)*s;
        return(ss);
}
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : Romberg.c
  • 2012-11-29 17:05:35, 1.19 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

zhangjin_7

铜虫 (小有名气)

本人新手,写的不规范或者不合适的地方请多多指教,计算结果大概是四百多
2楼2012-11-29 17:06:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhangjin_7 的主题更新
信息提示
请填处理意见