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

来源:互联网 发布:投资新三板风险知乎 编辑:程序博客网 时间:2024/06/08 00:59

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

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

2x34x2+3x6=0

根据二分法方法:
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;}
原创粉丝点击