当前位置: 首页 > article >正文

从祖冲之到牛顿迭代法:图解那些被我们遗忘的‘笨’办法如何逼近根号2

从几何直觉到迭代算法人类逼近根号2的千年智慧之旅数学史上最迷人的故事之一就是人类如何用各种巧妙的方法逼近那个无限不循环的小数——根号2。这个看似简单的数学常数却凝聚了东西方文明几千年的智慧结晶。让我们暂时放下现代计算器的便利回到那个用几何图形和迭代猜想解决问题的年代。1. 出入相补中国古代的几何智慧中国古代数学家对根号2的探索最早可以追溯到《周髀算经》中的出入相补原理。这种方法本质上是通过几何图形的分割与重组来实现面积守恒从而推导出边长的比例关系。想象一个边长为1的正方形其对角线正是我们要求的根号2。古人发现将这个正方形沿对角线切开可以得到两个全等的直角三角形。然后通过巧妙的图形重组将两个直角三角形拼合成一个更大的正方形观察新图形的边长与面积关系通过比例推导出对角线的近似值具体步骤示例初始正方形面积 1 对角线分割后两个直角三角形面积各为0.5 重组后的大正方形面积 1 通过比例关系可推导对角线 ≈ 1 1/(11) 1.5这个1.5的近似值虽然粗糙但已经比单纯猜测前进了一大步。祖冲之在《缀术》中进一步发展了这一方法通过更精细的图形分割将近似精度提高到了小数点后7位。2. 正多边形逼近几何直观的极限挑战古希腊数学家虽然也使用几何方法但他们走了一条不同的路——用正多边形逼近圆的周长。这种方法后来被阿基米德发扬光大但其实也可以用来逼近根号2。正八边形逼近法构造单位圆(半径为1)的内接正八边形计算正八边形的边长通过边长比例关系推导根号2的近似值计算过程的关键在于三角函数import math # 正八边形边长计算 side_length 2 * math.sin(math.pi/8) # ≈ 0.7654 # 对角线长度(即根号2的近似) diagonal side_length / math.sin(math.pi/8) * math.sin(3*math.pi/8) ≈ 1.4142这个结果已经非常接近现代计算的值(1.41421356...)显示了古希腊几何方法的强大威力。3. 逐次逼近古印度的代数萌芽古印度数学家发展出了更为代数化的逐次逼近法这种方法已经具备了现代迭代算法的雏形。阿耶波多在《阿耶波多历书》中描述的方法可以表示为给定一个初始猜测x₀通过以下公式不断改进近似值xₙ₊₁ (xₙ 2/xₙ)/2实际操作示例初始猜测x₀ 1第一次迭代x₁ (1 2/1)/2 1.5第二次迭代x₂ (1.5 2/1.5)/2 ≈ 1.4167第三次迭代x₃ ≈ (1.4167 2/1.4167)/2 ≈ 1.4142仅仅三次迭代就得到了相当精确的结果。这种方法的神奇之处在于它的收敛速度——每迭代一次精确的位数几乎翻倍。4. 牛顿迭代法古今智慧的完美统一17世纪牛顿将这种逼近思想发展成了一套系统的数值方法——牛顿迭代法。令人惊叹的是这个方法与古印度的逐次逼近法在形式上完全一致只是理论基础更加严密。牛顿法求根号2的数学原理 我们要求解方程f(x)x²-20的根。根据牛顿法xₙ₊₁ xₙ - f(xₙ)/f(xₙ) xₙ - (xₙ²-2)/(2xₙ) (xₙ 2/xₙ)/2这正是阿耶波多使用的方法牛顿的伟大贡献在于给出了这种方法收敛的理论保证将其推广到更一般的函数求根问题建立了与微积分的联系Python实现对比def ancient_indian_method(n, x01.0): x x0 for _ in range(n): x (x 2/x)/2 return x def newton_method(f, df, n, x01.0): x x0 for _ in range(n): x x - f(x)/df(x) return x # 两者在求根号2时完全等价 f lambda x: x**2 - 2 df lambda x: 2*x print(ancient_indian_method(5)) # ≈1.414213562373095 print(newton_method(f, df, 5)) # ≈1.4142135623730955. 收敛速度的数学之美这些方法的精妙之处不仅在于它们都能逼近根号2更在于它们收敛的速度差异。通过对比分析我们可以更深入地理解算法的效率方法收敛速度5次迭代后的精度出入相补法线性1位小数正多边形逼近法线性3位小数逐次逼近/牛顿法二次15位小数注意二次收敛意味着每步迭代正确位数大约翻倍这是牛顿法强大的关键这种速度差异在实际计算中影响巨大。在古代计算每一步都需要手工完成因此收敛速度直接决定了方法的实用性。这也是为什么牛顿法虽然晚出现但迅速成为科学计算的标配工具。6. 现代计算机中的根号2计算虽然我们已经了解了这些历史方法但现代计算机是如何计算根号2的呢令人惊讶的是许多现代算法仍然是这些古老思想的变种或优化。IEEE 754标准的近似算法使用查找表获取初始近似值应用类似牛顿法的迭代进行精炼利用硬件并行加速计算以下是一个简化的现代算法示例import struct def float_to_bits(f): return struct.unpack(!I, struct.pack(!f, f))[0] def bits_to_float(b): return struct.unpack(!f, struct.pack(!I, b))[0] def fast_sqrt(number): threehalfs 1.5 x2 number * 0.5 y number i float_to_bits(y) # 邪恶的浮点位级 hacking i 0x5f3759df - (i 1) # 初始猜测的魔法值 y bits_to_float(i) y y * (threehalfs - (x2 * y * y)) # 1次牛顿迭代 return 1/y # 因为算法实际上是计算倒数平方根这个著名的快速平方根倒数算法来自Quake III源码展示了现代算法如何将古老的数学智慧与计算机特性完美结合。它使用了一个神奇的常数0x5f3759df作为初始猜测然后仅需一次牛顿迭代就能获得相当精确的结果。从《周髀算经》的几何分割到阿耶波多的迭代猜想再到牛顿的系统化方法最后到现代计算机的优化算法人类对根号2的探索跨越了千年时空。每次当我重新实现这些算法时都会被古人惊人的智慧所震撼——在没有现代数学工具的情况下他们发展出的方法与最先进的数值分析理论惊人地一致。

相关文章:

从祖冲之到牛顿迭代法:图解那些被我们遗忘的‘笨’办法如何逼近根号2

从几何直觉到迭代算法:人类逼近根号2的千年智慧之旅 数学史上最迷人的故事之一,就是人类如何用各种巧妙的方法逼近那个无限不循环的小数——根号2。这个看似简单的数学常数,却凝聚了东西方文明几千年的智慧结晶。让我们暂时放下现代计算器的便…...

人生是一场心智游戏,而大多数人连规则都没搞清楚

你有没有经历过这种循环:某天被一段话、一本书、一个视频点燃,觉得这次真的要变了。你开始健身、开始学习、开始做那件拖了很久的事。然后两周后,你回到了原点。你把这归因于意志力不够、自律太差、执行力弱。但这个诊断本身就是错的。最近读…...

手机号查QQ号终极指南:3分钟掌握高效查询技巧

手机号查QQ号终极指南:3分钟掌握高效查询技巧 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾需要快速确认手机号对应的QQ号,却苦于没有简单直接的查询方法?手机号查QQ号工具正是为你量身…...

Ubuntu 22.04 + Python 3.10 环境,手把手教你搞定 nnUNetV2 和 MSD 数据集预处理

Ubuntu 22.04 Python 3.10 环境下的 nnUNetV2 与 MSD 数据集全流程实战指南 在医学图像分割领域,nnUNetV2 以其出色的自适应能力和稳定的表现,成为众多研究者和开发者的首选工具。本文将带你从零开始,在 Ubuntu 22.04 系统和 Python 3.10 环…...

【IT研发实用Skill】clickhouse-io 技能

ClickHouse数据库模式、查询优化、分析和数据工程最佳实践,适用于高性能分析工作负载。 技能概述 clickhouse-io 技能提供了ClickHouse列式数据库的专门开发模式和最佳实践。ClickHouse是一个面向列的数据库管理系统(DBMS),专为在线分析处理(OLAP)而优化,特别适合处理大规模数…...

魔兽争霸3终极性能优化指南:WarcraftHelper完整配置让帧率稳定180+

魔兽争霸3终极性能优化指南:WarcraftHelper完整配置让帧率稳定180 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争…...

25个免费Illustrator脚本终极指南:快速提升设计效率300%

25个免费Illustrator脚本终极指南:快速提升设计效率300% 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否厌倦了在Adobe Illustrator中重复执行相同的操作&#xf…...

《Windows Internals》读书笔记 10.4.3:WMI 仓库(Repository)——它到底存了什么,又不存什么?

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

蓝桥杯省赛真题解析:用线段树+优先队列搞定‘小蓝的旅行计划’(附Java完整代码)

蓝桥杯省赛算法精解:线段树与优先队列在旅行加油问题中的协同应用 第一次看到"小蓝的旅行计划"这道题时,很多选手会被题目中复杂的加油规则和油箱限制条件弄得晕头转向。这道来自蓝桥杯省赛的真题,表面上看是一个简单的贪心问题&am…...

倚天剑术46--批量转换其他图片格式为jpg

JPG格式和其他格式相比最大的优点是:保持一定清晰度的基础上具备极高的压缩性。从笔者非专业的角度认为,其实JPG文件除了不支持透明度,其他方面都挺好。因此只要没有透明度的需求,我一般会把图片转换成JPG,占用的空间的…...

Labelme标注数据清洗实战:用Python批量重命名、替换和删除特定标签(附完整代码)

Labelme标注数据清洗实战:Python自动化处理标签体系的三大核心场景 当你完成一轮图像标注后,突然发现标签体系需要调整——可能是命名不规范需要统一,可能是类别定义需要修改,甚至是某些冗余类别需要删除。手动修改每个JSON文件不…...

从SimCLR到CLIP:对比学习在CV领域的演进与落地思考(附避坑指南)

从SimCLR到CLIP:对比学习在视觉智能中的范式跃迁与技术实践 当计算机视觉领域还在为标注数据的稀缺性苦恼时,对比学习像一束光照亮了无监督表征学习的道路。从2020年SimCLR的横空出世,到CLIP开启的多模态新时代,这场技术演进不仅重…...

独立t检验怎么做:软件操作步骤与结果指标解读

一、独立t检验所属模块独立t检验在SPSSAU中归属于【通用方法】模块。二、方法概述独立t检验用于比较两个独立组在某个定量指标上的平均水平是否存在显著差异,常见于性别对比、实验组与对照组对比、不同人群均值比较等场景。对于只有两个组别的差异分析,S…...

如何合并两个表分区_MERGE PARTITIONS合并范围或列表分区

Oracle MERGE PARTITIONS 必须显式指定两个相邻分区名,不支持通配符或FOR VALUES;操作会物理移动数据并锁表,需验证边界值、补全LIST值列表,且DEFAULT分区不可参与合并。ALTER TABLE … MERGE PARTITIONS 语法必须带分区名&#x…...

如何用Sunshine打造终极私人游戏串流平台:5步简单指南

如何用Sunshine打造终极私人游戏串流平台:5步简单指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款强大的开源游戏串流服务器,专为Moonli…...

基于若依框架的Java多仓库进销存ERP系统源码|SpringBoot+SpringCloud架构|支持试用与二次开发

温馨提示:文末有联系方式系统核心定位 本系统是一款面向中小企业的现代化网络版ERP解决方案,深度融合进销存管理与多仓库协同能力,采用主流Java技术栈构建,具备高扩展性与模块化设计特点。技术架构亮点 系统基于开源若依&#xff…...

CKS考试通关后,我总结的这16个K8s安全加固实战场景(含详细命令)

CKS认证工程师必备:16个Kubernetes生产级安全加固场景深度解析 在云原生技术快速发展的今天,Kubernetes已成为企业容器编排的事实标准,但随之而来的安全挑战也日益严峻。作为通过CKS认证的工程师,我们不仅需要掌握考试要求的修复技…...

Zephyrus Duo 双屏游戏本体验超酷但价格贵,与竞品相比性能和成本谁更优?

Zephyrus Duo 亮点与目标用户这款笔记本电脑亮点颇多,配备两块全尺寸 16 英寸 OLED 屏幕、顶级的 Nvidia RTX 5090 笔记本 GPU、近乎顶级的 16 核英特尔 Panther Lake 芯片等。不过,它似乎没有明确的目标用户,但能带来超酷且有趣的使用体验。…...

魔兽争霸3终极优化指南:5分钟解决所有兼容性问题

魔兽争霸3终极优化指南:5分钟解决所有兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争霸3》在现代电脑上…...

主从DNS服务器实验

【实验要求】:完成DNS的主服务器配置完成DNS的从服务器配置完成客户端配置【步骤】:一、DNS主服务器配置登录主服务器,完成IP等一切先前配置后,安装bind,进入目录/etc编辑主配置文件named.confvim /etc/named.conflist…...

Transformer在文档级事件抽取中的应用与优化

1. 项目背景与核心价值MAVEN-FACT数据集是近年来事件抽取领域的重要基准测试集,包含超过4,800个文档和118,732个事件实例。这个项目最吸引我的地方在于它首次将事件抽取任务从传统的句子级扩展到了文档级,更贴近真实场景中的信息处理需求。我在处理客户舆…...

【MySQL | 第八篇】索引的使用

目录 一、索引的使用规则 1.最左前缀法则 2.范围查询 3.索引的失效情况 3.1索引列运算 3.2字符串不加引号 3.3模糊查询 3.4or连接的条件 3.5数据分布影响 4.SQL提示 5.覆盖索引⭐⭐⭐⭐⭐ 6.前缀索引 7.单列索引与联合索引 二、索引的涉及原则 一、索引的使用规则…...

Wand-Enhancer:免费解锁WeMod高级功能的完整指南

Wand-Enhancer:免费解锁WeMod高级功能的完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否厌倦了WeMod游戏助手的付费限制&…...

别再被5V电源坑了!ESP32-CAM搭配CH340烧录与运行的全流程避坑指南

ESP32-CAM电源与烧录终极指南:从硬件连接到稳定运行 刚拿到ESP32-CAM开发板时,那种跃跃欲试的兴奋感很快会被一连串的硬件问题浇灭——电源接3.3V无法启动、CH340接线错误导致烧录失败、IO0引脚状态不对让设备"装死"。这些问题困扰着每一位刚接…...

从短期利率到波动率:手把手用Python复现CIR模型,搞定金融时间序列模拟

从短期利率到波动率:手把手用Python复现CIR模型,搞定金融时间序列模拟 金融市场的波动性和利率变化常常让分析师们头疼不已。想象一下,你手头有一组历史利率数据,老板突然要求你预测未来半年可能出现的极端情景——这可不是靠直觉…...

Go 语言从入门到进阶 | 第 16 章:反射(Reflection)

系列:Go 语言从入门到进阶 作者:耿雨飞 适用版本:go v1.26.2 前置条件 在开始本章学习之前,请确保: 已完成第 6 章(接口与多态)的学习,理解接口的动态类型和动态值 已完成第 4 章(复合数据类型)的学习,熟悉结构体和标签语法 已获取 Go 1.26.2 源码树(go-go1.26.2 …...

用STM32F103和VS1053B手搓一个MP3播放器:从SD卡读取到OLED显示的完整流程

用STM32F103和VS1053B打造高保真MP3播放器:从硬件搭建到软件优化的全流程解析 在嵌入式音频开发领域,DIY一个具备完整功能的MP3播放器始终是检验开发者系统设计能力的经典项目。本文将基于STM32F103微控制器与VS1053B解码芯片的组合,深入剖析…...

Claude Code 十大必装 MCP 排行榜(2026年最新版)

🏆 Claude Code 十大必装 MCP 排行榜(2026年最新版) 作为一名重度使用 Claude Code 的开发者,我踩过不少坑,也发现了许多能极大提升开发效率的 MCP。今天就把我心目中最值得安装的10个 MCP 整理出来,附带详…...

Synopsys AXI VIP实战:除了outstanding检查,回调机制还能帮你做哪些事?

Synopsys AXI VIP回调机制深度实战:解锁验证效率的五大高阶技巧 AXI总线作为现代SoC设计的核心互联标准,其验证复杂度随着系统规模呈指数级增长。Synopsys验证IP(VIP)提供的回调机制,就像给验证工程师配备了一把瑞士军…...

如何搭建个人游戏串流服务器:Sunshine完整指南

如何搭建个人游戏串流服务器:Sunshine完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的游戏串流服务器,能够将高性能电脑上的游…...