1.基本概念
二分法(Bisection method)是一种常用的数值计算方法,用于求解连续函数的根(即方程 f(x) = 0 的解)。它基于连续函数在区间上的中值定理,通过不断缩小区间范围来逼近方程的解。
设函数f(x)在区间[a,b]上单调连续,且 f(a)·f(b)<0,则方程f(x)=0在区间(a,b)内有且仅有一个实根x。
2.代码实现
下面简单实现方程 f(x)=x^3-x-1=0在1到1.5之间的根。要求用四位小数计算,精确到10-2
"""
@Time : 2023/11/12 0012 15:57
@Auth : yeqc
"""
# 初始区间
left = 1
right = 1.5
N = 1000 # 最大迭代次数
epsilo = 10**(-10)
def function(x):
return x ** 3 - x - 1
for i in range(0, N):
center = (left + right) / 2
f_left = function(left)
f_right = function(right)
f_center = function(center)
if f_left * f_center < 0:
right = center
elif f_center * f_right < 0:
left = center
print(f"结果: i = {i}, x = {center}, y = {function(center)}")
# 区间小于10-2或者函数值小于10-2 跳出循环
if (right - left) < epsilo or abs(f_center) < epsilo:
break