This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
def newton_method(f, f_prime, x0, tol=1e-6, max_iter=100):
"""
牛顿迭代法计算函数值为0的解
参数:
- f: 要求解的函数
- f_prime: 函数的导数
- x0: 初始猜测值
- tol: 容差(迭代停止的条件,可选,默认为1e-6)
- max_iter: 最大迭代次数(可选,默认为100)
返回:
- 解的近似值
x = x0 # 初始猜测值
for _ in range(max_iter):
fx = f(x) # 函数值
if abs(fx) < tol:
# 已达到容差要求,返回解的近似值
return x
fpx = f_prime(x) # 函数的导数值
if abs(fpx) < tol:
# 导数值过小,无法继续迭代
break
x -= fx / fpx # 牛顿迭代公式
# 迭代未收敛或超过最大迭代次数,返回None表示未找到解
return None
def f(x):
return x**2 - 4
def f_prime(x):
return 2 * x
x0 = 1 # 初始猜测值
solution = newton_method(f, f_prime, x0)
print("解的近似值:", solution)