首先让我们回顾下上节课讲的,用牛顿法计算√2的内容:

简单来说,牛顿法从x0=1不断向后计算逼近√2的值,而刚开始计算的精度是1,随着牛顿法的逼近(共log2d个循环),就能使得√2逼近值的精度达到d。在逼近过程中,精度的变化为Quadratic convergence二次收敛趋势(即1,2,4,6,....),为了证明这个,讲师给出了下图内容:

假设xn = √a (1+εn) 且εn随着n增加,不断趋于0,本质上来说就是xn = √a,加了(1+εn)是为了方便我们证明二次收敛的存在。之后根据牛顿法xi+1 = (xi + a/xi) /2对其进行xn+1的计算个,我们便能得到εn+1= εn/ 2(1+εn),而由于εn随着n增加,不断趋于0,所以(1+εn)本质为1,那么最后很容易就看出εn+1是跟εn成二次关系。

一、高精度乘法

另外上节课我们还讲了如何进行高精度乘法,这节课,讲师将它们总结并加以补充如下图所示:

以上五种方法,从上到下,时间复杂度逐渐减少,值得提到的就是,Toom-Cook方法本质跟Karatsuba方法一样的,只不过前者在数的拆分上多了一个而已,即前者为x0,x1,x2,而后者为x0,x1

二、高精度除法

问:如果我们想要计算一个关于a/b的高精度结果,该怎么做?

答:我们先计算R/b,然后对它结果向下取整,然后再用之前高精度乘法来乘a就好了。记住这里的R是一个非常大的值,特别的是R很容易除别人,例如R=2k这样的。

问:那请问R/b怎么计算

答:用牛顿法,具体过程如下图所示:

三、时间复杂度

问:高精度除法的时间复杂度是多少?

答,是Ο(log2n * nα),也可近似于Ο(nα),具体计算如下:

问:高精度乘法的时间复杂度是多少?

答,之前在第一部分就有不同方法下的时间复杂度,但总结来说就是Ο(nα) α≥1

问:高精度计算平方跟的时间复杂度是多少?

答:如下图所示,本质就是不断使用牛顿法配合高精度乘除法使用,结果近似为Ο(nα)。

有上面三个问题我们能得到:在时间复杂度上,高精度乘法 ≡ 高精度除法 ≡ 高精度求平方根 ≡ Ο(nα)。注意‘≡’为本质相同的意思,不代表完全相同,还是有略微差别的。

[MIT6.006] 12. Square Roots, Newton's Method 平方根,牛顿法的更多相关文章

  1. Square roots

    Loops are often used in programs that compute numerical results by starting with an approximate answ ...

  2. 牛顿法(Newton's Method)

    Newton's Method 在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓 ...

  3. 牛顿迭代法(Newton's Method)

    牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根. ...

  4. 牛顿方法(Newton's Method)

    在讲义<线性回归.梯度下降>和<逻辑回归>中我们提到可以用梯度下降或梯度上升的方式求解θ.在本文中将讲解另一种求解θ的方法:牛顿方法(Newton's method). 牛顿方 ...

  5. Newton's Method

    在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓慢.牛顿法(Newton's M ...

  6. UVA 1426 - Discrete Square Roots(数论)

    UVA 1426 - Discrete Square Roots 题目链接 题意:给定X, N. R.要求r2≡x (mod n) (1 <= r < n)的全部解.R为一个已知解 思路: ...

  7. Jacobian矩阵、Hessian矩阵和Newton's method

    在寻找极大极小值的过程中,有一个经典的算法叫做Newton's method,在学习Newton's method的过程中,会引入两个矩阵,使得理解的难度增大,下面就对这个问题进行描述. 1, Jac ...

  8. 【cs229-Lecture4】Newton’s method

    之前我们在求Logistic回归时,用的是梯度上升算法,也就是要使得似然函数最大化,利用梯度上升算法,不断的迭代.这节课引出牛顿方法,它的作用和梯度上升算法的一样的,不同的是牛顿方法所需的迭代次数更少 ...

  9. 牛顿迭代法(Newton's Method)

    牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程. ...

随机推荐

  1. SolrCloud搭建

    什么是SolrCloud? SolrCloud是基于 solr 和 zookeeper 的分布式搜索方案,它的主要思想是使用zookeeper作为SolrCloud集群的配置信息中心,统一管理Solr ...

  2. 持续集成工具之Jenkins使用配置

    在上一篇博客中,我们主要介绍了DevOps理念以及java环境和jenkins的安装,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13805666.html: ...

  3. PHP代码审计03之实例化任意对象漏洞

    前言 根据红日安全写的文章,学习PHP代码审计的第三节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完相关知识点,会用一道CTF题目来加深巩固.之前分别学习讲解了in_arr ...

  4. monolog封装

    做一下基本关于Monolog的基本介绍: Monolog是基于PHP的日志类库. 介绍就到这,言归正传 安装 安装最新版本:(composer 还没安装的~:https://www.phpcompos ...

  5. Logstash 国内加速下载 转

    Logstash. 国内直接从官网(https://www.elastic.co)下载比较困难,需要一些技术手段.这里提供一个国内的镜像下载地址列表,方便网友下载. 找不到想要的版本?您可以访问 索引 ...

  6. php查看进程

      index.php <?php /** * Created by PhpStorm. * User: mac * Date: 2020/4/23 * Time: 21:57 */ echo ...

  7. RabbitMQ消息队列总结

    AMQP[高级消息队列协议] 是一个异步消息传递所使用的应用层协议规范(是线路层协议)AMQP 客户端能够无视消息的来源任意发送和接受信息 队列的使用场景: 1.与业务的主要逻辑无关,但又需要执行,就 ...

  8. 小tip:CSS计数器+伪类实现数值动态计算与呈现【转】

    [原文]http://www.zhangxinxu.com/wordpress/2014/12/css-counters-pseudo-class-checked-numbers/ 一.CSS计数器为 ...

  9. Excel 导出的方法 之二

    // <summary> /// 导出到Excel lichenghu /// </summary> /// <param name="dt"> ...

  10. [C#] (原创)一步一步教你自定义控件——03,SwitchButton(开关按钮)

    一.前言 技术没有先进与落后,只有合适与不合适. 本篇的自定义控件是:开关按钮(SwitchButton). 开关按钮非常简单,实现方式也多种多样,比如常见的:使用两张不同的按钮图片,代表开和关,然后 ...