不知道exp代表什麼,我是按exp(x)完成的
#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符號相反 */
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 = %f\n",x);
不知道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 = %f\n",x);