【问题描述】
现有方程:f(x) = x5-15x4+85x3-225x2+274x-121, 已经f(x)在[1.5,2.4]区间有且只有一个根,用二分法求解该根。
【输入形式】
输入一个正整数n,当f(x)值小于10-n时认为函数值为0
【输出形式】
输出方程在[1.5,2.4]区间的根,精确到小数点后第6位
【样例输入】
9
【样例输出】
1.849016
【样例说明】
【评分标准】
# 求函数值
def fun(x):
return x ** 5 - 15 * x ** 4 + 85 * x ** 3 - 225 * x ** 2 + 274 * x - 121
n = int(input())
if fun(1.5) < 0:
low, high = 1.5, 2.4
else:
low, high = 2.4, 1.5
# a为函数值小于0的端点,b为函数值大于0的端点
# f(mid)>0,大于0的一端(b)-->mid
# f(mid)<0,小于0的一端(a)-->mid
while True:
mid = (low + high) / 2
if fun(mid) < 0:
low = mid
elif fun(mid) > 0:
high = mid
elif abs(fun(mid)) < 10 ** (-n): # abs(),取绝对值
break
print("{:.6f}".format(mid))