作业帮 > 综合 > 作业

C语言编程二分法6) 用二分法求下面方程在(-10,10)之间的根.2x3-4x2+3x-6=0【提示】(1) 取两个不

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/16 12:10:59
C语言编程二分法
6) 用二分法求下面方程在(-10,10)之间的根.2x3-4x2+3x-6=0【提示】(1) 取两个不同点x1、x2,如果f(x1)和f(x2)符号相反,则(x1,x2)区间内必有一个根(曲线与x轴的交点).如果f(x1)与f(x2)同符号,则应改变x1、x2,直到f(x1)、f(x2)异号为止.注意x1、x2的值不应相差太大,以保证(x1,x2)区间只有一根.
(2) x1和x2两点之间的中点x=(x1+x2)/2,见图4-1,再从x求出函数值f(x).
(3) 若f(x)与f(x1)同符号,则根必在(x,x2)区间内,此时将x作为新的x1;如果f(x)与f(x2)同符号,则表示根在(x1,x)区间内,将x作为新的x2.
(4) 重复步骤(2)和(3),直到|f(x)|
C语言编程二分法6) 用二分法求下面方程在(-10,10)之间的根.2x3-4x2+3x-6=0【提示】(1) 取两个不
#include
#include
double fun(double x) { return 2 * x * x * x - 4 * x * x + 3 * x - 6; }
double root(double a, double b, double e)
{
double x1, x2, y1, x, y;
x1 = a; x2 = b;
do {
x = (x1 + x2)/2;
y = fun(x);
y1 = fun(x1);
if( ( y < 0 && y1 < 0) || (y > 0 && y1 > 0) )
x1 = x;
else
x2 = x;
/*end if*/
}while(fabs(y) > e);
return x;
}
int main(void)
{
double x = root(-10.0f, 10.0f, 1e-8);
printf("%f\n", x);
return 0;
}
/*
运行结果:
2.000000
*/