You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.1 KiB

This file contains ambiguous Unicode characters!

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
if __name__ == '__main__':
x0 = 1 # 初始猜测值
solution = newton_method(f, f_prime, x0)
print("解的近似值:", solution)