首 页科组简介下载中心文章中心客户留言论 坛博 客加入收藏
您当前的位置:惠州一中电教科组 -> 信息奥赛 -> C语言 -> 文章内容
 
栏目导航
热门文章
· [图文] 颠覆传统快捷..
· [新闻] NOIP2006广东..
· [新闻] NOIP2006广东..
· 第十一届全国青少年..
· [推荐] 关于动态规划..
· [新闻] NOIP2006复赛..
· [图文] 第四章 信息..
· [推荐] 生活中离不开..
· [图文] 第三章 信息..
· [图文] 校园常见病毒..
相关文章
牛顿迭代法和二分法求方程的根的简单比较
作者:本站  来源:本站整理  发布时间:2007-3-15 16:12:35  发布人:yzriyang

减小字体 增大字体

牛顿迭代法和二分法求方程的根的简单比较
 Q:求方程:2*x*x*x-4*x*x+3*x-6=0的根,分别运用两种方法来实现,前提是我们已经知道这个方程只有一个根,否则的话下面的算法是无效的:
     牛顿迭代法:
#include<stdio.h>
#include<math.h>
#include<conio.h>
float f(float x)
...{
 return 2*x*x*x-4*x*x+3*x-6;
}
float fd(float x)
...{
 return 6*x*x-8*x+3;
 }
int main(void)
...{
      float x0=1.5,x=1.5;

      do...{
        x0=x;
        x=x0-f(x0)/fd(x0);//迭代公式求近似根;
      }while(fabs(x-x0)>1e-4);

      printf("the asymtomatic root is %f ",x0);
      getch();
      return 0;
  }

       /**//*2.000005*/
二分法:
#include <stdio.h>
#include <math.h>
#include <conio.h>
float f(float x)
...{
  return 2*x*x*x-4*x*x+3*x-6;
}
int main(void)
...{
 float l=-10,r=10,root,mid;

 while(fabs(l-r)>1e-4)...{
    mid=(l+r)/2;
    if(!f(mid))...{
       root=mid;
       break;
   }if(f(l)*f(mid)<0)
        r=mid;
    else
        l=mid;
  }
  root=mid;
 printf("the only one root is %f ",root);
 getch();
 return 0;
 }
    /**//*2.000046*/
我们可以比较二者的结果可以发现在同样的而且是较小的限制条件下牛顿迭代法要比二分法求的值的精确,但是如果把限制条件扩大的话,结果都是2,恰巧2就是这个方程的精确根了。
] [返回上一页] [打 印] [收 藏]
上一篇文章:迭代法求平方根
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]

 
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 管理登录
Copyright © 2002-2006 dj.hzyz.net. All Rights Reserved .2006