【題目描述】編寫程式,使用牛頓迭代法求方程
在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)