何为迭代法

一、何为迭代法
  1. 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。利用迭代算法解决问题,需要做好以下三个方面的工作:
  2. a.确定迭代变量(本题可设 x[x+1]为xx1x[n])
  3. b.建立迭代关系式(本题为 X[n+1]=(X[n]+a/X[n])/2)
  4. c.对迭代过程加以控制(本题为 while(fabs(x-x1)>1E-5))
二、何为牛顿迭代法
  1. 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
  2. 公式即为 X[n+1]=(X[n]+a/X[n])/2

有了上述准备我们就可以来做题了,话不多说,附上代码:

  1. #include"stdio.h"
  2. #include"math.h"
  3. int main()
  4. {
  5. int a;
  6. double x=1.0,x1;
  7. scanf("%d",&a);
  8. while(fabs(x-x1)>1e-5) //判断结束条件
  9. {
  10. x1=x;
  11. x=(x1+a/x1)/2;
  12. }
  13. printf("%0.3lf",x);
  14. return 0;
  15. }

:bowtie:但在这里我还想给大家拓展一下:
hearts;我们已经介绍过牛顿迭代法是一般用来近似求解方程的,与之对应的还有二分法求解。比较典型的例题是求该方程的根:2X^3-4X^2+3X-6=0


1. 用牛顿迭代法求下面方程在1.5附近的根:2x^3-4x^2+3x-6=0
  1. #include<stdio.h>
  2. #include<math.h>
  3. int main()
  4. {
  5. int i=0;
  6. double x1=1.5,x2=0;//迭代初值
  7. while (fabs(x2-x1)>=1e-5)
  8. {
  9. x1=x1-(2*x1*x1*x1-4*x1*x1+3*x1-6)/(6*x1*x1-8*x1+3);
  10. x2=x1-(2*x1*x1*x1-4*x1*x1+3*x1-6)/(6*x1*x1-8*x1+3);
  11. i++;
  12. printf("第%d次迭代 x1=%9.8f\tx2=%9.8f\n",i,x1,x2);
  13. }
  14. printf("\nx=%9.8f\t共迭代:%d次\n",x2,i);
  15. return 0;
  16. }
2.用二分法求下面方程在(-10,10)之间的根:2x^3-4x^2+3x-6=0
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5. float left,right,mid;
  6. float fleft, fright,fmid;
  7. left=-10.;
  8. right=10.;
  9. mid=(left+right)/2;
  10. fmid=2*mid*mid*mid-4*mid*mid+3*mid-6;
  11. while(fabs(fmid)>1e-6)
  12. {
  13. fleft=2*left*left*left-4*left*left+3*left-6;
  14. fright=2*right*right*right-4*right*right+3*right-6;
  15. if(fleft*fmid>0)
  16. left=mid;
  17. else
  18. right=mid;
  19. mid=(left+right)/2;
  20. fmid=2*mid*mid*mid-4*mid*mid+3*mid-6;
  21. }
  22. printf("%.2f\n",mid);
  23. return 0;
  24. }

♥希望能给大家一点帮助哦,别忘了点赞!!!                                                                                                                                        

posted @   傲骨风寒  阅读(1165)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示