python---编程计算用二分法对cos(x)**2 +6=x 求根,精确到6位小数

1.编程计算用二分法对cos(x)**2 +6=x 求根,精确到6位小数。

#1.编程计算用二分法对cos(x)**2 +6=x 求根,精确到6位小数。

import numpy as np
from numpy import sign

#--------------函数定义
#f= lambda x: np.cos(x)**2 -x+6
def fun(x):
    f= np.cos(x)**2 -x+6
    return f
#--------------求最大步数
def stepmax(a,b,eps):
    n=(np.log(b-a)-np.log(eps))/np.log(2)
    
    result="{0:.0f}".format(n-1)
    return  int(result)
    


def eff(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: return print("该区间没有根,请重新输入区间!")

    for i in range(stepmax(a,b,eps)):
        c=a+(b-a)/2
        if abs((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)

    return print("方程的根为:",result)

eff(6,7,1e-6,fun,stepmax)    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值