牛顿法python代码_一文看懂牛顿法(附Python实现)
这是一个数据分析师的在线笔试编程题:不能使用数学库函数,求出一个数的算术平方根
是不是看的一脸懵逼?
这里就需要用到一个很常用的求解方法了 —— 牛顿迭代法,也被称作牛顿法 (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实现)相关推荐
- bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)
1 引言 多层神经网络,Multiple-layers Perceptron (MLP),又被称为多层感知机,是机器学习中深度学习的典型算法.关于多层神经网络的算法原理,我们在Stata和R实现的文章 ...
- 数学建模python代码_主题模型 LDA 入门(附 Python 代码)
一.主题模型 . m! g4 ~. ^3 |% A# f在文本挖掘领域,大量的数据都是非结构化的,很难从信息中直接获取相关和期望的信息,一种文本挖掘的方法:主题模型(Topic Model)能够识别在 ...
- angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作
好文推荐,转自CSDN,原作星辰StarDust,感觉写的比自己清晰-大江狗荐语. 序列 序列是具有索引和切片能力的集合. 列表.元组和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力 ...
- 【Python基础】一文看懂 Pandas 中的透视表
作者:来源于读者投稿 出品:Python数据之道 一文看懂 Pandas 中的透视表 透视表在一种功能很强大的图表,用户可以从中读取到很多的信息.利用excel可以生成简单的透视表.本文中讲解的是如何 ...
- 判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...
生成对抗网络 – GANs 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频.我们手机里的照片处理软件中就会使用到它. 本文将详细介绍生成对抗网络 – GANs 的设计初衷.基 ...
- java rest 序列化_一文看懂Java序列化
一文看懂Java序列化 简介 首先我们看一下wiki上面对于序列化的解释. 序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓 ...
- 怎么看电脑系统是win几_一文看懂arm架构和x86架构有什么区别
一文看懂arm架构和x86架构有什么区别 本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能.扩展能力.操作系统的兼容性.软件开发的方便性及可使用 ...
- 用户画像标签维度_一文看懂用户画像标签体系(包括维度、应用场景)
一文看懂用户画像标签体系(包括维度.应用场景) 互联网相关企业在建立用户画像时一般除了基于用户维度(userid)建立一套用户标签体系外,还会基于用户使用设备维度(cookieid)建立相应的标签体系 ...
- 无处 不在的无线智能——6g 的关键驱动与研究挑战_一文看懂什么是 6G
原标题:一文看懂什么是 6G 2020年行将结束,随着5G网络的建设推进,以及3GPP R16版本的冻结,越来越多的人将关注焦点转移到6G身上. 7月14日,韩国三星电子发布了白皮书<下一代超连 ...
最新文章
- u9系统的使用方法仓库_HPE产品认证证书查询系统使用方法
- mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解
- goland go test 多个文件_这个代码怎么会编译不通过?Goland 新手常见问题解决:GOPATH 和 Go Modules 编译不成功...
- 基础才是重中之重~开发人员应用学会用throw
- python如何循环使用input_python基础知识input到while循环
- 集合系列之fail-fast 与fail-safe 区别
- php中的CURL库
- 视频编码方案之间的比较(HEVC,H.264,MPEG2等)
- 3D建模设计软件Rhino 7 for Mac
- HTML+JS实现可编辑表格
- tomcat/redis/dubbo/netty
- 张国荣的25年演艺生涯
- FLASH(M25P16)-RDID时序代码及仿真波形(内含M25P16仿真模型文件)
- jquery boxy插件
- 区块链三加一告诉你如何快速了解区块链入门技术?
- java实现word,ppt,excel,jpg转pdf
- 听课记录高中计算机,高中听课记录
- 服务器运行一天死机,服务器死机怎么办?教你排除故障
- Redis五大数据类型常用命令
- 什么是嵌入式人工智能,它的实际应用
热门文章
- 山东大学matlab在哪,山东大学在哪?
- 基于射频CC2520 实现的ZigBee 通信设计
- 打开计算机硬盘有声音,硬盘吱吱响怎么回事?电脑硬盘响动原因和解决方法
- CAS操作以及ABA问题
- 路由器IOS升级应该注意七点细节
- 法那科机器人初始化启动_FANUC机器人程序自动启动介绍
- Zabbix-agent监控客户端
- 计算机毕业设计Python+uniapp客户拜访系统小程序(小程序+源码+LW)
- linux文件列表的理解,如何深刻理解 Linux 上的文件列表和排序?
- 微信查看共同好友python_微信中怎么查看共同好友?