首页 > 其他分享 >何为迭代法

何为迭代法

时间:2023-01-03 14:59:21浏览次数:21  
标签:right 迭代 何为 mid 迭代法 x1 left

一、何为迭代法
  1. 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。利用迭代算法解决问题,需要做好以下三个方面的工作:
  2. a.确定迭代变量(本题可设 x[x+1]为x、x1为x[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. }

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

标签:right,迭代,何为,mid,迭代法,x1,left
From: https://www.cnblogs.com/lb2410625342/p/17022185.html

相关文章

  • 如何为npm包打补丁
    如何为npm包打补丁 我们在开发中经常遇到,npm包有点小问题或者不符合我们的场景。通常的解决方案,是提交一个issue或者PR,等待作者修改,又或者copy源码到本地,修改依赖指......
  • 如何为企业打造优质应用环境!华为云弹性服务器了解一下
    一个业务好不好最重要是取决于他的服务器,服务器好的话,能够给业务带来非常不错的应用环境,也能给使用者带来非常多的便利。所以说一个好的服务器是非常重要的,在众多服务器中,华......
  • 何为GUI???
    1.GUI是什么–简介GUI的全称为GraphicalUserInterface,图形化界面或图形用户接口,是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,......
  • Attention:何为注意力机制?
    ​ 本文来自公众号“AI大道理” 人类利用有限的注意力资源从大量信息中快速筛选出高价值信息,这是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了......
  • Vue技术6.2何为数据代理
    <!DOCTYPEhtml>><html><head><matacharset="UTF-8"/><title>何为数据代理</title></head><body><!--数据代理:通过一个对象代理对......
  • 疫情之下,IT部门该如何为企业创造更多价值?
    新经济时代的今天,IT部门俨然是现代企业的核心,首席信息官(CIO)也已成为企业的关键战略领导者。自19年疫情爆发以来,许多企业面临着众多困难和挑战,IT部门担起大任,为企业​​数字......
  • 2023临近,如何为您的企业正确选择数据标注供应商
    2022已经接近尾声,我们艰难地走过了这一年,不过我们有理由相信2023年将是一个新的起点,冰山数据在这一年中也铆足干劲为服务升级做好了充分的准备,我们始终保持我们的全球化和自......
  • 【机器学习】李宏毅——何为反向传播
    回顾一下梯度下降的过程:假设当前神经网络有以下参数\(\theta=\{\omega_1,\omega_2,...,b_1,b_2,...\}\),那么梯度下降就是计算损失函数对于每个参数的梯度,然后按照梯度更......
  • Azure 解决方案:如何为Azure VM配置加密策略
    51CTO博客地址:​​https://blog.51cto.com/14669127​​Azure培训视频地址:​​https://space.bilibili.com/2000820534​​为了避免我们使用云端资源数据泄露,我们也需要考......
  • 如何为管理者设计 360 评估调查题目?
    宣布360评估通常会使管理人员不稳定。同事、下属、管理层甚至客户和供应商通过预先制定的问卷来反馈。360评估可以采用多种形式:从50到300多个问题,例如使用开放式或......