S7G4 用图示法显示分形迭代
有一些数列题,比如: a{n+1} = (1-an)/(1+an),给定 a1= k ,求 a2020。像这一类的数列题,一般都是代个几项去归纳否有周期规律。这类问题搭配函数图像显示,就可发现其规律关系或者收敛情况。
这个任务主要就带大家用 Geogebra 探究分式型迭代的关系,将迭代的结果结合点的坐标来显示可以观察出其迭代的周期性。

学习要点
利用表格进行迭代
使用序列与扁平列表来建立交错型的点列
利用 Polyline 来绘制折线段
任务1: 用表格区计算迭代结果

在这部分我们希望能让程式自动计算出迭代 n 次的结果. 对于这类的迭代可以使用 Geogebra 的表格区来达成。给定迭代的函数 f , A1 为初始值, 使得 A2 = f(A1), A3=f(A2), .... 。 要达成这效果可通过对表格的拖拉来完成。关键步骤如下:
f(x)= 1/(1+x)
A1 = 1
A2 = f(A1)
#从A2开始下拉, 将公式复制到 A23
任务2: 将迭代结果转化成点列显示在表格区

为了将迭代的结果图示化,要先将数值转化为点。在这有三类点 Bs,Cs,Ds。其中 Bs 为 x 轴上的点,因此 B1 定义为 (A1,0)。而 Cs 为映射到函数后的点,因此 C1=(A1,f(A1) )。 最后,为了达到将 这次的 y 坐标转化为下次的 x 坐标,就需要将这个点在映射到 y=x 上。因此,D1=(f(A1),f(A1)) 。关键步骤如下:
B1 =(A1,0)
C1 =(A1,f(A1))
D1 = (f(A1),f(A1))
y=x
#将 B1,C1,D1开始下拉, 将公式复制到 B23,C23, D23
任务3: 利用扁平列表来制作折线段

在建好点后,我们要用一个滑动条 n 来控制这些点的连线的出现。在这主要使用 sequence 与 polyline 来连线。先建立点列 Bs Cs Ds, 接着利用 Sequence({Bs(k),Cs(k),Ds(k)},k,1,n) 来依序连接 B1,C1,D1; B2,C2,D2; B3,C3,D3;... 。但使用这语法会形成双层序列,因此,需要利用 flatten 指令来将这个转化为单层的序列,才能使用 polyline 来连接这些点。 关键步骤如下:
n = Slider(1,23,1)
Ls = flatten(Sequence({Bs(k),Cs(k),Ds(k)},k,1,n))
polyline(Ls)
任务4: 用向量来标示最后一次迭代结果

当连线过多时,不易察觉最后一次的位置。这时可以利用向量来将最后一次的连线标注。细节操作如下:
vbn = Vector(Bs(n), Cs(n))
vcn = Vector(Cs(n), Ds(n))
任务5: 用if与滑动条来切换不同函数的显示

到此已经可以显示一个函数的迭代情况,若要快速显示不同函数的迭代情况,可以加入一个滑动条 t ,搭配 if 函数来切换不同的函数。以下用三个函数的切换为例,关键指令如下:
t = slider(1,3,1)
f1(x) = 1/(1+x)
f2(x) = (1-x)/(1+x)
f3(x) = (1+x)/(1-x)
f(x) = If( t==1,f1,t==2,f2,f3)
总结回顾
利用图示来显示迭代的过程可以方便观察到迭代的周期性与收敛情况。当函数图像对 y=x 对称时, 例如 y=(1-x)/(1+x) 可改写为 xy+y+x=1 。这类函数的迭代周期都为 2 。而当函数图像对 y=-x 对称时, 例如 y=(1+x)/(1-x) 可改写为 xy+y-x=1 , 这类函数的迭代周期都为 4 。而对于 y=1/(1+x) 其迭代最后会收敛在 y=x 与 y=1/(1+x) 的交点。这时可解出其收敛值为黄金比例 0.618。 除了,以上三个函数,大家也可再试试看其他的函数的迭代情况。
相关链接
【GGB】https://www.geogebra.org/classic/hmchaz6d
【Bili】https://www.bilibili.com/video/bv1ii4y1L77u
【youtube】https://www.youtube.com/playlist?list=PLXH05kw-i_5JKFpX8oPPpYBa5T4o-s3qz

