import math
from fractions import Fraction
def findk():
m1=math.log(b-a,math.e)
m2=math.log(eps,math.e)
m3=math.log(2,math.e)
global k
k=math.ceil((m1-m2)/m3)
print("迭代需%d次,迭代精度为%f" %(k,eps))
def f(x):
return 63*math.pow(x,5)-70*math.pow(x,3)+15*x
def BisectionMethod():
global eps
eps=0.5*math.pow(10,-5)
global a
global b
n=0.1
a=-1;b=a+n;
flag=0
maxlen=10
while(a<(maxlen+2)):
while(f(a)*f(b)>0):
a=a+n
b=b+n
if(a>maxlen and flag==0):
print("a在%d以内找不到解" %maxlen)
exit()
if(f(a)*f(b)<0):
flag=flag+1
print("找到的第%d个解" %flag)
print("a=%f,b=%f使得f(a)*f(b)<0" %(a,b))
findk()
x=(a+b)/2
print("第1次迭代,x的值为%f,其函数值为%f" %( x , f(x)))
for k1 in range(k-1):
print("第%d次迭代:" %(k1+1),end=" ")
if f(x)*f(b)<0:
a=x
else:
b=x
x=(a+b)/2
print("第1次迭代,x的值为%f,其函数值为%f" %( x , f(x)))
print("经历了%d次迭代,得到解为%.19f,函数值为%.19f"%(k,x,f(x)))
a=a+n
b=a+n
print("\n")
if __name__ == "__main__":
BisectionMethod()