算法题 - 求一个正数的开方根 - Python
📅 2026/7/18 1:36:05
👁️ 次浏览
求一个正数的开方根问题描述给定一个正数a求这个数的开方根要求保留精度小数点后6位。问题分析这个题目是今天火山小视频第一个面试题其实之前就遇到过LeetCode69. Sqrt(x)和这个不同的是要求是保留小数点后六位但是无外乎还是使用二分法或者牛顿迭代法来做。这次特定介绍一种前几天看到的一个方法梯度下降法在朋友的博客上看到的但是他没有详细的整理和给出可运行的代码链接。那么现在先介绍一下牛顿迭代法然后是梯度下降法最后是二分法。1方法一牛顿迭代法最常用的方法把问题转换成求解函数f ( x ) x 2 − a 0 f(x) x^{2} - a0f(x)x2−a0的一个根。现在看看牛顿迭代公式不用详细介绍了很简单其中f ′ ( x ) 2 x f(x) 2xf′(x)2x图片来自百度百科# Time :2019/02/12# Author :LiuYinxing# Python3# 牛顿迭代法classSolution:def__init__(self,th1e-4):self.thth# 设置阈值threshold th1e-4defsqrt(self,a):ifa0:# 非正数均返回 0 不做进一步细分了哈return0x1.0# 设一个初始值初始化如果为负值找到的是负根whileabs(x*x-a)self.th:# 判断是否收敛x(xa/x)/2# x x - (x*x - a)/(2x)returnxif__name____main__:soluSolution()print(solu.sqrt(0.09))2梯度下降法令x a x \sqrt{a}xa那么问题转换一下f ( x ) x 2 − a f(x) x^{2} - af(x)x2−a即求f ( x ) 0 f(x)0f(x)0的一个解。现在问题是如何把这个问题转换成梯度下降问题一般的认识是梯度下降法是求解极值问题我们把这个问题转换成极值问题即可不难看出f ( x ) x 2 − a f(x) x^{2} - af(x)x2−a是函数F ( x ) 1 3 x 3 − a x F(x) \frac{1}{3}x^{3} - axF(x)31x3−ax对x xx求导的导函数也就是积分函数。现在对函数F ( x ) 1 3 x 3 − a x F(x) \frac{1}{3}x^{3} - axF(x)31x3−ax进行梯度下降求极值求得的那个解很显然就是f ( x ) x 2 − a 0 f(x) x^{2} - a0f(x)x2−a0的一个根了。Python3实现# Time :2019/02/12# Author :LiuYinxing# Python3# 梯度下降法classSolution:def__init__(self,lr0.01,th1e-4):self.lrlr# 设置学习率 lr0.01self.thth# 设置阈值threshold th1e-4defsqrt(self,a):ifa0:# 非正数均返回 0 不做进一步细分了哈return0x5# 设一个初始值F_curx*x*x/3-a*x# 计算初始函数值error1whileabs(error)self.th:# 判断是否收敛x-self.lr*(x*x-a)# 迭代求x其实相当于更新梯度errorF_cur-(x*x*x/3-a*x)F_curx*x*x/3-a*xreturnxif__name____main__:soluSolution(lr0.01)print(solu.sqrt(88))上面代码存在什么样的问题问题1很显然它有两个根求出的是不是正数答函数F ( x ) 1 3 x 3 − a x F(x) \frac{1}{3}x^{3} - axF(x)31x3−ax如何画出它的坐标图那么它一定是一个先递增–递减–递增的图像很显然就一个极小值点还一个极大值点。所以理论上只要初始化x xx的值 在( − a , ∞ ] (- \sqrt{a}, \infty](−a,∞]范围内就可以迭代到极小值点。感觉是这样哈看下图辅助理解问题2尝试了一下因为要求三次方所以a aa比较大的情况下就要考虑调整参数了而且是求解要消耗一定时间。classSolution:def__init__(self,lr0.01,th1e-4):self.lrlr# 设置学习率 lr0.01self.thth# 设置阈值threshold th1e-4defsqrt(self,a):ifa0:# 非正数均返回 0 不做进一步细分了哈return0x5# 设一个初始值whileabs(x*x-a)self.th:# 判断是否收敛x-self.lr*(x*x-a)# 迭代求x其实相当于更新梯度returnxif__name____main__:soluSolution(lr0.01)xsolu.sqrt(88)print(x,x*x)3方法三二分法简单有效哈# Time :2019/02/12# Author :LiuYinxing# Python3 二分法classSolution:defsqrt(self,x,th):ifx0:return0# 非正数均返回 0 不做进一步细分了哈ifx1:# 初始化要分两个区间进行[0, 1], [1, 正无穷]low,high1,xelse:low,highx,1whilehigh-lowth:mid(lowhigh)/2mid2mid**2ifmid2x:returnmidelifmid2x:lowmidthelifmid2x:highmid-threturnhighif__name____main__:soluSolution()print(solu.sqrt(0.09,th1e-6))声明总结学习有问题或不当之处可以批评指正哦谢谢。
1. MiMo Code 技术架构解析小米 MiMo Code 作为终端编程 Agent 的开源实现,其核心创新点在于突破了传统 AI 编程助手在长程任务中的局限性。通过计算、记忆、进化三大模块的协同设计,实现了对复杂编程任务的全流程支持。1.1 计算模块设计原理计算模块采用…
📅 2026/7/18 1:36:05
1. 家庭宽带IPv6现状与基础认知IPv6作为下一代互联网协议,正在逐步取代IPv4成为主流。与IPv4相比,IPv6最显著的特点是地址空间巨大(2^128个地址),这使得每个家庭宽带用户都能获得公网IPv6地址。根据国内三大运营商的实…
📅 2026/7/18 1:36:05
📌 PDF:大白话说Java面试题 — 07_Redis篇 第16题:说说 Redis 的跳跃表
📚 回答:
核心考点: 跳跃表(Skip List) 是 Redis 有序集合(Sorted Set)的核心底层数…
📅 2026/7/18 1:35:04
先把误区拆掉:很多人不是读不懂,而是读不动传统路径看起来很完整:先背单词,再学语法,再找文章,再打开词典,遇到长句还要切到翻译工具。每一步都合理,连起来却像一条需要不断换乘的路…
📅 2026/7/18 2:50:46
1. Seata DataSourceProxy 的核心作用与设计背景分布式事务一直是微服务架构中的痛点问题。在传统单体应用中,我们依靠数据库的ACID特性就能保证数据一致性。但当系统拆分为多个服务后,一个业务操作可能跨越多个数据库实例,此时就需要引入分布…
📅 2026/7/18 2:50:46
先说结论:论文工具不能只看“生成速度”我把 ChatGPT、Claude、Kimi 和雷小兔放进同一套毕业论文工作流。开场一轮刚开始,差别就出现了:雷小兔智能排版能先按学校或期刊要求设置页面、标题、段落与参考文献格式,再让内容进入可编辑…
📅 2026/7/18 2:50:46
1. 海象运算符的诞生背景与核心价值Python 3.8引入的海象运算符(:)绝非简单的语法糖,而是解决Python编程中一类特定痛点的优雅方案。这个看似微小的语法变更,实际上改变了我们在条件表达式和循环结构中处理中间变量的方式。传统Py…
📅 2026/7/18 2:50:46
1. Cesium粒子特效核心原理剖析Cesium作为Web端三维地理可视化引擎的标杆,其粒子系统(ParticleSystem)通过GPU加速实现了大规模粒子效果的实时渲染。这套系统的设计哲学是:用最小化的CPU开销控制粒子行为规则,将计算密集型任务交给着色器并行…
📅 2026/7/18 2:50:46
鸿蒙 ArkTS 实战:Training Checkin Tool 从专业流程到完成闭环完整解析
前言
Training Checkin Tool 是一个面向 培训签到工具 场景的鸿蒙 ArkTS 单页应用。它没有把重点放在复杂后台能力上,而是围绕一线人员最常见的记录、统计、提醒和完成确认构建移…
📅 2026/7/18 2:49:46
更多请点击:
https://kaifayun.com
第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…
📅 2026/7/18 0:00:33
更多请点击:
https://codechina.net
第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…
📅 2026/7/18 0:00:33
作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…
📅 2026/7/18 0:00:33
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/17 2:37:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/18 0:00:49
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/17 15:13:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/17 6:11:34
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/17 15:13:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/17 2:40:57