A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

卓礼敏

中级黑马

  • 黑马币:0

  • 帖子:5

  • 精华:0

© 卓礼敏 中级黑马   /  2013-4-8 16:19  /  1909 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。
这道题我无从下手,也不了解用什么算法算好,这类题目通常怎么算,求思路

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

7 个回复

倒序浏览
牛顿迭代法是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。

利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5. double x0,x=1.5;
  6. do
  7. {
  8. x0=x;
  9. x=x0-(2*pow(x0,3)-4*pow(x0,2)+3*x0-6)/(6*pow(x0,2)-8*x0+3);
  10. } while (fabs(x-x0)>1e-5);
  11. printf("x=%f",x);
  12. return 0
  13. }
复制代码
牛顿迭代法是先给定方程f(x)=0的一个较好的近似根x,然后用迭代公示:xn+1=xn-f(xn)/f'(xn)
直至xn与xn+1相差很小为止

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 25分咯~

查看全部评分

回复 使用道具 举报
这种逼近高次方程解的方法是切线法。
牛顿迭代法更为人所知的是求根。
回复 使用道具 举报
还有问题,继续追问; 没有的话,请将帖子分类改成【已解决】哦~
回复 使用道具 举报
王大伟 发表于 2013-4-8 16:52
牛顿迭代法是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此 ...

多谢大美女了   多谢支持啊
回复 使用道具 举报
陈丽莉 发表于 2013-4-8 21:04
还有问题,继续追问; 没有的话,请将帖子分类改成【已解决】哦~

多谢版主了   多谢支持啊
回复 使用道具 举报
滔哥 黑马帝 2013-4-8 22:37:51
7#
版主辛苦了
回复 使用道具 举报
滔哥 发表于 2013-4-8 22:37
版主辛苦了

啊,多谢滔哥,这都是我应该做的~  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马