牛頓迭代演算法求根

2021-09-17 07:27:31 字數 844 閱讀 1082

公式推導:f(xn)+f『(xn)*(x-xn)(切線方程)

讓求解的切線方程為0,即:f(xn)+f『(xn)*(xn+1 - xn)=0

進而推導出:xn+1 = xn - f(xn)/f『(xn)

當xn+1 與xn之間差值無限接近時,即得到最終解。

例如求取方根,令f(xn)= xn^2 - n 代入即可 

python3.5**實現:

#coding:__utf-8__

import math

class solution:

def qiugen(self,n,m):

"""牛頓迭代法

公式:xn+1 = xn - f(xn) / f'(xn)

:param n: 要求根的數

:param m: 求根次數

:return:

"""eps = 0.0001 #精度

result = float(n)

while true:

last_value = result

result = (m - 1) / m * result + n / m / result**(m-1)

if math.fabs(result - last_value) < eps:

break

print(result)

if __name__ == "__main__":

sl = solution()

# n, m = map(int, input().split(' '))

sl.qiugen(125,3)

相關理解:

牛頓迭代法求根

給定乙個正數a,不用庫函式求其平方根。設其平方根為x,則有x2 a,即x2 a 0。設函式f x x2 a,則可得圖示紅色的函式曲線。在曲線上任取一點 x0,f x0 其中x0 0那麼曲線上該點的切線方程為 求該切線與x軸的交點得 因為1 2式中x0作為分母,所以在之前限定了一下初始值不要選0。那麼...

牛頓迭代法求根

幫朋友做的乙個題目,關於牛頓迭代法求方程的根.不難,但是費了我很長時間,以前的知識,重新拾起來卻很耗時間。今天做一記錄,一來加深印象,二來備必要時檢視。1 牛頓迭代法的基本知識 參考資料 newton s method and loops 上面的資料闡述很詳細,我就不多加補充。2 問題簡述 用牛頓迭...

牛頓迭代法 求 根

這是乙個求根很牛皮的乙個方法,迭代幾次後精度也變得非常的高了.假設我們求 2的值,用牛頓迭代法.大致過程就是隨便選取乙個自認為離根比較近的,離譜點也沒事,假如選x 4,然後不斷進行如下操作 不斷令 x x f x f x f x x 2 a a 2 所以就是 x 4 14 8 2.25 再一次 x ...