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

牛顿迭代公式

  设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式

  解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +…
取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=0
设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。

牛顿迭代法示意图

  军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。也就是A始终在B的前面,A向前迈进,B跟上,A把自己的位置交给B(即执行B
= A操作),然后A 再前进占领新的位置,B再跟上……直到占领所有的阵地,前进结束。像这种两个数一前一后逐步向某个位置逼近的方法称之为迭代法。

  迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代算法是用计算机解决问题的一种基该方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

  利用迭代算法解决问题,需要做好以下三个方面的工作:

  一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

 

二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

  三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。 (摘自百度百科:http://baike.baidu.com/view/643093.htm)

参考代码如下:

/**

只考虑非负实数的算术平方根,

如果要考虑完全,则自己再修改

*/

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    double a ;
    cin>>a ;
    double x = 1 ;
    while(x*x - a > 0.0000001 || x*x - a < -0.0000001)
    {
       x = (x + a/x)/2 ;
    }
    cout<< fabs(x) ;
    return 0;
}

转载于:https://www.cnblogs.com/ronaldHU/archive/2012/10/07/2714344.html

牛顿迭代法求求一个数的算术平方根相关推荐

  1. 牛顿迭代法求一个数的平方根

    设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0), 求出L与x轴交点的横坐标 x1 ...

  2. 牛顿迭代法求一个数的平方根(python)

    # !/usr/bin/env python # -*- coding: utf-8 -*- """ @Author: P♂boy @License: (C) Copyr ...

  3. 起一个数的平方根_使用二分法计算一个数的算术平方根

    在Python中计算一个数的算术平方根其实很简单,可以使用pow()函数.如计算100的算术平方根: 但是呢,为了学习使用二分法这种思想,我们特意将简单问题稍微复杂化一下~ 所谓的二分是指取中间值的意 ...

  4. 牛顿迭代法求一个数的立方根、平方根

    // 不调用原有的库函数,求一个数的立方根.平方根 ------牛顿迭代法,不得不说牛顿太伟大了! 我们现在先求平方根: 设函数 f(x) = x^2 - a  ,那么求 a 的平方根等价于求 f(x ...

  5. 数算(Python)——牛顿迭代法(巴比伦算法)求解平方根

    计算x\sqrt{x}x​的方法 巴比伦算法: 猜测一个大于0近似值.x0x_{0}x0​ 使用被开方数除以近似值.xx0\frac{x}{x_{0}}x0​x​ 计算前两步的数的平均值.x1=12( ...

  6. python利用二分法实现求一个数的算术平方根

    本题来源与leetcode的69.x的平方根,原文连接: x 的平方根 https://leetcode.cn/problems/sqrtx/题目如下: 对于这个题目,我们首先从二分查找的根本出发,定 ...

  7. 牛顿迭代法求一个数开方

    牛顿迭代法.用牛顿迭代法求x=a√, 令x初始值为a,迭代公式为Xn+1=12(Xn+aXn),要求迭代的精度满足∣∣Xn+1−Xn∣∣<0.00001.如果迭代20次之后仍未能达到精度要求,也 ...

  8. 三十六.用牛顿迭代法求输入的数的平方根

    **欲求a的平方根,首先猜测一个值x1=a/2(也可以是随便其他什么值)作为其平方根,然后根据下面的迭代公式算出x2,再将x2代入公式右边算出x3--直到连续两次算出的xn和xn+1的差的绝对值小于某 ...

  9. 用计算机算算术平方根顺序是ON然后是什么,第2课时用计算器求一个正数的算术平方根.ppt...

    1.比较下列各组数的大小: (1) 与 (2) 与 8 依次按键 显示:1.732 050 808 例3 小丽想用一块面积为400 cm2的正方形纸片,沿着边的方向剪出一块面积为300 cm2的长方形 ...

  10. java 牛顿迭代算术平方根,牛顿迭代法求n方根

    一.简单推导 二.使用 借助上述公式,理论上可以求任意次方根,假设要求a(假设非负)的n次方根,则有xn=a,令f(x)=xn-a,则只需求f(x)=0时x的值即可.由上述简单推导知,当f(x)=0时 ...

最新文章

  1. 沈志康奖教金 计算机学院,天津大学机械工程学院
  2. APT 信息收集——shodan.io ,fofa.so、 MX 及 邮件。mx记录查询。censys.io查询子域名。...
  3. python操作RabbitMQ
  4. 用 JMX 检测应用程序
  5. nyoj 211 (Floyd算法求传递闭包)
  6. html在线编辑器 asp.net,ASP.NET网站使用Kindeditor富文本编辑器配置步骤
  7. 显示和快速隐藏Mac桌面所有图标
  8. 【转】C++/CLI入门系列 第二篇:封装C++ dll库,提供接口给C#调用
  9. 数据结构实验之二叉树四:还原二叉树
  10. C语言 goto 语句 - C语言零基础入门教程
  11. network3D 交互式网络生成
  12. 5G关键技术研究方向
  13. 【Spring第四篇】DI注入以及c、p命名空间
  14. PCL_基于多项式拟合的法线估计、点云平滑和数据重采样_报错
  15. Atitit.vs2017 visual studio vs2003 vs2005 vs2008 VS2010 vs2012 vs2015新特性 新功能.docx Atitit. visual st
  16. c#中regex的命名空间_C# Regex类用法
  17. 二维码怎么知道自己被扫描 ()==> java 篇 带一点点(Android)
  18. 不同系统下的shell的不同_不同地区不同气候条件下杉木成材时间的区别
  19. 乐视账号服务器关闭,乐视手机重置后无法登录账号 官方给出解决方案
  20. EasyExcel的导入和导出

热门文章

  1. mui+hbuilder h5+内置获取当前地理位置以及各种权限 兼容iOS/安卓
  2. 图文讲解如何在outlook里设置绑定Gmail企业邮箱教程
  3. EDA 电子设计自动化VHDL系列课程12 – 用点阵显示器 设计彩灯或动画
  4. drupal html5,基于Drupal 7HTML5布局模板二次开发.doc
  5. instant-ngp总结
  6. YouTube上的版权保护
  7. Something about ...
  8. 重装系统后Oracle数据库恢复的方法
  9. 解决模拟人生3(SIM 3)闪退问题
  10. 计算机科学与技术工程师职称考试试题,2018年下半年网络工程师考试下午试题及答案...