Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2226497
  • 博文数量: 556
  • 博客积分: 11457
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 22:33
文章分类

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: C/C++

2011-11-13 20:47:49

题目:
以下C程序是应用二分法求方程f(x)=x*x*x-x-1=0在区间(1,2)上的解,精确到小数点后第6位。
 
  1. #include "stdio.h"
  2. #include "math.h"
  3. #define f(x) ((x*x-1)*x-1)
  4. #define e 0.0000001
  5. void main()
  6. {
  7.    float x,a=1,b=2,y=f(a);
  8.    int k=0;
  9.     char flag;
  10.    if(y*f(b)>=0){
  11.       printf("\nThe range is error!");
  12.      return;
  13.    }
  14.    else
  15.        printf("k ak     bk     xk     f(x)     bk-ak\n");
  16.      do{
  17.      x=(a+b)/2;
  18.          if(f(x)<0)
  19.              flag='-';
  20.          else flag='+';
  21.          printf("%2d %8.7f %8.7f %8.7f %c %8.7f \n",k,a,b,x,flag,b-a);
  22.          if(f(x)==0)
  23.              break;
  24.          if(f(x)>0)
  25.              b=x;
  26.          else
  27.              a=x;
  28.         k++;
  29.      }while((b-a)/2>e);
  30.      printf("\nx=%8.6f",x);.
  31. }
阅读(1047) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~