分别用对分区间法和迭代法求解方程:x 3 −3x−1 = 0, 在[1,2]上的根, 精度 0.5e-1的python代码
时间: 2023-09-22 21:05:42 浏览: 80
对分区间法和迭代法是求解非线性方程的两种常见方法。下面是使用这两种方法求解方程 $x^3 - 3x - 1 = 0$ 在 $[1,2]$ 区间上根的Python代码,精度为 $0.5 \times 10^{-1}$:
对分区间法:
```python
def f(x):
return x**3 - 3*x - 1
# 定义区间
a, b = 1, 2
# 定义精度
epsilon = 0.5e-1
# 迭代次数
n = int(np.log2((b-a)/epsilon))
# 对分区间法求解
for i in range(n):
c = (a + b) / 2
if f(c) == 0:
break
elif f(a) * f(c) < 0:
b = c
else:
a = c
# 输出结果
print("使用对分区间法求解,方程的根为:", c)
```
迭代法:
```python
def g(x):
return (x**3 - 1) / 3
# 定义初始值
x0 = 2
# 定义精度
epsilon = 0.5e-1
# 迭代求解
while True:
x1 = g(x0)
if abs(x1 - x0) < epsilon:
break
x0 = x1
# 输出结果
print("使用迭代法求解,方程的根为:", x1)
```
在对分区间法中,我们首先定义了函数 $f(x)$,然后定义区间 $[a,b]$ 和精度 $\epsilon$。然后,我们计算迭代次数 $n$,并进行 $n$ 次迭代,每次迭代都将区间 $[a,b]$ 对分,然后根据 $f(a)$ 和 $f(c)$ 的符号判断根所在的区间,并更新 $a$ 或 $b$。最终的根为区间 $[a,b]$ 的中点。
在迭代法中,我们首先定义了函数 $g(x)$,然后定义初始值 $x_0$ 和精度 $\epsilon$。然后,我们使用迭代公式 $x_{n+1} = g(x_n)$ 进行迭代,直到 $|x_{n+1} - x_n| < \epsilon$,即满足精度要求为止。最终的根为迭代的最后一个值 $x_n$。
阅读全文