1. 程式人生 > 其它 >用牛頓法求正數的開方值

用牛頓法求正數的開方值

技術標籤:數值分析python

**

用牛頓法求正數的開方值

**

牛頓迭代公式形式:

在這裡插入圖片描述

程式碼:

#用牛頓法經過迭代求任意正數a的開方值
from sympy import *

def f(x,a):      #定義函式f,返回原方程
    return (x**2)-(a)

def f1(x):        #定義函式f1,返回函式導數
    return  2*x

def Newton(x0,a):
    for n in range(1,8):      #設定迴圈次數和n的起始值
        x1=x0-(f(x0,a)/(f1(x0)))
        m=x1-
x0 if abs(x1-x0)<10**-5: break else: x0 = x1 #上一步的計算結果賦值給x0,進行下一次迭代。 print("迭代次數:",n) print("迭代結果:","{0:.5f}".format(x1)) #結果保留五位小數 print("誤差:","{0:.5f}".format(abs(m)),'\n') Newton(
10,115) #呼叫Newton函式,迭代初始值為10,求115的開方值

結果:

迭代次數: 1
迭代結果: 10.75000
誤差: 0.75000 

迭代次數: 2
迭代結果: 10.72384
誤差: 0.02616 

迭代次數: 3
迭代結果: 10.72381
誤差: 0.00003 

結論:
從結果來看用牛頓迭代法求一個正數的開方值只需迭代很少次數就可以得到一個精度很高的近似值,所以牛頓法的收斂速度很快。