python 实现求某个数的num的根号n次方

python 同时被 3 个专栏收录
10 篇文章 0 订阅
3 篇文章 0 订阅
1 篇文章 0 订阅

1.使用牛顿迭代法 推演 实现求数 num 的根号n次方

参考了大佬的文章 : https://blog.csdn.net/qq_26499321/article/details/73724763
不熟悉牛顿迭代法的骚年可以看下这个大佬的讲解:详细简述了牛顿迭代法到 求根的应用:https://www.jianshu.com/p/7542fdeda760

# author zw

# 顺便也实现了一下求 x 的n次方(n为正整数)
def pow(x, n):
    ''' 
    求 x的n次方, n为正整数
    '''
    if n == 1:
        return x
    if n == 2:
        return x * x
    if n == 0:
        return 1

    if n % 2 ==0:
        return pow(pow(x, n / 2), 2)
    else:
        return pow(pow(x, n // 2), 2) * x
        
def sqrt_zw(num, n):
    '''
    根据 牛顿二分法 推演
    计算num的根号 n 次
    '''
    guess = num / 2.0
    last = 0.0       # 代表上一轮循环里guess的值
    while abs(guess - last) >= 0.01:
        last = guess
        guess = ((n -1) * guess + num / (pow(guess, n-1))) / n

    return guess

print(sqrt_zw(1024, 10))

具体思路
在这里插入图片描述

2.使用二分法求解数 num 的根号n次方

# author zw

# 顺便也实现了一下求 x 的n次方(n为正整数)
def pow(x, n):
    ''' 
    求 x的n次方, n为正整数
    '''
    if n == 1:
        return x
    if n == 2:
        return x * x
    if n == 0:
        return 1

    if n % 2 ==0:
        return pow(pow(x, n / 2), 2)
    else:
        return pow(pow(x, n // 2), 2) * x

def sqrt_zw(num, n):
    '''二分法实现求num的根号n次方
    '''
    high = num
    low = 0
    mid = (high + low) / 2
    y = 0.0
    while abs(mid - y) >= 0.0001:
        if pow(mid, n) > num:
            high = mid
            y = mid
            mid = (low + high) / 2
        else:
            low = mid
            y = mid
            mid = (low + high) / 2
    return mid

print(sqrt_zw(1024, 10))
  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值