牛顿法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实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python批处理进行剪裁图片与图片拼接
- 下一篇: websocket python爬虫_p