上一个作品,我们是在数轴上依次画出表示根号2、根号3、根号4、根号5……根号10的点:
那么,类似地,可以利用勾股定理(毕达哥拉斯定理),作出长为根号2、根号3、根号4、根号5……的线段:
源文件获取方式,请见文末
有人称之为毕氏螺线。毕氏,即毕达哥拉斯。也有人称之为根号数的迭代。
前一个叫法好理解,而后一个叫法,则与其制作有关。
那么,是怎么制作的呢?
迭代
何为迭代?
每一次对过程的重复称为一次迭代,而每一次迭代得到的结果会作为下一次迭代的初始值。
而毕氏螺线是怎么得来的?我们先来看下图中的点B2,B3,B4是怎么得来的。
将点B1作为起始点:
点B4,B5,B6,……也可以依照此规律作出来。
而作出这些点的过程,就是不断地对上一个点进行相同操作(垂直,长为1)的重复过程,即为迭代。
在GeoGebra中,有迭代(Iteration)指令:
迭代( <表达式>, <变量>, <起始值>, <迭代次数> )
▪ 例:
将点B以点A为中心,逆时针旋转90度,得到第一个新点;再将此点以点A为中心,逆时针旋转90度,得到第二个新点;又将此点以点A为中心,逆时针旋转90度,得到第三个新点;
也就是迭代三次,即:
迭代(旋转(A, -90°, P), P, {B}, 3)
其中,起始值需用花括号{ }括起来。
由上图可见,只得到一个新点——点C。点C为第三个新点,也就是最后一次迭代所得结果。
那么,如果需要显示迭代过程中所产生的点,应该如何做呢?
在GeoGebra中,有相应的指令——迭代列表(IterationList)指令:
迭代列表( <表达式>, <变量>, <起始值>, <迭代次数> )
迭代列表指令,返回的是一个列表,其中,第一个元素为起始值,其后的元素为每次迭代所得到的结果。
▪ 以上面的例子为例,如需显示迭代过程,即:
迭代列表(旋转(A, -90°, P), P, {B}, 3)
需要注意的是:起始值也需用花括号{ }括起来。
对迭代、迭代列表有了初步认识后,我们来看看怎么用迭代列表作出毕氏螺线中相关的点。
至于需要动态显示,只需让迭代次数是一个变量即可,我们用滑动条n来表示,即:
n = 滑动条(1, 18, 1)
当然,n的最大值并非必须是18,也可以再大一些。
再作出点A、点B:
A = 交点(x轴, y轴)
B = (-1, 0)
备注:滑动条(slider)、交点(intersect)、x轴(xAxis)、y轴(yAxis)。
为了保证垂直与长为1,有多种做法。这里介绍三种方法。
【法一】
垂直——旋转90度;长为1——除以自身的长度。
即:
迭代列表(P + 向量(P, 旋转(A, -90°, P)) / 距离(P, 旋转(A, -90°, P)), P, {B}, n)
备注:向量(vector)、旋转(rotate)、距离(distance)。
【法二】
垂直——旋转90度;长为1的向量——单位向量。
即:
迭代列表(P + 单位向量(向量(P, 旋转(A, -90°, P))), P, {B}, n)
备注:单位向量(unitvector)。
法一、法二是着眼于点,由点旋转90度,保证垂直。若是着眼于线段,那么,为保证垂直于线段,则可取其法向量。
【法三】
垂直,且长为1的向量——单位法向量。
即:
迭代列表(P + 单位法向量(线段(A,P)), P, {B}, n)
备注:单位法向量(unitperpendicularvector)。
取以上任意一种方法构造点均可,并命名为l1。
多边形
有了这些点,即 l1;则可构造出相应的直角三角形。即:
l2 = 序列(多边形(A, 元素(l1, k), 元素(l1, k + 1)), k, 1, n)
备注:序列(sequence)、多边形(polygon)、元素(element)。
关于序列指令的解读,请见链接。
文本
先标出直角边AB的长为1:
利用文本工具
而其他长为1的直角边,则可利用序列指令标出1,即:
l3 = 序列(文本("1", 中点(元素(l1, k - 1), 元素(l1, k)), true, true), k, 2, n + 1)
而根号2、根号3、根号4……等文本的显示,也同样可利用序列指令,即:
序列(文本("sqrt{" + k+ "}", 中点(A, 元素(l1, k)), true, true), k, 2, n + 1)
但是,发现文本的位置并不太妥当。
还记得,《文本进阶》中的放大招吗?
此刻,即可派上用场,操作如下:
引入点C来调整文本位置
至此,拉动滑动条n,即有开头演示的效果。
结语
有重复性操作,不仅可以交给序列,还可以交给迭代或迭代列表。
打个比方:
如果是已知通项公式,即知道第n项与n之间的关系,则可使用序列。如果是已知递推公式,即知道第n项与其前一项或几项的关系,则可使用迭代或迭代列表。其中,如需显示迭代过程的,则用迭代列表;而只需最终的迭代结果,则用迭代。
在GeoGebra中,除了序列指令、迭代与迭代列表指令,还有一大指令——映射(zip)指令,也是可以使得制作更方便、更高效!映射指令,主要是在批量构造对象、处理对应关系上,有极大的优势。
批量构造对象的例子,请参照链接的第二部分。在处理对应关系上,请参照链接。
如需作品源文件,请回复:毕氏螺线。