do{}while()应用之二分法求解无理方程

作者在 2011-04-17 18:41:00 发布以下内容
二分法简单介绍:例如:y=x*x*x-sqrt(x)-5 对于此方程在x从1到4的变化中,函数的值从负数转变
为正数,此函数又是连续的,所以我们可以断定,在【1,4】之间必有一个实数解,我们可以循环取x1,
x2的中点x12,并求出y12,当y12无限接近于0的时候,这时候x12就是我们要求的解(注意,对于无理方程
我们永远求不出它的准确值,只能无限接近,但是精确程度太高的时候对于我们已经没有太大的意义了)。
#include<stdio.h>
#include<math.h>
void main()
{
    double x1,x2,x12,y1,y12;
    x1=1;
    x2=4;
    do{
        x12=(x1+x2)/2;
        y1=x1*x1*x1-sqrt(x1)-5;
        y12=x12*x12*x12-sqrt(x12)-5;
        if(y1*y12<0) x2=x12;
        else x1=x12;
    }while(fabs(y12)>1e-9);
    printf("x=%g\ny=%g\n",x12,y12);
}
默认分类 | 阅读 856 次
文章评论,共1条
kemoo
2011-06-04 11:25
1
不错
游客请输入验证码
文章分类
文章归档