二分法(c语言)

编译环境:c-free3.5


题目:

用二分法求方程exp(-x)-sin(pi*x/2)=0在区间 [0,1]上的根,要求误差不超过2^(-5)。


实验代码:

#include

#include

#define pi 3.14

float f(float x)

{

    return exp(-x)-sin(pi*x/2);

}

void main()

{

    float a,b,e,m;

    int k;

    printf("请输入区间a,b和误差e的值:\n");

    scanf("%f,%f,%f",&a,&b,&e);

    while(f(a)*f(b)>0)

    {

        printf("请重新输入区间a,b和误差e的值:\n");

        scanf("%f,%f,%f",&a,&b,&e);

    }

    for(k=0;fabs(a-b)>=e;k++)

    {

        if(f(a)*f(b)==0)

        {

            if(f(a)==0) printf("x*=%f,k=%d\n",a,k);

            if(f(b)==0) printf("x*=%f,k=%d\n",b,k);

            break;

        }

        if(f(a)*f(b)<0)

        {

            m=(a+b)/2;

            if(fabs(a-b)

            {

                printf("x*=%f,k=%d\n",m,k);

                break;

            }

            else

            {

                if(f(a)*f(m)>0) a=m;

                else b=m;

            }

        }

        if(fabs(a-b)

        printf("x*=%f,k=%d\n",m,k);

    }

}


实验结果:

二分法(c语言)_第1张图片

你可能感兴趣的:(二分法(c语言))