习题 5.15 用二分法求下面方程在(-10,10)之间的根:

C程序设计(第四版) 谭浩强 习题5.15 个人设计

习题 5.15 用二分法求下面方程在(-10,10)之间的根:

2x34x2+3x6=0
<script type="math/tex; mode=display" id="MathJax-Element-25">2x^3-4x^2+3x-6=0</script>

根据二分法方法:
1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2 求区间(a,b)的中点c.
3 计算f(c).
(1) 若f(c)=0,则c就是函数的零点;
(2) 若f(a)·f(c)<0,则令b=c;
(3) 若f(c)·f(b)<0,则令a=c.
(4) 判断是否达到精确度ξ:即若|a-b|<ξ,则得到零点近似值a(或b),否则重复2-4。

代码块:

#include <stdio.h>
#include <math.h>
int main()
{
    double a=-10, b=10, c, x, x1, x2, x3;
    for (int i=0; ; i++){
        c=(a+b)/2;
        x1=2*pow(a, 3)-4*pow(a, 2)+3*a-6;
        x2=2*pow(b, 3)-4*pow(b, 2)+3*b-6;
        x3=2*pow(c, 3)-4*pow(c, 2)+3*c-6;
        if (!x3) x=c;
        else if (x1*x3<0) b=c;
        else if (x2*x3<0) a=c;
        if (fabs(a-b)<1e-8){
            x=a;
            break;
        }
    }
    printf("Root=%lf\n", fabs(x));
    return 0;
}
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页