问题是,用二分法在[0,1]内求e^x+10x-2=0的近似跟,要求误差不超过0.5×(10负三次幂)
对于误差这里,我不知道应该怎么处理,但是实验结果给的是0.09033,我想那只要算出来的结果比0.09033大,就都在循环内,所以循环的条件就设置成了0.09033
思路:用if语句判断将二分点代入,如果满足判断则输出二分点的值,如果不满足就判断0代入方程的值和第一个二分点代入方程的值是否满足小于0,如果满足就改变0为二分点,然后重新得出新的二分点。
错误:不知道为啥没有输出

问题是,用二分法在[0,1]内求e^x+10x-2=0的近似跟,要求误差不超过0.5×(10负三次幂)
对于误差这里,我不知道应该怎么处理,但是实验结果给的是0.09033,我想那只要算出来的结果比0.09033大,就都在循环内,所以循环的条件就设置成了0.09033
思路:用if语句判断将二分点代入,如果满足判断则输出二分点的值,如果不满足就判断0代入方程的值和第一个二分点代入方程的值是否满足小于0,如果满足就改变0为二分点,然后重新得出新的二分点。
错误:不知道为啥没有输出

二分法求近似解,x=(a+b)/2,你都写成x = a+b/2了,逻辑完全错了。结果是你算出来的,不能直接写在代码中。
代码如下:
import math
pd = 0.0005 # 偏差
left = 0 #左侧起点
right = 1 #右侧终点
x = (left+right)/2 #中间点
# 计算3个值
f = math.exp(x)+10*x-2
f1 = math.exp(left) + 10*left -2
f2 = math.exp(right) + 10*right -2
while math.fabs(f) >= pd:
if (f1*f > 0) and (f2*f < 0):
left = x
x = (left+right)/2
f = math.exp(x) + 10 * x - 2
f1 = math.exp(left) + 10 * left - 2
f2 = math.exp(right) + 10 * right - 2
elif (f1*f < 0) and (f2*f > 0):
right = x
x = (left+right)/2
f = math.exp(x) + 10 * x - 2
f1 = math.exp(left) + 10 * left - 2
f2 = math.exp(right) + 10 * right - 2
else:
break
if f > pd:
print("无根")
else:
print(x)