[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) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程. ...
随机推荐
- SolrCloud搭建
什么是SolrCloud? SolrCloud是基于 solr 和 zookeeper 的分布式搜索方案,它的主要思想是使用zookeeper作为SolrCloud集群的配置信息中心,统一管理Solr ...
- 持续集成工具之Jenkins使用配置
在上一篇博客中,我们主要介绍了DevOps理念以及java环境和jenkins的安装,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13805666.html: ...
- PHP代码审计03之实例化任意对象漏洞
前言 根据红日安全写的文章,学习PHP代码审计的第三节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完相关知识点,会用一道CTF题目来加深巩固.之前分别学习讲解了in_arr ...
- monolog封装
做一下基本关于Monolog的基本介绍: Monolog是基于PHP的日志类库. 介绍就到这,言归正传 安装 安装最新版本:(composer 还没安装的~:https://www.phpcompos ...
- Logstash 国内加速下载 转
Logstash. 国内直接从官网(https://www.elastic.co)下载比较困难,需要一些技术手段.这里提供一个国内的镜像下载地址列表,方便网友下载. 找不到想要的版本?您可以访问 索引 ...
- php查看进程
index.php <?php /** * Created by PhpStorm. * User: mac * Date: 2020/4/23 * Time: 21:57 */ echo ...
- RabbitMQ消息队列总结
AMQP[高级消息队列协议] 是一个异步消息传递所使用的应用层协议规范(是线路层协议)AMQP 客户端能够无视消息的来源任意发送和接受信息 队列的使用场景: 1.与业务的主要逻辑无关,但又需要执行,就 ...
- 小tip:CSS计数器+伪类实现数值动态计算与呈现【转】
[原文]http://www.zhangxinxu.com/wordpress/2014/12/css-counters-pseudo-class-checked-numbers/ 一.CSS计数器为 ...
- Excel 导出的方法 之二
// <summary> /// 导出到Excel lichenghu /// </summary> /// <param name="dt"> ...
- [C#] (原创)一步一步教你自定义控件——03,SwitchButton(开关按钮)
一.前言 技术没有先进与落后,只有合适与不合适. 本篇的自定义控件是:开关按钮(SwitchButton). 开关按钮非常简单,实现方式也多种多样,比如常见的:使用两张不同的按钮图片,代表开和关,然后 ...