求一个c语言2分法的例子

 我来答
a1012144015
2015-11-15 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1354万
展开全部
) 用二分法求下面方程在(-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)|<ε为止,ε为一个很小的数。此时认为f(x)≈0,x即为根。
根据上述思路画出N-S流程图,如图4-2所示。源程序命名为p5_8.c。
#include <math.h>
#include <stdio.h>

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;
}
更多追问追答
追问

第31题怎么做呢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式