Board logo

标题: 用GeoGebra制作的分形的探索 [打印本页]

作者: visionfans    时间: 2011-10-25 19:40     标题: 用GeoGebra制作的分形的探索

今天捣鼓了一下GeoGebra(以下简称GG),发现与GSP不同的是,GeoGebra没有很方便的“迭代”功能。

迭代的实现主要依赖于递归,在GSP里实数值可以用Iteration或者IterationList来进行递归操作。
语法是:
Iteration[f(x),x0,N]。就是,按照f(x)函数给定的规则,从x0开始,进行N次迭代。

IterationList跟Iteration语法相同,不同的是Iteration返回最后值,而Iteration返回迭代过程的所有中间值,返回结果是一个List,这是GG中的链表数据结构。对链表可以进行取头部元素,取尾部元素等操作。

讲到这里,只是一维数据的情况,而想要制作分形的话,需要对几何对象进行递归的变换操作。

但是GG里没有直接实现这个功能的函数,我把它的函数手册翻来覆去的看,也没想出辄。期间,看到Sequence函数的时候,让我眼睛一亮。

Sequence的语法是Sequence[Expression,i,m,n]。作用是,将i从m递增到n,每递增一次,执行一次Expression表达式。
其中,Expression是一个操作表达式,这个表达式可以跟i有关,也可以无关;可以是自定义的工具函数,或者GG自带的函数。这里不限于一维了,对几何对象,如Point,Vector等的操作都可以使用。让我兴奋了半天,可是翻来倒去,如果想用Sequence进行递归迭代的话,需要操作完一个变量后,把得到的值作为新的自变量进行迭代,这样GG就会跳出一个可恶的circular definition(循环定义)的出错对话框。

没辙了,山穷水尽之处,最后才发现,原来Spreadsheet可以记录中间结果。于是,最后用Spreadsheet搞定。

思路:

1. 构造单步迭代。
这一步是自己手动构造一个单步迭代的结果,然后,用自定义工具进行定义,这样,这就等于把单步迭代就变成了一个命令,可以用指令的方式来调用。

2. 用Spreadsheet构造迭代过程的中间迭代结果。
用Spreadsheet可以方便的进行迭代式的定义,比如A3=A2+A1。跟Excel很类似,定义了一个,其他的只要拉动右下角的标记点就可以自动生成。想进行多少次迭代,就拉多少行。

3. 显示分形结果。
分形结果的显示可以在迭代过程中显示,但是,最好还是最后显示。如果在操作Spreadsheet的过程中显示的话,不便于控制显示的迭代深度。因此,我这里用了一个滑动变量来控制显示。

4. 自己制作的自定义工具:
NewTriangle[A,B,C,a]是单步迭代函数,功能是,给出一个三角形△ABC,按照a进行缩放。
DrawTriangle[A,B,C]是显示函数,功能是,给出三个点,画出三点之间的连线,即三角形△ABC。
这里,我是先在Spreadsheet里生成的点信息,最后才用DrawTriangle画出来。


5. ggb文件的测试方法:
(1) 先用命令:AllPoints = CellRange[A1,C23],将Spreadsheet转换成List,这样方便进行操作。(我没有找到从Spreadsheet里直接取值的函数)
(2) 从1到n依次画出小三角形,命令是:
Sequence[ DrawTriangle[ Element[AllPoints,i],Element[AllPoints,i+N],Element[AllPoints,i+N*2] ],i,1,n]

最后:
感谢北师大的老师们制作的GG使用指南。
希望能够帮助大家制作出精美的分型图片,我只是做了一个很简单的测试。
我最近刚接触GG和GSP,如有错误,请大家多多指正。
[local]1[/local]

另外,可以参考:
[1]  Recursive sequences, http://geogebra.uni.lu/en/wiki/index.php/Recursive_sequences
[2] Fibonacci Sequence,http://geogebra.uni.lu/en/wiki/index.php/Fibonacci_Sequence

附件: Recursion.ggb (2011-10-25 19:40, 9.06 KB) / 下载次数 1298
http://www.inrm3d.cn/attachment.php?aid=14839&k=dd747cead3dea26e27f3f394f9f406ce&t=1716257858&sid=YGa4Fb

图片附件: 1.png (2011-10-25 19:40, 134.12 KB) / 下载次数 786
http://www.inrm3d.cn/attachment.php?aid=14840&k=cec3684c1f068ff9decc7a900ceb1a86&t=1716257858&sid=YGa4Fb


作者: visionfans    时间: 2011-10-25 19:52

1# visionfans

图片附件: 1.gif (2011-10-25 19:52, 184.74 KB) / 下载次数 832
http://www.inrm3d.cn/attachment.php?aid=14841&k=777472565f2b0bbd202c693c4395e540&t=1716257858&sid=YGa4Fb






欢迎光临 inRm3D: 画板论坛 (http://www.inrm3d.cn/) Powered by Discuz! 7.0.0