首先让我们回顾下上节课讲的,用牛顿法计算√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. shell-变量输入内置read命令详解

    1. shell变量的输入 shell变量除了可以直接赋值或脚本传参外,还可以使用read命令从标准输入得. [语法格式] read [参数] [变量名] [常用参数] -p:指定读取值时的提示符: ...

  2. mysql linux 命令行操作

    1. 登录mysql      mysql -u 用户名 -p    回车输入密码 

  3. css做模糊处理

    -webkit-filter: blur(9px); filter: blur(9px);

  4. 多测师_肖sir _python 练习题(一)100以内奇数,偶数,质数胡计算

    (1)求1~100的和方法: 方法一:print(sum(range(1,101))) 方法二: sum1 = 0 i = 1 while True: sum1 = sum1 + i if i == ...

  5. jquery的实时触发事件(textarea实时获取中文个数)

    jquery的实时触发事件(textarea实时获取中文个数) (2014-09-16 11:49:50) 转载▼ 标签: 实时触发事件 中文个数 onpropertychange oninput o ...

  6. 【树形DP】BZOJ 3829 Farmcraft

    题目内容 mhy住在一棵有n个点的树的1号结点上,每个结点上都有一个妹子i. mhy从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装zhx牌杀毒软件,第i个妹子安装时间为Ci. ...

  7. 【9】进大厂必须掌握的面试题-DevOps面试

    Q1.DevOps和Agile之间的根本区别是什么? 下表中列出了两者之间的差异. 特征 DevOps--开发运维 Agile--敏捷 敏捷 开发和运营中的敏捷性 只有发展才能敏捷 流程/实践 涉及C ...

  8. RabbitMQ消息队列总结

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

  9. phpexcel导出数据 出现Formula Error的解决方案

    phpexcel导出数据报错 Uncaught exception 'Exception' with message 'Sheet1!A1364 -> Formula Error: Unexpe ...

  10. Python之包的相关

    包的产生: 由于模块不断更新,越写越大,仅用单个py文件会使模块逻辑不够清晰,所以需要将模块的不同功能放入不同的py文件,然后将所有py文件放在一个目录内,这个目录就是包 包就是一个包含用__init ...