考虑采用二分法来解决这道题,首先需要找到X1,f(x1)<0这很简单,但是找到X2需要借助计算机,在使用程序求解x2时。遇到对Python数学函数不太熟悉,于是百度了指数函数是math.exp()。
于是取x1=0,x2=1000,在这期间记得将x转为浮点数,不然会报错。
在这个期间,发现如要方便调用函数需要定义一个函数f(),再写的过程中出现了才500就跳出循环,后仔细看后发现,需要取绝对值,绝对值函数不在math里面,可直接调用。
import math
def f(x):
y=math.sin(x)-math.exp(-x)
return y
x1=0.0
x2=1000.0
a=(x1+x2)/2
while abs(f(a))>0.000001:#精度控制记得取绝对值
if f(a)>0:
x2=a#缩小区间,更新端点值
else:
x1=a
a=(x1+x2)/2 #更新a值
print(a)
print(f(a))