用Python写出牛顿迭代法
时间: 2023-11-16 20:10:42 浏览: 112
牛顿迭代法是一种数值计算方法,用于求解方程的根。其基本思想是利用函数在某一点的切线来逼近函数的零点,并以该点作为下一次迭代的起点,直至收敛于方程的根。
以下是使用Python编写的牛顿迭代法的示例代码:
```python
def newton(f, df, x0, tol=1e-6, max_iter=100):
"""
使用牛顿迭代法求解方程 f(x) = 0 的根。
:param f: 函数 f(x)
:param df: 函数 f(x) 的导数 df(x)
:param x0: 初始值 x0
:param tol: 容差(默认值为1e-6)
:param max_iter: 最大迭代次数(默认值为100)
:return: 迭代结果 x
"""
x = x0
for i in range(max_iter):
fx = f(x)
if abs(fx) < tol:
return x
dfx = df(x)
if dfx == 0:
raise ValueError("导数为0,无法继续迭代!")
x = x - fx / dfx
raise ValueError("迭代次数超过最大次数,无法求解!")
```
其中,参数`f`是待求解的方程,参数`df`是方程的导数,`x0`是初始值,`tol`是容差(默认为1e-6),`max_iter`是最大迭代次数(默认为100)。
例如,求解方程x^3 - 5x + 3 = 0的根,可以使用以下代码:
```python
f = lambda x: x**3 - 5*x + 3
df = lambda x: 3*x**2 - 5
x0 = 1.5
solution = newton(f, df, x0)
print(solution)
```
输出结果为:
```
1.347295151999865
```
表示方程的一个根为1.347295151999865。
阅读全文