加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用分数(M/N)表示无理数√2近似值的各种方法及广义扩充

(2020-09-10 20:32:25)
标签:

教育

文化

用分数(M / N)表示无理数 2近似值的各种方法及广义扩充(1)

—— 2的平方根读书笔记

 前言

最近读了一本发现数学从书中的2的平方根2010年上海科技教育出版社出版,(爱尔兰) 戴维.弗兰纳里著,郑练译。32开本306页,原价24元,是在卓越网上以3—5折买来的。

书中以师生对话的形式,首先讲述无理数 2的发现,应用,无理性的论证等内容。随后,主要讲述用分数M/N来逼近无理数 2的原理,用分数M/N表示 2近似值的各种方法,如 步步递推法、斐波那契式递推法、平方培增法、立方培增法、乃至四方、五方培增法。最后还列出165位的 2近似值。

 

有一个问题是,2可以用有限小数来表示其近似值,如 2=1.4 2=1.4142等等,为什么又要用分数M / N (7/5 41/29等等)来表示呢?愚以为无限小数总有取位问题,一取位,精度就有损。而分数M / N没有取位问题,在约分时可能计算得更精确些。用分数M / N来表示 2近似值,在其他论著中似乎没有见到过,所以觉得有点新鲜。

看后,觉得用分数(M / N表示 2近似值,其叙述方式有启发,特别是根据少量数值归纳出数列的递推有启发。

另外,我对类似的 3 5 7等,也效仿作了M/N及其数列的递推,并在电脑协助下作了大量试算,最终发现一个用分数(M / N表示质数平方根Z最佳近似值的新方法。所以作此笔记。

但是,用分数(M / N表示无理数近似值,到底有什么实用价值或理论意义,我还是不明白。我就这样忙了一个星期,经历了由极小量数据归纳出递推公式的历程,最终竟发现了一个用分数M/N逼近无理数的简便新方法,十分自得,自我感觉良好。老伴淡定的说,反正是小孩玩泥巴,只要开心就好。

在老年人群中,自有众多的麻将者旅游者酒肉者、抄股者、歌舞者、书画者、打工者、家务者、受骗者、病痛者,也有少量的诈骗者、无为者,乃至弄权者。

而我只是一个学习者。是一个数学知识浅薄而又崇敬数学的数学爱好者。我在没有路标的数学小道上独行,没有伴侣,没有知音,独行而已。但每当我在独步中有所省悟或发现一些数学道理的时候,就内心充实,发觉自己的存在。数学大师笛卡尔有句哲理名言我思,故我在。此之谓也。

 

 用分数(M / N)表示 2近似值的“列表查找法”

2的近似值以小数表示,有一系列不同精度的1.4 1.414 1.41421.4142135等等,但怎样找出一系列分数M/N来表示不同精度的 2的近似值呢?

2是无理数,是不可能用分数表达的,所以 2=(M N1) 2= M2/ N12 M2 =2N12M2-2N12=0 等等是不可能的。但是,若调整N1N要求M2-2N2 =±1则是可能的,此时的M/N就不是 2,而是 2的近似值。再则,同一个M,若取不同N,则只有满足

 (M2-2N2 =±1) M/N,才是最接近 2 近似值。例如当M=17时,可以有不同N组合,如      17/11=1.54541    17/12=1.41666    17/13=1.3076 等等

但其中只有17/12是最接近于 2的。因为它的M2-2N2=17*17-2*12*12=289-288=1。而别的17*17-2*11*11=47 17*17-2*13*13=49,都不等于1。所以M/N=17/12 才是 2的最合适的近似值。

可见,M 要有合适的N,要符合M2-2N2=±1,才是计算最优2近似值的关键。

又,不同的M,它们的M/N也有不同的精度。M越大精度越高。如41/2917/12的精度要高,因为41>17

怎样找到最合适的M/N呢?最老实的方法是下死工夫,先列出MNM22N2,再找出M2-2N2=±1的一对MN,得到M/N。见下表。

 

  M(N)     M2     2N2       M(N)     M2     2N2     

           1       2                 11          121     242

                       8                 12          144     288

          9             18                 13          169     388        

        16             32             

        25           50                   17          289      578        

       36           72                      

       49           98                     

      64           128                   29          841     1682

      81          162                    

10    100          200                     41         1681      3362

     结果在41之内,仅找出5M / N 

M    N     M2       2N2       M2  -  2N2     M / N  

1     1                               -1            1/1

3     2                                           3/2

7     5     49         50               -1            7/5

17   12    289     288                        17/12

41   29    1861    1862            -1          41/29

                                      

最终得到  1/1  3/2  7/5  17/12  41/29 ,再往下找,当然还有,但找多远,心里无底。

靠这种笨方法去查找某一分数M / N 2高精度的近似值,很烦。

 

 用分数(M / N)表示 2近似值的“步步递推法

列表查找法寻找出这些分数M / N来表示 2的近似值,方法没错,但太麻烦了。是不是可以利用前面的M i / N i 找出后面的M i+1 / N i+1呢?经试凑,归纳出递推公式,即由前一式i推出后一式i+1。根据 2  1/1  3/2  7/5  17/12  41/29 归纳出以下递推公式:

 

M i+1 / N i+1 = (M i +2N i/M i+N i )  怎样递推计算,请看:

1/1  1+2*1/1+1=3/2  (3+2*2/3+2=7/5  7+2*5/7+5=17/12  

17+2*12/17+12= 41/29      41+2*29/41+29= 99/70    

99+2*70/99+70= 239/169    以下略

 

便得到以下分数数列M/N  对应着 2的近似值  2 与误差 d 2。并且越往后, 2近似程度越高,即误差越小,且正负相间。真正的无理数 2,就隐藏在此正负之间。

    

列号                            

M/N        1/1       3/2       7/5      17/12       41/29            99/70           239/169        577/408      

2               1.5      1.4      1.4166   1.41379…  1.41428   1.414201…  1.414215  

d     -0.41    0.08   - 0.01    0.002      - 0.0004          0.00007       - 0.00001         0.000002   

 

列号           10      11        12        13   

M/ N    1393 / 985        3363 /2378      8119 /5741    19601/ 13860     47321/33461

2   1.4142131    1.4142136   -.41421355   1.41421356    1.414213562

d 2   -0.0000006      0.00000006     -0.00000001     0.000000002     -0.0000000003

 

列号      14        15              16   以下略  

M/ N          114243 / 80782           275807 / 195025          665857 / 470832  

2         1.414213562         1.41421356236     1.41421356237469

d 2         0.00000000005         -0.00000000005         0.0000000000003

 

这些M / N要经过一步一步的 (M i +2N i/M i+N i ) 的计算才能得到。递推工作也不少,也很烦。

我便编程,让动作飞快但很听话的电脑笨蛋去一一寻找。

 

Private Sub Form_Click() : Form1.Width = 11520 : Form1.Height = 15360

        X = InputBox("输入要开X方的X =")

        For M = 1 To 10000

           For N = 1 To 8000

                 If (M * M - X * N * N = 1) Then Print M; N; 1

                 If (M * M - X * N * N = (-1)) Then Print M; N; -1

           Next N

Next M

Print Spc(4); "成功"

End Sub

输入X=2后,当M10000内时,2的近似值M / N11:

列号  1                        10    11  

M / N  1/1   3/2     7/5  17/12  41/29   99/70  239/169  577/408  1393 /985  3363 /2378  8119 /5741

M2-2N2= -1  -1    -1      -1       -1         -1

注意到,相邻M/NM2-2N2 值,是+1-1相间的。

 

那末是否还有一种跳跃式的递推法呢?有。那就是采用由前两列推第三列的方法,即由12列推出第3列,由23列推第5列,由35列推出第8列,由58 列推出第13列等等,这种跳跃的方法,类似于“斐波那契数列”。

 

 

 用分数(M / N)表示 2近似值的“斐波那契式”法

 

所谓斐波那契数列,就是由0 1开始,以前两列之和作为后面之列。便得到

   1             13    21    34    55    89    144    233

 

应用到 2近似值的分数表示,即由前两列m /n    P/Q推得第三列M / N。但M / N不是由前两列的和或乘求得的,而是采用新算法 (推证见后):

 

M / N = mP+2nQ/mQ+nP  请看递推演算:

 

m /     P/Q          mP+2nQ/mQ+nP    =   M / N  

1/1       3/2         1×3+2×1×2/ 1×2+1×3)       7 / 5

3/2    7/      3×7+2×2×5/3×5+2×7)     41 / 29   

7/   41/ 29    7×41+2×5×29/ 7×29+5×41)   =  577 / 408

41/29   577/408  41×577+2×29×408/41×408+29×577) = 47321 / 33461      

577/408  47321 / 33461                     = 54608393 / 38613965

 

以下递推略,得列号(实际是步步递推法”的列号)M / N 的对照表如下:

 

列号              13             21     

M / N 1/1  3/2  7/ 41/29  577/408  47321 / 33461  54608393 / 38613965

 

由此可见,斐波那契式递推法有跳跃功能,跳过多段分数,递推速度加快。 2误差也迅速递减,很好。一般而言,取M/N=47321 / 33461作为 2的近似值,误差为0.0000000003,精度已足够了。但是,47321 / 33461是有理数,而 2始终是无理数,这一点不要忘记。

  

斐波那契式”传递公式的推证

 

已知前二列  m/n P/Q 是怎样得到下一列 M / N = (m P + 2nQ) / (m Q +nP ) 的呢?

 

第一个列m/nm2 - 2n2 = 1 (-1)

第二个列P/QP 2 - 2Q2 = -1 ( 1),两式相乘

(m2-2n2) (P 2-2Q2) = -1

m2 P 2 + 4n2Q2 - 2m2 Q2 - 2P 2n2 = -1   为了能化成二数和的平方,要加减4mnPQ,得

m2 P 2 +4mnPQ + 4n2Q2 - 2m2 Q2  - 4mnPQ - 2P 2n2 = -1

( m2 P 2 +4mnPQ + 4n2Q2 )  -  2(m2 Q2 + 2mnPQ +n2P 2 )= -1

(m P + 2nQ ) 2 - 2 ( m Q +P n) 2 = -1

M=(m P + 2nQ )   N=( m Q +P n) ,则MM - 2NN= -1  成立,就是说明分数M/N符合近似值的原则M2 - 2N2 = -1

 至此可知,由  m/n P/Q二列分数,可用公式  M/N=(m P + 2nQ) / (m Q + nP)  得到新的分数M / N列。

 

 用分数(M / N)表示 2近似值的“平方培增法”法

 

斐波那契式递推公式中后一列等于前一列P/Q=m/n  ,即P=m  Q=n

m/n  m/n也可得到M/N。即

      M/N = (m P + 2nQ) / (m Q + nP) = (mm + 2nn) / (m n +m n) = (m2 + 2n2) /2mn 。得

 

M/N= (m2 + 2n2) /2mn     这叫平方培增法,请看递推演算:

 

m /  m/n                (m2 + 2n2) /2mn      =   M / N  

1/1     1/1           1×1+2×1×1/ 2×1×1     =  3 / 2

3/2   3/2         3×3+2×2×2/2×3×2    =  17 / 12   

17/12  17/12      17×17+2×12×12/ 2×17×12) =  577 / 408

577/408  577/408   577×577+2×408×408/2×577×408=665857 / 470832      

665857 / 470832      =  886731088897/627013566048 = (1.41421356237)

 

以下的递推略去,得步步递推法列号与“平方培增法M / N 的对照表

 

列号                 16              32   

M / N  1/1  3/2  17/ 12  577/408 665857 / 470832 886731088897 / 627013566048

 

由此可见,平方培增法跳跃功能比斐波那契式递推更大,仅5步运算,就到达步步递推”的第32步。误差也由 -0.410.080.0020.0000020.0000000000030.0000000000001迅速递减,方法更好。

 

 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有