CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

求:利用迭代法求非线性方程x^3-3x-1=0的三个实数根(∑=10^-8)的C程序 高人进啊~~~救命啊~~~

楼主charlen(Cccc.......)2005-05-13 22:33:28 在 专题开发/技术/项目 / 数据结构与算法 提问

最好能够分别用简单迭代法,牛顿迭代法,和快速弦截法编写  
        希望高人能够指点   谢谢~~~~ 问题点数:100、回复次数:8Top

1 楼zhang_jiang(Solar)回复于 2005-05-14 10:23:32 得分 100

简单迭代:  
  x^3-3x-1=0  
  =>   x   =   (3x   +   1)^(1/3)  
  先假设一个解x0,   每次将x0代入上式右边,   求得左边的x,   然后比较x,   x0,  
  若|x-x0|<10^(-8),   结束,   否则,   x0<-x,   继续上面过程.    
   
  Top

2 楼NowCan(城市浪人)回复于 2005-05-14 10:28:58 得分 0

这样只能算出一个根来。牛顿迭代要先求出导函数表达式,根据导函数的正负应该可以预估3个初始解。Top

3 楼zhang_jiang(Solar)回复于 2005-05-14 10:30:29 得分 0

牛顿迭代法:  
  f(int   x0)  
  {  
    int   x,   x1;  
   
    x   =   x0;   //   自己给定猜解  
    do{  
    x1   =   x   -   (x*x*x   -   3*x   -1)/(3*x*x-3);  
    }while(abs(x-x1)<1.0e-8);   //   最后的x1就是解  
  }Top

4 楼zhang_jiang(Solar)回复于 2005-05-14 10:32:55 得分 0

>   这样只能算出一个根来。牛顿迭代要先求出导函数表达式,根据导函数的正负应该可以预估3个初始解。  
  每次当然只能求一个根了,   要看你给的猜解在哪个范围,   以及它怎么收敛了.  
  Top

5 楼zhang_jiang(Solar)回复于 2005-05-14 10:42:03 得分 0

加快收敛速度的牛顿下山法:  
  f(int   x0)  
  {  
    int   r;  
    int   x,   x1;  
   
    x1=x=x0;  
    do  
    {  
    r=1.0;  
    x1   =   x   -   (x*x*x-3*x-1)/(3*x*x-3);  
    while(fabs(x*x*x-3*x-1)>fabs(x1*x1*x1-3*x1-1))  
    {  
    r/=2.0;  
    x1   =   x   -   r*(x*x*x-3*x-1)/(3*x*x-3);  
    }  
    }while(fabs(x-x1)<1.0e-8);  
  }  
   
  另:   上面牛顿法中的while(abs(...)<1.0e-8)   ->   while(fabs(...)<1.0e-8)Top

6 楼cuixiping(无心●愚公)回复于 2005-05-14 12:47:35 得分 0

干嘛那么复杂?高中不是有学过一元三次方程的根是有公式的吗?直接用公式可以了。Top

7 楼charlen(Cccc.......)回复于 2005-05-14 16:45:50 得分 0

谢谢各位的指点~  
  但有没有人能用快速弦截法编写一下啊~  
      谢谢Top

8 楼zhang_jiang(Solar)回复于 2005-05-15 13:54:40 得分 0

弦截法:  
  同牛顿迭代法一样,   使用x_(k+1)=x_k-f(x_k)/(f'(x_k))  
  但是求f'(x_k)的时候用差商来求.   即f'(x_k)=(f(x_k)-f(x_(k-1)))/(x_k-x_(k-1))Top

相关问题

  • 急,需要非迭代法的线性方程组的解法(c/c++源码)
  • 急,需要非迭代法的线性方程组的解法(c/c++)
  • 求解一般线性方程组的算法及C程序
  • 解线性方程问题
  • 解线性方程问题
  • 求解线性方程组
  • 用 c 语言实现 高斯消去法 解线性方程组解 (512 * 512 的方程组)大概需要多少时间?
  • 1000分!解线性方程组。
  • 请问大家有求解线性方程组的算法吗?
  • 求解线性方程组(用叠代法)的源程序!!

关键词

  • 迭代
  • 牛顿
  • 法
  • fabs

得分解答快速导航

  • 帖主:charlen
  • zhang_jiang

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo