牛顿迭代法python_python 牛顿迭代法
时间: 2023-10-13 09:19:05 浏览: 83
牛顿迭代法是一种求解方程的数值方法,可以用于求解非线性方程或函数的根。其基本思想是利用函数在某一点的斜率来逼近函数的零点。
在Python中,可以通过以下代码实现牛顿迭代法:
```python
def newton(f, df, x0, tol=1e-6, max_iter=100):
"""使用牛顿迭代法解方程 f(x) = 0"""
# 初始化迭代次数和当前估计值
n_iter = 0
x = x0
# 迭代直到收敛或达到最大迭代次数
while abs(f(x)) > tol and n_iter < max_iter:
x = x - f(x) / df(x)
n_iter += 1
# 如果达到最大迭代次数但仍未收敛,输出警告信息
if n_iter == max_iter and abs(f(x)) > tol:
print("Warning: Maximum number of iterations reached but did not converge!")
# 返回最终的估计值和迭代次数
return x, n_iter
```
其中,参数`f`和`df`分别是需要求解的方程和其导函数,`x0`是初始估计值,`tol`是迭代收敛的精度控制参数,`max_iter`是最大迭代次数。
例如,如果想要求解方程 $x^3 - 2x - 5 = 0$ 的根,可以定义如下的函数:
```python
def f(x):
return x**3 - 2*x - 5
def df(x):
return 3*x**2 - 2
x0 = 2 # 初始估计值
root, n_iter = newton(f, df, x0) # 调用牛顿迭代法函数
print("Root: {:.6f}".format(root))
print("Number of iterations: {}".format(n_iter))
```
输出结果为:
```
Root: 2.094551
Number of iterations: 5
```
可以看到,牛顿迭代法在5次迭代后收敛,得到的根为2.094551。
阅读全文