这是学习笔记的第 2161 篇文章

记得上学的时候忙着考试,把心头的一些为什么都压在了脑后。

面对未知,我们大多数人都选择了默认接受,其实你不懂根号2,

比如:根号2(√2)为什么是无理数,我们有什么办法去计算它

当我冒出这个想法的时候,其实大部分人的反映都一样1+1开根号就是啊,至于为什么,就是规定呗,当然把根号作为一种符号确实如此,但是离结果还差了很远。

这个问题追根溯源,会发现远比我们想象的要复杂,得追溯到古希腊时期。

毕达哥拉斯(Pythagoras,约公元前580年至公元前500年间)是古希腊的大数学家,他提出“万物皆为数”的观点。公元前500年,毕达哥拉斯学派的弟子希伯索斯(Hippasus)突然发现好像有些情况解释不了,比如一个正方形的对角线与其一边的长度,这明显与毕氏学派的“万物皆为数”(指有理数)的哲理大相径庭,使得学派领导人很惶恐,最后被毕氏门徒残忍地投入了水中杀害。

要去计算根号2的值,我们可以拆分为两个问题。

1)怎么证明根号2是无理数

2)根号2的无理数值是怎么计算出来的?

我们来从求知的角度来证明下根号2(√2)为什么是无理数?

方法1:尾数证明法:

假设根号2是一个有理数,那么根号2就可以使用a/b的形式来标识,其中(a,b)=1,(表示a 与 b 最大的公因数是1),a和b都是正整数,明确了这些条件,我们就开始证明了。

第1步:√2=a/b 那么可以得到a*a=2*b*b

第2步:从数的平方我们可以很快得到,b*b的尾数范围是 (0,1,4,5,6,9)中的一个数,不可能是2,3,7,8,这个道理不难理解;

第3步:2*b*b的尾数范围是(0,2,8)中的一个数,

第4步:因为a*a=2*b*b,那么a*a的尾数范围可以排除2和8,只有0

第5步:因为2*b*b得到的值肯定是一个偶数,那么b*b的尾数范围是(0,5)

第6步:按照目前的尾数可选项,a和b存在公因数5,和(a,b)=1是相矛盾的。

所以根号2是一个无理数。

方法2:奇偶分析法

假设√2=a/b 那么可以得到a*a=2*b*b,(a,b)=1,(表示a 与 b 最大的公因数是1,a和b都是正整数

1)根据2*b*b可以推得a是一个偶数,我们可以设置a=2c

2)4*c*c=2*b*b得到 b*b=2*c*c,可以得到b也是偶数

3)a,b都是偶数,这和(a,b)=1相矛盾

所以根号2是一个无理数,可以说明的是希帕索斯就是用这种方法证明的。

还有很多种方法补充,差不多有8种左右,我就不一一罗列了。

如何计算根号2的值呢,查找了不少资料,我觉得这几种方法还是能消化的。

方法1:

(√2+1)(√2-1)=1,这是我们参考的一个基准,可以按照这种方式不断的展开。

√2-1=1/(√2+1)

√2 = 1+ 1/(√2+1),继续带入根号2的对等公式

√2 = 1+ 1/(1+ 1/(√2+1)+1)=1+ 1/(2+ 1/(√2+1))

继续推导:

√2=1+ 1/(2+ 1/(√2+1))=1+ 1/(2+ 1/(1+ 1/(√2+1)+1))=1+ 1/(2+ 1/(2+ 1/(√2+1)))

这种方式叫做连分数法,我们可以通过这种不断的迭代可以得到更加精确的值。

方法2:

我们可以很容易得到根号2的范围,明显是大于1的,所以我们可以按照y=x+1的函数来表示,即

√2 = y=1+x

对上式做平方,得到

2=(1+x)(1+x),得到

2=1+x*x+2*x+1,进一步得到,

x*x+2*x=1,推得,x*(x+2)=1,得到

x=1/(x+2),所以

1/x=2+x=2+1/(2*x)=2+1/(2*1/(x+2))

=2+1/(2*1/(1/(x+2)+2))

按照这种方式可以不断的推导,得到更加精确的值。

计算机如何计算根号2

当然还有很多高大上的方法来进一步辅助,比如牛顿迭代法,二分法等

那么如何在计算机中来计算得到根号2呢, 这里要介绍一个传奇算法:算法名字就是:0x5f375a86,看起来像是一个内存地址一样,该算法据说比牛顿迭代法快4倍,核心的代码类似下面这样:

i = 0x5f375a86 - (i>>1);

至今为止仍未能确切知晓此常数的起源 ,值得一提的是这个值最初为0x5f3759df,后来由Lomont通过暴力穷举找到这个更优值,即0x5f375a86

Lomont采用暴力方法逐步尝试,终于找到一个比之前的好那么一丁点的数字,虽然实际上这两个数字所产生的结果非常近似,这个暴力得出的数字是0x5f375a86,为此他写了一篇论文《Fast Inverse Square Root》

点击原文查看这篇论文,我是被震撼到了。

近期热文:

迁移到MySQL的业务架构演进实战

数据库修改密码风险高,如何保证业务持续,这几种密码双活方案可以参考

MySQL业务双活的初步设计方案

如何优化MySQL千万级大表,我写了6000字的解读

一道经典的MySQL面试题,答案出现三次反转

业务双活的数据切换思路设计(下)

业务双活的数据切换思路设计(一)

MySQL中的主键和rowid,看似简单,其实有一些使用陷阱需要注意

小白学MySQL要多久?我整理了10多个问题的答案

转载热文:

《吊打面试官》系列-Redis基础

唯一ID生成算法剖析,看看这篇就够了

关于大数据运维能力的一些思考

DBA菜鸟的进化简史:不忘初心,记工作中踩过的三个坑

美女主持直播,被突发意外打断!湾区网友却高喊: 我懂!超甜

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过

在看,让更多人看到

怎么证明根号2是无理数,我们来推导和计算,还有逼格极高的算法相关推荐

  1. 能将无理数化为根号形式的计算机,怎么证明根号2是无理数,我们来推导和计算,还有逼格极高的算法...

    原标题:怎么证明根号2是无理数,我们来推导和计算,还有逼格极高的算法 记得上学的时候忙着考试,把心头的一些为什么都压在了脑后. 面对未知,我们大多数人都选择了默认接受,其实你不懂根号2, 比如:根号2 ...

  2. 如何证明根号3是无理数?------顺便说下希帕索斯和第一次数学危机

    我们都知道, 根号2是无理数, 初中数学课本给过一个非常优美的反证法. 当年,希帕索斯发现了这个秘密,引发了第一次数学危机.毕达哥拉斯解决不了这次数学危机,就想办法解决了提出问题的人.斯帕索斯死得好惨 ...

  3. 关于根号p是无理数的另类证明

    这个证明是窝和房姐姐的第一次接触时候完成的.那个时候经常上那个什么鬼计算机基础,科科,经常玩进位制,于是灵感大法,完成于2013年的中秋节假期. 问题:若pp不是完全平方数,那么p√\sqrt{p}为 ...

  4. 猫=图灵机?4项测试证明,「猫猫计算机」可执行任意计算

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:David 小咸鱼 [导读]近日,一位法国开发者Chloé Lourseyre在 ...

  5. 用计算机算3次根号0.00005,使用ORCA在TDDFT下计算旋轨耦合矩阵元和绘制旋轨耦合校正的UV-Vis光谱...

    使用ORCA在TDDFT下计算旋轨耦合矩阵元和绘制旋轨耦合校正的UV-Vis光谱 文/Sobereva@北京科音 First release: 2019-Feb-10  Last update: 20 ...

  6. 根号二用计算机怎么算,Sqrt-如何计算根号2

    二分法 二分法:通过二分的方式,不断计算比较,推出根号2的一个近似值. [1, 2] [1, 1.5] .... 缺点:性能不高 牛顿迭代法 y = x^2 - 2 的图像 其实,计算根号2就是计算与 ...

  7. 如何用一段代码证明JVM加载类是懒加载模式?分享PDF高清版

    阿里一面 讲一下 HashMap 中 put 方法过程? 对 Key求Hash 值,然后再计算 下标. 如果没有碰撞,直接放入桶中, 如果碰撞了,以链表的方式链接到后面, 如果链表长度超过阀值(TRE ...

  8. 4 种经典方法IB 数学证明题分享给大家

    学习数学时感觉最有意思的题目就是证明题了,证明题能练习一种能力: 你知道一件事情时对的,怎么说清楚它是对的:你认为一件事情时错的,怎么说清楚它是错的. 这和生活中的辩论有点像,要有理有据地说清楚原因. ...

  9. Introduction to Mathematical Thinking - Week 3

    there exists and all there exists 证明根号2是无理数 all 习题 3. Which of the following formal propositions say ...

最新文章

  1. 实例化Layout中的布局文件(xml)
  2. Visual Entity 教程(一)从数据库创建模型
  3. Metasploit Framework(1)基本命令、简单使用
  4. 利用SAP Cloud Platform control center给global账号分配服务
  5. Struts2中ActionContext介绍
  6. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树
  7. 创建设计模式 - Singleton设计模式(最佳实践与示例)
  8. 经典最优滤波器(概述)
  9. Encoder与Decoder
  10. php升维,svm算法详解
  11. 一个没暂时没有办法实现的问题和一个有意思的小问题!
  12. 伊洛纳登录显示服务器连接中,伊洛纳萌新入坑常见问题汇总
  13. 在Spring Boot中使用Spring Security实现权限控制
  14. android自定义wifi列表,Android开发之Wifi基础教程
  15. WarDrive:使用Backtrack 4中的Kismet进行嗅探并使用GE绘制地图的简明攻略
  16. UE4_编辑器UMG关闭窗口不能立刻销毁UMG
  17. Music decoding tool | 音乐解码工具
  18. 【MDCC 2015】平台与技术-Android专场(上):剖析Android应用架构与设备体验
  19. Go语言十一大主流微服务框架
  20. 流畅的python第二章, 列表和元组和数组

热门文章

  1. 凑个热闹 谈谈网红沈大师
  2. JavaSE入门:面向对象(三)
  3. 远程协作从“特殊”到“常态”,你可能需要的会议平板测评
  4. 应用启动图标未读消息数显示 工具类
  5. 【BZOJ3569】DZY Loves Chinese II(线性基,图的连通性)
  6. 武未转变服务器tp,2020年十大经典战役推荐:用一张TP让你知道垄断的威力
  7. Android仿微信图片编辑处理:文字,马赛克,裁剪,涂鸦,旋转图片等
  8. 【Unity】用Lerp()实现类杀戮尖塔手牌变化
  9. 滴滴共享单车在深圳被叫停;六六接受京东道歉;宝马发布最新充电网络计划丨价值早报
  10. 华为S5700实战配置