from sympy import symbols, diff, integrate, sympify import math # 定义符号变量x x = symbols("x") # 获取用户输入的方程表达式,并转换为Sympy表达式 f_str = input("请输入方程的表达式:") f = sympify(f_str) # 获取用户输入的初始值、极小值(收敛阈值)以及想要计算的次数 list_in = input("请输入初始值x,极小值sigma以及想要计算的次数:").split() x0 = float(list_in[0]) sigma = float(list_in[1]) N = int(list_in[2]) # 检查初始点处导数是否为0,若为0则直接输出初始点并退出程序 if diff(f).subs(x, x0) == 0: print(x0) exit(0) # 迭代次数计数器 account = 1 # 初始近似值 x_new = x0 # 开始牛顿迭代过程 while account <= N: # 根据牛顿迭代公式计算新的近似值 x_new = x0 - f.subs(x, x0) / diff(f).subs(x, x0) # 判断是否满足收敛条件 if math.fabs(x_new - x0) < sigma: print(x_new) break # 更新当前近似值 x0 = x_new # 迭代次数加1 account += 1 else: # 如果循环正常结束(未通过break跳出),说明未找到满足条件的解,输出提示信息 print("无法解出,不满足条件") 返回结果: