这是一个数据分析师的在线笔试编程题:不能使用数学库函数,求出一个数的算术平方根

是不是看的一脸懵逼?

这里就需要用到一个很常用的求解方法了 —— 牛顿迭代法,也被称作牛顿法 (Newton's Method)

牛顿法通过下面这个迭代公式来找到 f(x)=0 的解

那么这个公式到底是怎么来的呢?

原理

首先,f(x) 的值近似于其泰勒展开式:

如果只考虑前两项,我们就能得到一个近似等式

代入 f(x)=0,对 x 求解,我们就能得到一个近似解

由此我们就能得到上面的迭代公式

用动画来演示整个迭代过程图片来源:wikipedia(Ralf Pfeifer)

算术平方根求解

求一个数m的算术平方根,其实就是对

求解

将 f(x) 和 f'(x)=2x 代入上面的迭代公式,我们可以得到

Python代码实现

​这里我们还要注意要精确到小数点后四位,所以当两次迭代的近似解非常接近的时候,我们就可以结束迭代了

def newton(m):

x0 = m/2 #初始点,也可以是别的值

x1 = x0/2 + m/(x0*2)

while abs(x1-x0)>1e-5:

x0 = x1

x1 = x0/2 + m/(x0*2)

return x1

# 输出精确到小数点后四位

print( '%.4f'%newton(2) )

应用于最优化的牛顿法

牛顿法也可以应用于最优化问题,是一种被广泛使用并拓展的最优化算法

为了便于理解,我们以一维空间为例:假设 f(x) 是损失函数,我们的目标是找到能够使 f(x) 最小化的 x

即对 f'(x) = 0 求解

将牛顿法迭代公式中的 f(x) 替换为 f'(x),f'(x) 替换为 f''(x),我们得到新的迭代公式

多维空间下的最优化牛顿法以及拓展我会在接下来的文章中介绍,欢迎关注

牛顿法python代码_一文看懂牛顿法(附Python实现)相关推荐

  1. bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)

    1 引言 多层神经网络,Multiple-layers Perceptron (MLP),又被称为多层感知机,是机器学习中深度学习的典型算法.关于多层神经网络的算法原理,我们在Stata和R实现的文章 ...

  2. 数学建模python代码_主题模型 LDA 入门(附 Python 代码)

    一.主题模型 . m! g4 ~. ^3 |% A# f在文本挖掘领域,大量的数据都是非结构化的,很难从信息中直接获取相关和期望的信息,一种文本挖掘的方法:主题模型(Topic Model)能够识别在 ...

  3. angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作

    好文推荐,转自CSDN,原作星辰StarDust,感觉写的比自己清晰-大江狗荐语. 序列 序列是具有索引和切片能力的集合. 列表.元组和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力 ...

  4. ​【Python基础】一文看懂 Pandas 中的透视表

    作者:来源于读者投稿 出品:Python数据之道 一文看懂 Pandas 中的透视表 透视表在一种功能很强大的图表,用户可以从中读取到很多的信息.利用excel可以生成简单的透视表.本文中讲解的是如何 ...

  5. 判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...

    生成对抗网络 – GANs 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频.我们手机里的照片处理软件中就会使用到它. 本文将详细介绍生成对抗网络 – GANs 的设计初衷.基 ...

  6. java rest 序列化_一文看懂Java序列化

    一文看懂Java序列化 简介 首先我们看一下wiki上面对于序列化的解释. 序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓 ...

  7. 怎么看电脑系统是win几_一文看懂arm架构和x86架构有什么区别

    一文看懂arm架构和x86架构有什么区别 本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能.扩展能力.操作系统的兼容性.软件开发的方便性及可使用 ...

  8. 用户画像标签维度_一文看懂用户画像标签体系(包括维度、应用场景)

    一文看懂用户画像标签体系(包括维度.应用场景) 互联网相关企业在建立用户画像时一般除了基于用户维度(userid)建立一套用户标签体系外,还会基于用户使用设备维度(cookieid)建立相应的标签体系 ...

  9. 无处 不在的无线智能——6g 的关键驱动与研究挑战_一文看懂什么是 6G

    原标题:一文看懂什么是 6G 2020年行将结束,随着5G网络的建设推进,以及3GPP R16版本的冻结,越来越多的人将关注焦点转移到6G身上. 7月14日,韩国三星电子发布了白皮书<下一代超连 ...

最新文章

  1. u9系统的使用方法仓库_HPE产品认证证书查询系统使用方法
  2. mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解
  3. goland go test 多个文件_这个代码怎么会编译不通过?Goland 新手常见问题解决:GOPATH 和 Go Modules 编译不成功...
  4. 基础才是重中之重~开发人员应用学会用throw
  5. python如何循环使用input_python基础知识input到while循环
  6. 集合系列之fail-fast 与fail-safe 区别
  7. php中的CURL库
  8. 视频编码方案之间的比较(HEVC,H.264,MPEG2等)
  9. 3D建模设计软件Rhino 7 for Mac
  10. HTML+JS实现可编辑表格
  11. tomcat/redis/dubbo/netty
  12. 张国荣的25年演艺生涯
  13. FLASH(M25P16)-RDID时序代码及仿真波形(内含M25P16仿真模型文件)
  14. jquery boxy插件
  15. 区块链三加一告诉你如何快速了解区块链入门技术?
  16. java实现word,ppt,excel,jpg转pdf
  17. 听课记录高中计算机,高中听课记录
  18. 服务器运行一天死机,服务器死机怎么办?教你排除故障
  19. Redis五大数据类型常用命令
  20. 什么是嵌入式人工智能,它的实际应用

热门文章

  1. 山东大学matlab在哪,山东大学在哪?
  2. 基于射频CC2520 实现的ZigBee 通信设计
  3. 打开计算机硬盘有声音,硬盘吱吱响怎么回事?电脑硬盘响动原因和解决方法
  4. CAS操作以及ABA问题
  5. 路由器IOS升级应该注意七点细节
  6. 法那科机器人初始化启动_FANUC机器人程序自动启动介绍
  7. Zabbix-agent监控客户端
  8. 计算机毕业设计Python+uniapp客户拜访系统小程序(小程序+源码+LW)
  9. linux文件列表的理解,如何深刻理解 Linux 上的文件列表和排序?
  10. 微信查看共同好友python_微信中怎么查看共同好友?