梯形逐次插值

一剑行天下 posted @ 2008年11月01日 19:16 in 数值分析 with tags 梯形逐次插值 , 2257 阅读


#include<stdio.h>
#include<math.h>
double f(double x)
{
        double f1=0;
        if(x==0)
                f1=1;
        else
        f1=sin(x)/x;
        return f1;
}
main()
{
        double a=0,b=0,e=0;
        double ff=0;
        int m=1,k;
        double h,T0,T,F=0;
        printf("请输入初始点a和末尾点b的值:\n");
        scanf("%lf,%lf",&a,&b);
        printf("请输入误差e\n");
        scanf("%lf",&e);
        h=(b-a)/2;
        T0=T=h*(f(a)+f(b));
        do
        {
                T0=T;
                ff=0;
                for(k=1;k<=(pow(2,m-1));k++)
                {
                        ff=ff+f(a+(2*k-1)*h);
                }

                T=T0/2 +h*ff;
                h=h/2;
                m++;
 printf("k=%d  时T=%.7lf\n",m-1,T);




        }while ((T-T0)>=3*e);
        printf("对于要满足的误差e=%.8lf进行了%d次二分运算\n",e,m-1);
        printf("I=T=%.7lf\n",T);

}

Avatar_small
一剑行天下 说:
2008年12月18日 17:26

我刚好再做!写的挺适合我理解!谢谢这位大哥!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter