#1.编程计算用二分法对cos(x)**2 +6=x 求根,精确到6位小数。import numpy as np
from numpy import sign
#--------------函数定义#f= lambda x: np.cos(x)**2 -x+6deffun(x):
f= np.cos(x)**2-x+6return f
#--------------求最大步数defstepmax(a,b,eps):
n=(np.log(b-a)-np.log(eps))/np.log(2)
result="{0:.0f}".format(n-1)returnint(result)defeff(a,b,eps,fun,stepmax):"""
a<b
eps为误差限
"""if sign(fun(a))==0:return a
if sign(fun(b))==0:return b
if sign(fun(a))* sign(fun(b))>0:returnprint("该区间没有根,请重新输入区间!")for i inrange(stepmax(a,b,eps)):
c=a+(b-a)/2ifabs((b-a)/2)<eps:return c
if sign(fun(a))*sign(fun(c))<0:
b=c
if sign(fun(b))*sign(fun(c))<0:
a=c
result="{0:.6f}".format(c)returnprint("方程的根为:",result)
eff(6,7,1e-6,fun,stepmax)