回到十七世纪,让我来编算一本常用对数表(对数结果是小数,要有分数的思想,指数的幂是分数,这样可以实现小数分数转化位整数的幂的求法)

回到十七世纪,让我来编算一本常用对数表(对数结果是小数,要有分数的思想,指数的幂是分数,这样可以实现小数分数转化位整数的幂的求法)原文地址 回到十七世纪 让我来编算一本常用对数表作者 小牛 自十八 九岁学习了对数后 就觉得造对数表真不简单 据说十七世纪那时 说如果谁发现了对数表上有一个数字错 就奖一两黄金 据百科百度 纳皮尔 1550 1617 年 苏格兰 数学家 对数的创始人

大家好,我是讯享网,很高兴认识大家。

 

原文地址:回到十七世纪,让我来编算一本常用对数表作者:小牛

自十八、九岁学习了对数后,就觉得造对数表真不简单。据说十七世纪那时,说如果谁发现了对数表上有一个数字错,就奖一两黄金。

 

   据百科百度:纳皮尔(1550~1617年),苏格兰数学家,对数的创始人。他的最大贡献是发明了对数。纳皮尔的杰作《奇妙的对数定律说明书》于1614年6月在爱丁堡出版。纳皮尔的朋友,英国人布里格斯,将纳皮尔创立的对数改为常用对数,它才得到广泛使用。并在1624年出版了《对数算术》,公布了以10为底包含1—20000及90000—的14位常用对数表。 

   1671年,著名的德国数学家莱布尼兹(G.W.Leibnitz)制成了第一台能够进行加、减、乘、除四则运算的机械式计算机。

 

   可见,布里格斯编算常用对数表时,机械式计算机还未发明,看来只能是手算了。

   我那时不知道十七世纪是怎样编算对数表的。但我还是想自己亲手来编一份,那怕为数很少也可以,只想弄明白,对数表是怎样编算的。这一心愿几十年来一直没有了结。

   想起二十世纪五六十年代,对数表不能离手,少了它就无法工作,真不胜感慨。当70年代用上了飞鱼牌手摇计算机后,就告别了六位对数表。当80年代用上了电子计算器后,又告别了八位函数表和手摇计算机。在电脑已普及的今天,我仍有用手算方法来造对数表的想法,这似乎有点可笑,但“怎样造原始的对数表”的问题,仍牵引着我的心,一直想了此一事。

   想不到年老了,竟灵光一闪,得到了一个造表方法,并且可以分配到许多人,各自独立计算不同的数值范围,最后汇集于一起,成为一本对数表,这样就可以较快完成,不必化几年、乃至几十年时间了。

   所谓常用对数,就是以10为底时,有方程10^D=Z。如果知道一个数Z (叫真数),则10的指数就是D, D就叫十进对数,也叫常用对数。 给出Z,求D。 并以D = Lg Z表示之。例如10^D=2,给出2,求D。 并以D = Lg2表示之。查对数表可得D = Lg2 =0.30103,即10^0.30103 = 2 。亦即10的0.30103次方等于2。

   10的整数次乘方可以算,可是0.30103次方怎么算呢?真是无法理解。但如果说,因为0.30103=30103/,那末先算10的30103的次方,再开次方,倒是有道理的,但2的对数是0.30103,决不可能是这样算的,所以仍很玄。那么2的对数是0.30103,到底是怎样算出来的呢?

   这么一想就有一个启发,就是10的零点几次方,可以这样算:先乘方、再开方,而主要是开方。例如10的开平方,就是10的0.5次方。10的开3方,就是10的0.33333次方等等。受此启发,经反复试算,得到编算常用对数表的步骤和方法:

 

                             $1  先求最基础的对数

 

   1 、我想,世界上第一个常用对数,可能就是3.的对数0.5。因为  3. = √10

= 10^(1/2)= 10^0.5 ,而0.5就是它的对数。10的开方,用笔算可以一次开出,也可以用逐步试算趋近。如先用3.16*3.16=9.9856,不够,再用3.163*3.163=10.004569,超过了一点,再用

3.16228*3.16228 =10.0000…最后定为3.。也就是说3.的对数为0.。

  2、 第二个,可能就是2.的对数为0.了。因为2. = 3√10 =10^(1/3)

= 10^0.33333 ,而0.就是它的对数。10的开3方比较麻烦,可以逐步试算趋近。如先用2.15*2.15*2.15 = 9.9384,不够,再用2.1544*2.1544*2.1544 = 9.99952,还不够,再试,最后定为2.。也就是说2.的对数为0.。

   3 3.的对数为0.。2.的对数为0.…这样的对数,我称它们为最基础的对数。最基础的对数需要多少个呢?这里仅算出8个,我想也许够了。 即只要计算:

10的1/2次方,亦即10的开2次方。注意2是素数。

10的1/3次方,亦即10的开3次方。注意3是素数。

10的1/5次方,亦即10的开5次方。注意5是素数。

10的1/7次方,亦即10的开7次方。注意7是素数。

10的1/11次方,亦即10的开11次方。注意11是素数。

10的1/13次方,亦即10的开13次方。注意13是素数。

10的1/17次方,亦即10的开17次方。注意17是素数。

10的1/19次方,亦即10的开19次方。注意19是素数。

就可以得到相应的对数。用这些最基础对数,再去拓展其他的对数。计算这些最基础对数,只要用开方就可以了。开方虽然很烦,特别是开7次方以上时,要逐步、反覆连乘7次以上来校核改进,的确很烦,但毕竟是可以用手工算得出来的。我想,在十七世纪时,也只能这样硬算了。

    4 、  而10的开4次方, 10的开6次方, 10的开15次方…就不必了,因为它们可以根据上述最基础的对数,就能方便算出的,不必白费力气了。

 

    由  10  的  开 D 次 方 所 得 的 《基  础 对  数  表》

 

 

 

 

 

10的开 D次方

最基础的真数Z

相应的对数D

即10的指数D

 

2√10=

3.

0.

D=1/2

 

3√10=

2.

0.

D=1/3

 

5√10=

1.

0.

D=1/5

 

7√10=

1.

0.

D=1/7

 

11√10=

1.

0.090909

D=1/11

 

13√10=

1.

0.076923

D=1/13

 

17√10=

1.

0.058824

D=1/17

 

19√10=

1.

0.052632

D=1/19

 

 

                            $2  基 础 对 数 表 扩 充

 

   有了上面的最基础的对数之后,就根据对数基本原理:真数相乘除,对数便加减的方法,可将最基础的对数扩充。例如:

1   (2√10)*(5√10) = 3.*1.=5.01187

 相应之对数为:0.+0.=0.70000

2   (2√10)/(5√10) = 3./1.=1.99526

 相应之对数为:0.-0.=0.30000

3  这样,扩充后的对数,共96个,见下表:

 

 

 

      基 础 对 数 扩 充 表

 

 

            由最基础的真数和对数,经真数乘除、对数加减而得

 

 

     真数

    对数

    真数

    对数

    真数

    对数

1.00546

0.00236

1.55052

0.19048

3.89860

0.59091

1.00557

0.00241

1.56852

0.19549

4.39397

0.64286

1.00874

0.00378

     1.58489

0.20000

4.64159

0.66667

1.00952

0.00411

1.59104

0.20168

5.01187

0.70000

1.01436

0.00619

1.65875

0.21978

5.23960

0.71930

1.01811

0.00779

1.71303

0.23376

5.54100

0.74359

1.03273

0.01399

1.74753

0.24242

5.72240

0.75758

1.04256

0.01810

1.78909

0.25263

6.44950

0.80953

1.05753

0.02429

1.80472

0.25641

6.81290

0.83333

1.07668

0.03209

1.81478

0.25882

7.22480

0.85883

1.09214

0.03828

1.89201

0.27692

7.35640

0.86667

1.12706

0.05195

1.90854

0.28070

7.53220

0.87692

     1.12884

0.05263

1.93070

0.28571

7.77870

0.89091

1.14062

0.05714

1.95393

0.29091

8.12410

0.90978

     1.14505

0.05882

1.99526

0.30000

8.24070

0.91596

1.16395

0.06593

     2.15443

0.33333

8.59140

0.93406

     1.19378

0.07692

2.20220

0.34286

8.76741

0.94287

1.23091

0.09023

2.27585

0.35714

8.87260

0.94805

     1.23285

0.09091

2.43201

0.38597

9.15640

0.96172

1.28556

0.10909

2.46693

0.39216

9.28780

0.96791

1.31113

0.11765

2.51189

0.40000

9.45600

0.97571

1.32763

0.12308

2.56502

0.40909

9.59180

0.98190

1.35936

0.13333

2.57191

0.41026

9.68310

0.98601

1.36693

0.13575

2.64897

0.42308

9.85840

0.99381

1.38413

0.14118

2.76170

0.44118

9.85840

0.99381

     1.38950

0.14286

2.80136

0.44737

9.85840

0.99381

1.39168

0.14354

2.99358

0.47619

9.85840

0.99381

1.40400

0.14737

     3.16228

0.50000

9.85840

0.99381

1.41167

0.14973

3.41455

0.53333

9.85840

0.99381

1.42510

0.15385

3.56970

0.55263

9.85840

0.99381

1.46780

0.16667

3.62096

0.55882

9.85840

0.99381

1.47174

0.16783

3.77505

0.57692

9.85840

0.99381

 

     当然,这个表很小,数量远远不够。但可以作基础,再通过多次交错乘除,得到更多的对数。但要想通过更多次交错乘除,得到全部对数,是不可能的,得另找出路。其实,只要设法先求出“素数的对数”,那就一劳永逸地解决问题了。这张《基础对数扩充表》就为下一步求“素数的对数”作了准备。

 

                                   $3 求素数的对数

 

   大家知道,合数是素数的乘积。所以,只要知道素数的对数,就可以用乘除、加减法,算出合数的对数。于是任何数的对数,都可以算出。那末,素数的对数怎样求呢?

    分两步:

   第一,选择数据。在《对数扩充表》内,选择尽量靠近所求素数的两个数。例如,要算2的对数,表中仅有真数1.995262.20220 其中1.99526离2很近,选中。而2.20220离2还远,我们就不用它,另找。方法是:仍利用上面的对数扩充表,找到1.95393与1.03273,两个数相乘,得:

1.95393*1.03273=2.01788,(离2很近了),选中。其相应对数为:

0.29091+0.01399=0.30490 。

这样,就取1.99526与2.01788两个数去内插,求2的对数。1.99526与2.01788这两个数,称做逼近值。

   第二,内插。

   真数         对数

a= 1.99526     A=0.30000

b= 2.01788     B=0.30490    求 Z=2 的对数。

 

在很小区间内(所求值百分之一、二的误差),采用线性内插公式 

            Lg Z = A+(B-A)/(b-a)*(Z-a)

计算得Lg 2 = 0.30103

   这个方法只用到乘,除、加、减,所以可用手算。为减少工作量,最好多采用乘法去找逼近值、内插。

 

        以下是 Lg 2、Lg 3、 Lg 5、Lg 7 、Lg41、Lg 43的计算过程:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数 据 准 备 中 的 真 数 和 对 数 ,来自 《基 础 对 数 扩 充 表》

 

 

 

 

 

 

 

 

代码式

真数

对数

代码式

真数

对数

数据准备

1

1.99526

0.30000

2

1.95393

0.29091

 

 

 

 

3

1.03273

0.01399

 

 

 

 

4=2*3

2.01788

0.30490

 

 

 

 

    Lg Z=A+(B-A)/(b-a)*(Z-a)

内插

1

a= 1.99526

A=0.30000

Z=2

 

Lg 2=0.30103

 

4

b= 2.01788

B=0.30490

 

 

 

 

 

 

 

 

 

 

 

代码式

真数

对数

代码式

真数

对数

数据准备

1

2.99358

0.47619

2

3.77505

0.57692

 

 

 

 

3

1.23091

0.09023

 

 

 

 

4=2/3

3.06688

0.48669

 

 

 

 

    Lg Z=A+(B-A)/(b-a)*(Z-a)

内插

1

a= 2.99358

A=0.47619

Z=3

 

Lg 3=0.47711

 

4

b= 3.06688

B=0.48669

 

 

 

 

 

 

 

 

 

 

 

代码式

真数

对数

代码式

真数

对数

数据准备

1

5.01187

0.70000

2

4.64159

0.66667

 

 

 

 

3

1.05753

0.02429

 

 

 

 

4=2*3

4.90862

0.69096

 

 

 

 

    Lg Z=A+(B-A)/(b-a)*(Z-a)

内插

4

a= 4.90862

A=0.69096

Z=5

 

Lg 5=0.69896

 

1

b= 5.01187

B=0.70000

 

 

 

 

 

 

 

 

 

 

 

代码式

真数

对数

代码式

真数

对数

数据准备

1

7.22480

0.85883

4


讯享网

7.35640

0.86667

 

2

1.03273

0.01399

5

1.04256

0.0181

 

3=1/2

6.99583

0.84484

6=4/5

7.05609

0.84857

 

 

 

 

    Lg Z=A+(B-A)/(b-a)*(Z-a)

内插

3

a= 6.99583

A=0.84484

Z=7

 

Lg 7=0.84510

 

6

b= 7.05609

B=0.84857

 

 

  

               

 

 

代码式

真数

对数

代码式

真数

对数

数据准备

1

5.23960

0.71930

4

9.28780

0.96791

 

2

1.27427

0.10526

5

2.27585

0.35714

 

3=1*2

4.11184

0.61404

6=4*5

4.08102

0.61077

 

 

 

 

    Lg Z=A+(B-A)/(b-a)*(Z-a)

内插

6

a=4.08102

A=0.61077

Z=41

 

Lg 41=0.61278

 

3

b=4.11184

B=0.61404

 

 

 

 

 

 

代码式

真数

对数

代码式

真数

对数

数据准备

1

3.77505

0.57692

4

4.39397

0.64286

 

2

1.14062

0.05714

5

1.01811

0.00780

 

3=1*2

4.30590

0.63406

6=4/5

4.31582

0.63506

 

 

 

 

    Lg Z=A+(B-A)/(b-a)*(Z-a)

内插

3

a=4.3059

A=0.63406

Z=43

 

Lg 43=0.63347

 

6

b=4.31582

B=0.63506

 

 

 

 

         其他素数的对数,计算过程完全相同。以 下 是 100 以 内 25个 素 数 的 对 数

素数

对数

素数

对数

素数

对数

2

0.30103

29

1.46240

67

1.82607

3

0.47712

31

1.49136

71

1.85126

5

0.69897

37

1.56820

73

1.86332

7

0.84510

41

1.61278

79

1.89763

11

1.04139

43

1.63347

83

1.91908

13

1.11394

47

1.67210

89

1.94939

17

1.23045

53

1.72428

97

1.98677

19

1.27875

59

1.77085

 

 

23

1.36173

61

1.78533

 

 

 

                                  $4  求合数的对数

 

   有了相当多的素数的对数后,合数的对数就很容易算了。方法如下:

 

合数=

素数相乘

素数对数相加

合数的对数

合数

4=

2*2

0.30103+0.30103=

0.60206

4=

6=

2*3

0.30103+0.47712=

0.77815

6=

8=

2*4

0.30103+0.60206=

0.90309

8=

9=

3*3

0.47712+0.47712=

0.95424

9=

10=

2*5

0.30103+0.69897=

1.00000

10=

12=

3*4

0.47712+0.60206=

1.07918

12=

14=

2*7

0.30103+0.84510=

1.14613

14=

15=

3*5

0.47712+0.69897=

1.17609

15=

16=

4*4

0.60206+0.60206=

1.20412

16=

18=

3*6

0.47712+0.77815=

1.25527

18=

20=

4*5

0.60206+0.69897=

1.30103

20=

21=

3*7

0.47712+0.84510=

1.32222

21=

22=

2*11

0.30103+1.04139=

1.34242

22=

24=

4*6

0.60206+0.77815=

1.38021

24=

96=

3*4*8

0.47712+0.60206+0.90309=

1.98227

96=

98=

2*7*7

0.30103+0.84510+0.84510=

1.99123

98=

99=

3*3*11

0.47712+0.47712+1.04139=

1.99563

99=

                      附:1 0 0  以 内  的  十 四 位  对  数  表

                               录自电脑,可与上述计算结果对比,看误差有多大。

N

Lg N

N

Lg N

N

Lg N

1

0.00000000000000

34

1.226

67

1.083

2

0.398

35

1.028

68

1.624

3

0.966

36

1.729

69

1.726

4

0.796

37

1.699

70

1.426

5

0.602

38

1.681

71

1.908

6

0.364

39

1.650

72

1.127

7

0.426

40

1.796

73

1.046

8

0.194

41

1.974

74

1.098

9

0.933

42

1.790

75

1.170

10

1.00000000000000

43

1.959

76

1.079

11

1.023

44

1.619

77

1.248

12

1.062

45

1.534

78

1.048

13

1.684

46

1.157

79

1.044

14

1.824

47

1.572

80

1.194

15

1.568

48

1.559

81

1.865

16

1.592

49

1.851

82

1.372

17

1.827

50

1.602

83

1.607

18

1.331

51

1.794

84

1.188

19

1.283

52

1.480

85

1.429

20

1.398

53

1.079

86

1.357

21

1.392

54

1.297

87

1.862

22

1.221

55

1.424

88

1.017

23

1.759

56

1.620

89

1.491

24

1.161

57

1.249

90

1.932

25

1.204

58

1.294

91

1.109

26

1.082

59

1.214

92

1.556

27

1.899

60

1.364

93

1.394

28

1.222

61

1.077

94

1.970

29

1.896

62

1.825

95

1.885

30

1.966

63

1.358

96

1.957

31

1.427

64

1.389

97

1.624

32

1.991

65

1.286

98

1.249

33

1.789

66

1.187

99

1.755

 

 

                         $5  分工合作、同心协力编常用对数表

 

     最基础对数→对数扩充表→素数的对数→合数的对数,这样的四个步骤,使许多人同时作业成为可能。组织分工如下:

   1、先由少数人计算最基础对数。要准,取位要多,如编八位对数表,最基础对数至少要取十位以上。

   2、再由少数人,分工计算对数扩充表。最基础对数与对数扩充表便作为公用。

   3、组织许多人,同时计算素数的对数。每人分担一段,如1—50 、50—100 、 101—200 、 201—400…在各自范围内,计算素数的对数。素数的对数也作为公用。

   4、组织许多人,同时计算合数的对数。也是每人分担一段,既互用成果,又互不干涉。

   5、每人每天的成果,汇总公布,以便下一步工作时互相利用,提高工效。

 

                                       结 语

     假如把乘除比作一条汹涌的河,那末对数表就是一座平缓的桥。它使众多的实用计算者,较轻松的到达彼岸,极大的提高工作效率。但时隔三百年至于今天,那些造桥的人,乃至造桥的方法,己淹没在历史的巨卷之中,对数表也进入了历史博物馆。

   我们纪念逝去的人,还要发愿:要发扬先辈追求真理、为全人类效力的精神,为科学的理性发展而学习、而奋斗!

                                                                           2012年6月 端午期间

小讯
上一篇 2025-04-02 17:48
下一篇 2025-03-19 14:16

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33724.html