学校教科书I中的任务

第一部分
第二部分
第三部分

考虑一下“ 5至15岁儿童的任务”一书中针对问题38的算法解决方案

计算金额:

 f r a c 1 1 c d o t 2  + f r a c 1 2 c d o t 3 + f r a c 1 3 c d o t 4 + + ˚F ř 一个Ç 1个99 Ç d ö 100      


(错误不超过答案的1%)

以下是在drRacket的 Scheme (Lisp)中计算此系列的部分和的算法(drRacket允许您以普通分数执行计算):

#lang racket (define series_sum ( lambda (n) (if (= n 0) 0 (+ (/ 1 (* n (+ n 1))) (series_sum(- n 1))) ) ) ) (series_sum 10) (series_sum 100) (series_sum 1000) (series_sum 10000) (series_sum 100000) (series_sum 1000000) (define series_sum_1 ( lambda (n) (if (= n 0) 0 (+ (/ 1.0 (* n (+ n 1.0))) (series_sum_1(- n 1.0))) ) ) ) (series_sum_1 10) (series_sum_1 100) (series_sum_1 1000) (series_sum_1 10000) (series_sum_1 100000) (series_sum_1 1000000) 


最后两个示例drRacket计算出错误



该程序可以在ideide.comcodepad.org上运行。

Python中的相同算法
 def series_sum(n): if n==0: return 0 else: return 1.0/(n*(n+1.0))+series_sum(n-1.0) print(series_sum(10)) print(series_sum(100)) 

链接到ideone.com


如果我们考虑普通分数的部分和,我们可以看到级数的和是

 f r a c n n + 1



让我提醒你  lim fracnn+1= frac11+ frac1n= frac11=1n\至 infty

微分与积分学课程363(4)的第二卷考虑了一般情况

 sum frac1 alpha+n alpha+n+1= frac1 alpha+1



“开发人员数学” 课程中 的任务
查找序列中的成员数  frac2n14n+5 躺在间隔之外 1 frac110001+ frac11000



让我们继续本文的主题。


让我们考虑一本问题书中的另一个示例。
43 。 兔子数(斐波纳契数),形成一个序列 a1=11358132134... 在其中 an+2=an+1+an 给大家 n=12... 。 找到最大的公约数除数 a100a99

答案:两个相邻的斐波那契数是互质数,即  gcdun+1un=1
(gcd是最大的公约数,即GCD)。

“书中的证明”,超出数学教科书的范围” [10-11]
扰流板方向
从平等 un+2=un+1+un 因此  gcdun+2un+1= gcdun+1un 。 以这种方式进行备份,我们来  gcdu2u1= gcd1,1=1 ,因此两个相邻的斐波那契数是互质的。

证明  gcdun+2un+1= gcdun+1un 这本书没有给出,而是根据欧几里得算法
 gcdun+2un+1= gcdun+1r
在哪里 -除法师 un+2un+1

而且因为斐波那契数 r=un
然后
 gcdun+2un+1= gcdun+1un


在下一个任务中,您需要计算黄金分割率 frac sqrt5+12\约1,618 。 [这是明信片的长宽比,在切开一边为明信片较小边的正方形时,仍保持相似。]

53 。 对于斐波那契数列 an 任务43找到关系的极限  fracan+1an 在努力的同时 n 到无穷大:

 fracan+1an=2 frac32 frac53 frac85 frac138 frac2113 frac3421



考虑代表该系列两个相邻成员之间差异的细分  fracan+1an

甚至该系列的成员  fracan+1an 代表一个不断增长的序列 xn

 frac32 frac85 frac2113...



奇数行成员  fracan+1an 代表递减顺序 yn

2 frac53 frac138...



通过嵌入的间隔引理(微分和积分学课程,38)

c= limxn= limyn


对于我们在某一时刻的行 c 公平平等  fracan+2an+1= fracan+1an

划分 an+2=an+1+anan+1 我们得到方程式  fracan+2an+1=1+ fracanan+1
通过更换  fracan+2an+1=x fracanan+1= frac1x 我们得到二次方程 x=1+ frac1x

如果在geogebra程序中我们将点2和  frac32 frac32 frac53 frac53 frac85 等 -得到一个相似的数字

为了比较




通常,在Python中有一种用于计算斐波纳契数的标准算法。
该算法在Python.org上可用
 def fib(n): a, b = 0, 1 while a < n: print(a) a, b = b, a+b fib(100) 

您可以检查链接
更改此算法,以使其打印出近似黄金分割率。 对于两个相邻的数字a和b,我们将a + b的总和除以b
 def fib(n): a, b = 0.0 , 1.0 while a < n: print((a+b)/b) a, b = b, a+b fib(100) 

您可以检查链接

这是SICP教程中有关黄金分割率的一些任务。
任务
练习1.13。
证明Fib(n)是最接近的整数  varphin/ sqrt5 在哪里  varphi=1+ sqrt5/2

练习1.35。
表明黄金分割率  varphi (第1.2.2节)是转型的固定点 x\到1+1/x ,并使用此事实进行计算  varphi 使用定点过程。

练习1.37。
...定义cont-frac过程,以便计算(cont-frac ndk)给出值 k -元素有限连续分数。 通过计算与1的近似值来测试您的程序
 (cont-frac (lambda (i) 1.0) (lambda (i) 1.0) k) 

对于顺序值 k


下面的示例来自任务书“ 5至15岁儿童的任务”
54 。 计算无限连续分数

1+ frac12+ frac11+ frac12+ frac11+ frac12+...



UPD 考虑方程式

 alpha=1+ frac12+ frac1 alpha


根据《数论》一书中的定理236和235:

 alpha= fracP1 alpha+P0Q1 alpha+Q0


我们组成一个价值表 PnQnn=0,1

1个2
P1个3
1个2


这样  alpha= frac3 alpha+12 alpha+12 alpha22 alpha1=0

由于  alpha>0 然后

 alpha= frac1+ sqrt32


考虑一下“数学课本后面”一书中的问题[10-11]
4 。 显示该号码  sqrt1+ sqrt1+ sqrt1+... 等于数字  varphi 定义黄金分割率。

考虑选项 xn= sqrtc+ sqrtc+...+ sqrtc
微分与积分的过程,35(2)
这样 xn+1 从...获得 xn 根据公式

xn+1= sqrtc+xn


...根据主定理,选项 xn 有一定的限制 。 为了确定它,我们将等式传递到极限

x2n+1=c+xn;


我们以这样的方式 满足二次方程

a2=c+a


这个等式的根源不同。 但是我们感兴趣的极限 不能为负,因此,它恰好等于正根:

a= frac sqrt4c+1+12



从中我们可以得出结论,“黄金比例”是方程的解 a2=c+a
c=1


此外,在微分和积分学课程35(3)中,考虑了用于计算逆数的算法
c 是任何正数,并放入 xn=cyn 。 上面写的递归关系将被替换为:

yn+1=yn2cyn


取初始值 y0 在以下条件下: 0<y0< frac1c 我们明白了 yn 单调增加,往往会  frac1c 。 根据此方案,在计数机上,计算逆数 c


逆数计算算法 c 在Python中:
Ideone.comcodepad.org
 def reciprocal(c,y0,n): arr=[] for i in range(n): arr.append(y0) y0=y0*(2-c*y0) return arr 

倒数功能以数字作为输入 c 初始值 y0 ,迭代次数 n 并返回数字的“近似值”数组  frac1c
y0=0.1c<10
y0=0.0110美元<c <100美元
y0=0.001100<c<1000

互惠函数如何在各种情况下工作的示例 c

 >>> reciprocal(3,0.1,10) 

[0.1、0.17、0.2533、0.31411733000000003、0.3322255689810133、0.3333296519077525,
0.3333333332926746、0.3333333333333333337、0.3333333333333333337、0.33333333333333337]

 >>> reciprocal(8,0.1,10) 

[0.1、0.12、0.1248、0.12499968、0.1249999999991808、0.125、0.125、0.125、0.125、0.125]

 >>> reciprocal(5,0.1,10) 

[0.1,0.15000000000000002,0.18750000000000003,0.19921875000000003,0.19999694824218753,0.1999999999534339,0.20000000000000004,0.19999999999999998,
0.19999999999999998、0.19999999999999998]

几何解释


让我们尝试使用切线法来近似反数。
切线 y=fx0xx0+fx0 功能图 y= frac1x 用公式表示 y= frac2x0 fracxx20

替换数字 1,2,3,4... 代替 x0 我们得到切线方程

y=2x


y=1 fracx4


y= frac23 fracx9


y= frac12 fracx16


建立这些图


如果将双曲线下移到  alpha 然后它越过横坐标  frac1 alpha
切线方程转换为 y= frac2x0 fracxx20 alpha
此外,将切线的方程式等于​​零并表示 x 我们得到方程式 x=x0 fracfx0fx0

相反 fx0 替代品  frac1x0 alpha
相反 fx0 替代品  frac1x20

我们得到表达 x=x0+ frac1x0 alphax20
扩大括号,我们得到 x=x0+x0 alphax20

代替 0.1 进入方程式 x=x02 alphax0 并查看哪些值将“运行” x alpha=2 我们得到 0.10.180.290.420.490.5

将这些值代入方程式 y= frac2x0 fracxx202 我们得到直接

y=0.111 fracx0.897


y=0.222 fracx0.81


y=0.816 fracx0.504


y=0.857 fracx0.49


y=1.5 fracx0.326


y=2 fracx0.25





平方根提取


回到非理性表达式,我们考虑一种提取平方根的迭代方法。
我们将使用Heron迭代方法编写算法

xn+1= frac12xn+ fracaxn


 def square_root(a,n): # a -  , n -   x0=1 #    1 arr=[] for i in range(n): arr.append(x0) #      x0=0.5*(x0+a/x0) #      return arr print square_root(2,10) 

codepad.org

使用Rafael Bombelli使用的连续分数计算平方根

寻找价值  sqrtn ,首先我们定义其整体近似值:  sqrtn=a pmr 在哪里 0<r<1 。 然后 n=a pmr2=a2 pm2ar+r2 。 从这里很容易推断出 r= frac|na2|2a pmr 。 在公式中替换结果表达式  sqrtn=a pmr ,我们得到了连续的分数扩展:

a pm frac|na2|2a pm frac|na2|2a pm frac|na2|2a pm cdots




因此,我们可以编写使用分解成连续分数的平方根提取算法
 def square_root(n,a,n_count): # n- , a -    x0=a #    a arr=[] for i in range(n_count): #       a arr.append(x0-a) #  a x0=2*a+(na*a)/x0 return arr print square_root(2.0,1.0,10) 

codepad.org

通常,实数和复数以及一个或多个变量的功能可以是私有分子和分母。
提取整数部分的方法允许以无穷连续分数的形式表示无理数,其分子为单位(频繁的分子等于1)。
这是一个连续小数扩展的例子  sqrt5 摘自《代数》一书

 sqrt52= frac sqrt52 sqrt5+2 sqrt5+2= frac1 sqrt5+2



这样  sqrt5=2+ frac1 sqrt5+2

选择数字的整数部分  sqrt5+2E sqrt5+2=4 。 均值  sqrt5+2 可以表示为 4+ alpha 。 很明显  alpha= sqrt5+24= sqrt52 因此  sqrt5+2=4+ sqrt5+2 。 再次,我们消除第二项分子中的非理性:

 sqrt52= frac1 sqrt5+2


结果是:

 sqrt5=2+ frac14+ frac1 sqrt5+2


让我们执行另一个类似的步骤:

 sqrt5=2+ frac14+ frac14+ frac1 sqrt5+2


容易看出,在该示例中,将整个部分分离出来并形成连续部分的过程没有止境。 在每个新分母中都会出现 4 和期限  sqrt52 。 因此,很明显  sqrt5 表示为无限的连续分数:

 sqrt5=[2444...]




假说


如果 d in mathbbN sqrtd notin mathbbN 然后是数字的连续分数  sqrtd+[ sqrtd] 纯粹是周期性的。
Evarist Galois证明了这一假设。

即 如果是分数的非周期部分 [1;2,2,2...]= sqrt2 添加整个部分 [ sqrt2]=1 那么我们得到一个纯周期性的分数 [2,2,2...]

 sqrt3=[1;1,2...];
 sqrt3+1=[2,1...]

 sqrt5=[2;4,4,4...];
 sqrt5+2=[4,4,4...]

 sqrt6=[2;2,4...];
 sqrt6+2=[4,2...]

 sqrt13=[3;1,1,1,1,6...];
 sqrt13+3=[6,1,1,1,1,1...]

云计算WolframAlpfa
WolframAlpfa使用连续分数运算来计算连续分数
计算值  sqrt3
链接
计算值  sqrt3+1
链接

如果在根中按照Bombelli方法分解

\ sqrt {n} = a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ { 2} |} {2a \ pm \ cdots}}}}}}}


添加到第一学期 ,我们得到一个纯周期性分数

\ sqrt {n} + a = 2a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ {2} |} {2a \ pm \ cdots}}}}}}}



剩下的是使分数变成更熟悉的形式(分子中包含单位)。
将分数的分子和分母除以 |na2| 我们得到表达

\ sqrt {n} + a = 2 a \ pm {\ frac {1} {\ frac {2a} {| na ^ {2} |} \ pm {\ frac {1} {2a \ pm {\ frac { 1} {\ frac {2a} {| na ^ {2} |} \ pm \ cdots}}}}}}}


这样

 sqrt2+1=2+ frac1 frac21+ frac12+ frac1 frac21+..=[2,2,2...]


 sqrt3+1=2+ frac1 frac22+ frac12+ frac1 frac22+..=[2,1...]


 sqrt5+2=4+ frac1 frac41+ frac14+ frac1 frac41+..=[4,4,4...]


 sqrt6+2=4+ frac1 frac42+ frac14+ frac1 frac42+..=[4,2...]


 sqrt13+3=6+ frac1 frac64+ frac16+ frac1 frac64+..=[6 frac32...]


我们将编写一个程序来计算连续分数近似值 [6 frac32...]
 #lang racket (define continued_fraction ( lambda (n) (if (= n 0) 1 (+ 6 (/ 1 (+ 3/2 (/ 1 (continued_fraction(- n 1)))))) ))) (continued_fraction 4) 

codepad.org
在第四步中,我们得到 6 frac38186305 等于 6.60555114... 一会儿  sqrt13+3\大6.60555127




PS解决问题(“ 5至15岁儿童的问题”)
27 。 证明数字的余数 2p1 奇数素数
p 等于 1
(例如: 2 2 = 3,一个+ 1 2 4 = 5,b + 1 2 6 = 7,c ^ + 1 2 10 - 1 = 1023 = 10 Ç d ö 93  
《量子》杂志的“连续分数惊人历险记”中考虑了此问题。

书籍:
“面向5至15岁儿童的任务”,V。I. Arnold。
“微分和积分学的过程” G. M. Fichtenholtz
“数论” A. A. Buchstab
“在数学教科书的页面后面” N. Ya。Vilenkin,L.P。Shibasov,Z.F。Shibasova
“代数” N. Ya。Vilenkin,R。S. Guter,S。I. Schwarzburd
数字算法Ercegovac Milos D.,Lang Tomas
“计算机程序的结构和解释” Harold Abelson,Gerald Sassman

另请参阅
文章 “关于采访中不再提供的一项任务”。
Spice IT Recruitment的博客向各个公司发布了采访任务。
Yandex中的采访任务
此视频中, A。Savvateev通过在特斯拉的采访解决了问题。

Source: https://habr.com/ru/post/zh-CN419237/


All Articles