基于Python的用牛顿迭代法求方程根代码
时间: 2024-09-13 12:19:22 浏览: 52
基于Python实现的牛顿迭代法求方程根
牛顿迭代法(Newton-Raphson method)是一种在实数域和复数域上近似求解方程的方法。对于方程f(x) = 0,从一个初始猜测值x0开始,牛顿迭代法的迭代公式为:
x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}
其中,f'(x)表示函数f(x)的导数。该方法通过迭代寻找方程的根,直到满足一定的误差范围或者达到预设的迭代次数为止。
下面是一个使用Python实现的牛顿迭代法求方程根的示例代码:
```python
def newton_method(f, df, x0, tolerance=1e-5, max_iterations=100):
"""
使用牛顿迭代法求方程的根
:param f: 目标函数
:param df: 目标函数的导数
:param x0: 初始猜测值
:param tolerance: 容忍误差,当相邻两次迭代的结果之差的绝对值小于该值时停止迭代
:param max_iterations: 最大迭代次数
:return: 方程的根
"""
xn = x0
for _ in range(max_iterations):
fxn = f(xn)
if abs(fxn) < tolerance:
return xn
dfxn = df(xn)
if dfxn == 0:
raise ValueError("导数为0,无法继续迭代")
xn = xn - fxn / dfxn
raise ValueError("超过最大迭代次数,未能找到根")
# 示例:求解方程x^2 - 2 = 0的根(即√2)
def f(x):
return x**2 - 2
def df(x):
return 2*x
root = newton_method(f, df, 1.0)
print("方程的根为:", root)
```
这段代码中,`newton_method`函数实现了牛顿迭代法的核心算法。通过传入目标函数`f`、目标函数导数`df`、初始猜测值`x0`以及可选的容忍误差`tolerance`和最大迭代次数`max_iterations`,函数将迭代求解方程的根。在示例中,我们用它来求解方程x^2 - 2 = 0的根,即求√2。
阅读全文