[MIT6.006] 12. Square Roots, Newton's Method 平方根,牛顿法
首先让我们回顾下上节课讲的,用牛顿法计算√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= εn2 / 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 平方根,牛顿法的更多相关文章
- Square roots
Loops are often used in programs that compute numerical results by starting with an approximate answ ...
- 牛顿法(Newton's Method)
Newton's Method 在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓 ...
- 牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根. ...
- 牛顿方法(Newton's Method)
在讲义<线性回归.梯度下降>和<逻辑回归>中我们提到可以用梯度下降或梯度上升的方式求解θ.在本文中将讲解另一种求解θ的方法:牛顿方法(Newton's method). 牛顿方 ...
- Newton's Method
在求最优解时,前面很多地方都用梯度下降(Gradient Descent)的方法,但由于最优步长很难确定,可能会出现总是在最优解附近徘徊的情况,致使最优解的搜索过程很缓慢.牛顿法(Newton's M ...
- UVA 1426 - Discrete Square Roots(数论)
UVA 1426 - Discrete Square Roots 题目链接 题意:给定X, N. R.要求r2≡x (mod n) (1 <= r < n)的全部解.R为一个已知解 思路: ...
- Jacobian矩阵、Hessian矩阵和Newton's method
在寻找极大极小值的过程中,有一个经典的算法叫做Newton's method,在学习Newton's method的过程中,会引入两个矩阵,使得理解的难度增大,下面就对这个问题进行描述. 1, Jac ...
- 【cs229-Lecture4】Newton’s method
之前我们在求Logistic回归时,用的是梯度上升算法,也就是要使得似然函数最大化,利用梯度上升算法,不断的迭代.这节课引出牛顿方法,它的作用和梯度上升算法的一样的,不同的是牛顿方法所需的迭代次数更少 ...
- 牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程. ...
随机推荐
- Docker学习:(一)初识Docker
Docker(容器虚拟化技术)要点(秒级启动) Docker的WWH公式学习 What[是什么]. Why[为什么要用它]. How[怎么用] 1.Docker简介 (1)问题:为什么会有docker ...
- 从Linux源码看Socket(TCP)的bind
从Linux源码看Socket(TCP)的bind 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情. 今天笔者就来从Linux源码的角度看下Server ...
- Verilog基础入门——Vivado工程创建(三)
Verilog基础入门--Vivado工程创建(三) Vivado是Verilog语言的一个集成环境,目前使用的版本为英文版,简单介绍一下在Vivado中创建一个工程并写入源文件 [配置] win10 ...
- 【C语言编程学习笔记】利用462字节代码实现雅虎logo ACSII 动画!
ACSII 动画演示: 不过本文介绍的是另一个作品:c 代码实现雅虎 logo ACSII 动图. 运行后,你将会看到: 它是一个 20fps.抗锯齿的 Yahoo! logo ASCII 动 ...
- 《我想进大厂》之Dubbo普普通通9问
这是面试专题系列第四篇,Dubbo系列.Dubbo本身并不复杂,而且官方文档写的非常清楚详细,面试中dubbo的问题一般不会很多,从分层到工作原理.负载均衡策略.容错机制.SPI机制基本就差不多了,最 ...
- spring boot:spring security整合jwt实现登录和权限验证(spring boot 2.3.3)
一,为什么使用jwt? 1,什么是jwt? Json Web Token, 它是JSON风格的轻量级的授权和身份认证规范, 可以实现无状态.分布式的Web应用授权 2,jwt的官网: https:// ...
- Rust借用机制的理解分析
Rust初学者大多会遇到这样的问题: 为什么同一资源不可被同时可变借用和不可变借用? 为什么Rc一定只能是只读的,一定要配合std::cell系列(Cell,RefCell,UnsafeCell)才能 ...
- spring cloud gateway整合sentinel作网关限流
说明: sentinel可以作为各微服务的限流,也可以作为gateway网关的限流组件. spring cloud gateway有限流功能,但此处用sentinel来作为替待. 说明:sentine ...
- Hbase实用技巧:全量+增量数据的迁移方法
摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...
- robotframework执行自动化不能转换为h5页面的问题解决
电脑换成win10后,搭建了robotframework环境,执行自动化发现页面不支持h5页面了.请教了大佬,解决办法如下: 1.切换到DOS环境下,执行pip list命令,查看selenium2l ...