用二分法求函数x+exp的根
1个回答

不知道exp代表什么,我是按exp(x)完成的

#include

#include

void main(void)

{

double x,x1,x2;

double f,f1,f2;

do

{

printf("请输入区间[x1,x2]n");

scanf("%lf%lf",&x1,&x2);

f1 = x1 + exp(x1);

f2 = x2 + exp(x2);

if (f1 * f2 > 0)

{

printf("n该区间不存在根,请重新输入n");

}

} while (f1 * f2 > 0);/* 确保输入的x1,x2使得f1,f2符号相反 */

do

{

x = (x1 + x2) / 2;/* 求x1,x2的中点 */

f = x + exp(x);

if (f1 * f > 0)/* 当f与f1符号相同时 */

{

x1 = x;

f1 = f;

}

else if (f2 * f > 0)/* 当f与f2符号相同时 */

{

x2 = x;

f2 = f;

}

} while (fabs(f) > 1e-7);/* 判断条件fabs(f)>1e-7的意思是f的值非常接近0(有误差) */

printf("x = %fn",x);

}