这是学习笔记的第2161篇。
记得上学的时候,忙着考试,把一些原因抛在脑后。
面对未知,我们大多数人选择默认接受。事实上,你不知道根号2,
比如:根号2(√2)为什么是无理数,怎么计算?
我提出这个想法的时候,其实大部分人的反应都是一样的:1 1开根号。至于为什么,那是规矩。当然,用根号做符号是没错,但远不是结果。
这个问题追根溯源,会发现远比我们想象的复杂,要追溯到古希腊时期。
毕达哥拉斯(约公元前580-500年)是古希腊伟大的数学家,他提出了“万物皆数”的观点。公元前500年,毕达哥拉斯学派的弟子希帕索斯突然发现似乎有一些无法解释的情况,比如正方形的对角线和它的边长。这显然与毕达哥拉斯学派“万物皆数”(指有理数)的哲学大相径庭,吓坏了学派领袖。最后被他残忍的扔进水里,被他的弟子杀死。
为了计算根号2的值,我们可以把它分成两个问题。
1)如何证明根号2是无理数?
2)根号2的无理值是如何计算的?
我们从知识的角度来证明为什么根号2(√2)是无理数。
方法:尾数证明法:
假设根号2是有理数,那么根号2可以用a/b的形式来标识,其中(A,b)=1),A(表示A和B的最大公因式为1),A和B为正整数。这些条件搞清楚之后,我们开始证明。
第一步:√2=a/b那么就可以得到A * A = 2 * B * B。
第二步:从数的平方可以很快得出,b*b的尾数范围是(0,1,4,5,6,9)中的一个数,不可能是2,3,7,8。这个道理不难理解;
第三步:2*b*b的尾数范围为(0,2,8)之一,
第四步:因为a*a=2*b*b,那么a*a的尾数范围可以排除2和8,只有0。
第五步:因为2*b*b得到的值肯定是偶数,所以b*b的尾数范围是(0,5)
第六步:根据目前的尾数选项,A和B的公因数为5,与(A,b)=1相矛盾。
所以根号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是无理数。可以解释为希帕索斯是这样证明的。
补充的方法很多,差不多有八种左右,就不一一列举了。
根号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的值域,它明显大于1,所以可以表示为y = x ^ 1的函数,也就是
√2 = y=1 x
将上面的公式平方得到
2=(1 x)(1 x),得到
2 = 1×2×2×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