python实现牛顿法_牛顿迭代法Python实现
时间: 2023-11-05 19:28:21 浏览: 146
好的,下面是牛顿迭代法的 Python 实现:
```python
def newton_method(f, df, x0, epsilon=1e-7, max_iter=100):
"""
牛顿迭代法求解方程 f(x)=0 的根
:param f: 目标函数
:param df: 目标函数的导数
:param x0: 初值
:param epsilon: 精度要求
:param max_iter: 最大迭代次数
:return: 方程 f(x)=0 的根
"""
x = x0
for i in range(max_iter):
fx = f(x)
if abs(fx) < epsilon:
return x
dfx = df(x)
if abs(dfx) < epsilon:
raise ValueError("导数为0")
x = x - fx / dfx
raise ValueError("超过最大迭代次数")
```
其中,参数 `f` 是目标函数,参数 `df` 是目标函数的导数,参数 `x0` 是初值,参数 `epsilon` 是精度要求,默认为 `1e-7`,参数 `max_iter` 是最大迭代次数,默认为 `100`。
例如,我们可以使用牛顿迭代法求解方程 $x^3 - x - 1 = 0$ 的根,代码如下:
```python
def f(x):
return x ** 3 - x - 1
def df(x):
return 3 * x ** 2 - 1
x0 = 1.0
x = newton_method(f, df, x0)
print(x) # 输出 1.324717957244746
```
在上述代码中,`f` 和 `df` 分别是方程 $x^3 - x - 1 = 0$ 和它的导数 $3x^2 - 1$,初值 `x0` 取为 `1.0`,最终求出的根为 `1.324717957244746`。
阅读全文