用牛顿法在范围内求解近似解
时间: 2023-06-16 08:03:45 浏览: 42
牛顿法是一种迭代法,用于求解方程 $f(x) = 0$ 的近似解。它的基本思想是:在当前点 $x_n$ 处,利用函数 $f(x)$ 和它的导数 $f'(x)$ 构造一条切线,然后求出这条切线与 $x$ 轴的交点,作为下一个近似解 $x_{n+1}$。具体来说,牛顿法的迭代公式为:
$$
x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}
$$
为了保证牛顿法的收敛性,需要满足一定的条件,其中最重要的是 $f(x)$ 在 $[a,b]$ 上是连续可导的,并且 $f'(x)$ 在 $[a,b]$ 上不为零。
下面是使用牛顿法求解方程 $x^3 - 2x - 5 = 0$ 的近似解的 Python 代码:
```python
def f(x):
return x**3 - 2*x - 5
def df(x):
return 3*x**2 - 2
def newton_method(f, df, x0, eps=1e-6, max_iter=100):
x = x0
for i in range(max_iter):
fx = f(x)
if abs(fx) < eps:
return x
dfx = df(x)
if dfx == 0:
return None
x -= fx / dfx
return None
x0 = 1.0 # 初始点
x = newton_method(f, df, x0)
if x is not None:
print("近似解为:", x)
else:
print("牛顿法无法收敛")
```
这里的 $f(x)$ 和 $f'(x)$ 分别为方程 $x^3 - 2x - 5 = 0$ 和它的导数 $3x^2 - 2$,初始点为 $x_0 = 1.0$,收敛精度为 $10^{-6}$,最大迭代次数为 $100$。