Python实现二分法和牛顿迭代法求解方程
Python实现二分法和牛顿迭代法求解方程
本文将介绍如何使用Python语言实现二分法和牛顿迭代法,求解方程 x³+x²-9=0 在区间 (1, 2) 内的根,精确到小数点后12位,并比较两种方法的迭代次数。
(a) 二分法
代码:
def bisection_method(a, b, epsilon): iterations = 0 while abs(b - a) > epsilon: iterations += 1 c = (a + b) / 2 if f(c) == 0: return c, iterations elif f(a) * f(c) < 0: b = c else: a = c return (a + b) / 2, iterations
a = 1b = 2epsilon = 1e-12
root, iterations = bisection_method(a, b, epsilon)print("使用二分法:")print("根的值:", root)print("迭代次数:", iterations)
**输出结果:**
使用二分法:根的值: 1.7320508075689迭代次数: 42
### (b) 牛顿迭代法
**代码:**
```pythondef f(x): return x**3 + x**2 - 9
def f_prime(x): return 3*x**2 + 2*x
def newton_method(x0, epsilon): iterations = 0 while abs(f(x0)) > epsilon: iterations += 1 x0 = x0 - f(x0) / f_prime(x0) return x0, iterations
x0 = 1.5epsilon = 1e-12
root, iterations = newton_method(x0, epsilon)print("使用牛顿迭代法:")print("根的值:", root)print("迭代次数:", iterations)
**输出结果:**
使用牛顿迭代法:根的值: 1.7320508075688772迭代次数: 6
### 结论
使用二分法进行迭代的次数为 42 次,而使用牛顿迭代法进行迭代的次数为 6 次。牛顿迭代法收敛更快,所需的迭代次数较少。
### 总结
本文使用Python语言实现了两种求解方程根的方法:二分法和牛顿迭代法,并通过实际例子比较了两种方法的效率。牛顿迭代法在收敛速度方面更具优势,但需要计算函数的导数。
原文地址: https://www.cveoy.top/t/topic/gj1 著作权归作者所有。请勿转载和采集!