增補部落格 第二十二篇 python 牛頓迭代法

财神给你送元宝發表於2024-06-14

【題目描述】編寫程式,使用牛頓迭代法求方程
圖片1.png
在x附近的一個實根。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。
【輸入格式】請在一行中輸入方程係數a、b、c、d和實數x,資料中間以空格為間隔。
【輸出格式】對每一組輸入的資料,輸出牛頓迭代法求出的實根(格式為保留小數點後2位,四捨五入)。
【輸入樣例】1.0 2.0 3.0 4.0 1.0
【輸出樣例】-1.65

def solution(a, b, c, d):


    x = 1.5
    x0 = x  # 用所求得的x值代替x0原來的值
# f用來描述方程的值,fd用來描述方程求導之後的值
    f = a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d
    fd = 3 * a * x0 * x0 + 2 * b * x0 + c
    h = f / fd
    x = x0 - h  # 求得更接近方程根的x值
    while abs(x - x0) >= 1e-5:
        x0 = x
        f = a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d
        fd = 3 * a * x0 * x0 + 2 * b * x0 + c
        h = f / fd
        x = x0 - h  # 求得更接近方程根的x值
        return x
if __name__ == '__main__':
    print("請輸入方程的係數:")
# a,b,c,d代表所求方程的係數
a, b, c, d = map(float, input().split())
print("方程的引數為:", a, b, c, d)
# x用來記錄求得的方程根
x = solution(a, b, c, d)
print("所求方程的根為x=%.6f" % x)

  

相關文章