8.5 随机运动

绘制效果:

几何图霸

学习要点:

学习随机函数、内置变量及按钮循环操作的运用

操作步骤

1.

用【文本与标签】工具输入下面题目:

突围行动:一动点从半径为10的圆的圆心处开始,每步都等可能地选择向上、下、左、右四个方向之一运动一个单位,到圆外时停止。

几何图霸

2.

【新建参数】t1,选中t1,添加【计算】表达式“set(1,0)+set(2,0)+set(3,0)”及参数t1的“动画”,参数范围的终值改为0。

几何图霸

【说明】用参数t1的动画去控制表达式的求解,可同时向三个内置变量1、2、3中赋初值0,它们表示点坐标x、y及运动次数。计算结果和为0,后面并不使用。“+”号只是连接三次赋值,无特殊作用。击一次按钮就相当于执行伪代码:“M[1]←0,M[2]←0,M[3]←0”,并求和。M[1]可以理解为数列的第一项,这个式子就是把数列M[n]前三项定义为0,并求出S[3]。图霸中的内存变量从0开始编号,与中学数学的数列中从1开始不同。

3.

【新建参数】t2,选中t2,添加参数t2的“动画”,为了与上一个动画区别,以下称它为动画2,上一个为动画1。参数范围的终值改为0;选中t1与t2,添加【计算】表达式“int(rand(4))”,选取后用【文本与标签】工具修改标签为k,自定义标签、文本格式。

【说明】用参数t2的动画去控制表达式的求解,击一次按钮就相当于随机产生一个运动的方向,从0到3表示右、上、左、下四个方向。随机模拟一般要用到rand(x)函数。

4.

选取表达式“k”,添加两个【计算】式:“set(1,get(1)+cos(No1*Pi/2))” 和 “set(2,get(2)+sin(No1*Pi/2))”,分别改标签为x、y。

【说明】No1即选取的第一个参数,这里是指k。用k*Pi/2表示方向数k对应的角,向右为0度,向上为90度……。用cos(k*Pi/2)和sin(k*Pi/2)可以得到对应于方向k的坐标增量dx及dy,值为-1、0或1。get(1)表示取出原内置变量1(实际名为x)的值。把它加上dx后用set( )继续存放到这个变量之中,作为点运动一步后新的横坐标。击一次动画2按钮就相当于执行伪代码:“dx←cos(k*Pi/2),dy←sin(k*Pi/2),x←x+dx,y←y+dy”。这两个计算式用累加运算更简单些:accum(1,cos(No1*Pi/2)),accum(2,sin(No1*Pi/2))。

几何图霸

一个问题的算法总是有许多种,用绝对值函数或使用if()函数更简单易懂:“accum(1,abs(No1-2)-1)”和“accum(2,1-abs(No1-1))“或”accum(1,if(No1==0,1,No1==2,-1,0))”和“accum(2,if(No1==1,1,No1==3,-1,0))”。

方法一更便于拓展,比如向六个方向随机运动。只要把k的式子改为:“int(rand(6))”,x和y的表达式改为:“accum(1,cos(k*Pi/3))和accum(2,sin(k*Pi/3)),根据三角函数的周期性,这个很好理解。下面是运行的效果图:

几何图霸

5.

选取表达式x、y,用【点】工具,添加坐标点A。

【说明】点A是约束点,它是参数t1、t2的后代。因此,它的运动可以由两个参数的动画按钮控制。

6.

保持x、y的选中状态,添加【计算】表达式:“set(4,No1^2+No2^2>100)”,改标签为p。

几何图霸

【说明】p为真时值为1,表示点A在半径为10的圆外,将值赋给内置变量4,后面将作为循环条件使用。

7.

选取t2,添加【计算】表达式:“accum(3)”;选取t1与t2,添加【计算】表达式:“get(3)”,改标签为“步数”。

【说明】动画按钮2执行一次,t2更新一次,函数accum(3)将使内置变量3中的值加1,用于计数;动画1或2执行一次,就从中读出此值,它表示t2更新次数,也就是点A运动次数。

8.

进入【二维视图】模式,用【常用-定位图】命令打开对话框,列表中选择“圆“,改半径为10,添加圆B。

9.

添加【自由点】C,选取点C,为之【光照处理】,【显示-追踪对象】,点属性中修改大小为4.5;再选取表达式“步数”,为点C使用【颜色-参数颜色】,范围改为0-7。确定后在绘图区左下方单击可见,双击可改,也可以在“对象列表”中右击修改。

几何图霸

【说明】点C用来显示A运动的轨迹,图形更形象美观。“步数”改变时,点C颜色也改变,以7为周期。

10.

依次选取点C、点B,添加【操作按钮】-【移动】按钮“CB”,速度自定义为20,可以快速复位。

【说明】设置初始位置在原点B处。

11.

点击【编辑-操作按钮-命令序列】,对话框的左列表中双击【擦除踪迹】,移到右列表,命令间延时设为0,确定,点击此按钮,可以自动擦除图形区中的踪迹。

【说明】命令中还可以再次双击选中多个命令,确定以后也可以修改。

12.

依次选取三个按钮“动画1”、“C→B”、“ 命令序列”,添加【系列按钮】,命名“初始化”,动作“依序执行”。

依次选取点C、点A,加入【操作按钮-移动】C→A,改速度为“慢速”。

【说明】每次移动的长度=速度*5,由于距离为1,4次运动完(5个点),所以设置为1/20=0.05,即为“慢速”,可使追踪的点距均匀。

13.

依次选取按钮“C→A”,“动画2”,添加【系列按钮】,动作“依序执行”,选“Until循环”,循环变量“No4”。

【说明】内置变量4中存有条件p的值,点A在圆外时它为真,“Until循环”以此作为结束标志。若p为0(假),两个按钮将依序执行。达到“点C追踪点A,点A随机运动,点C再追踪……直至点A到圆外时结束”的效果。但此时点C还未到圆外。下步再加一次循环。“Until循环先执行,后判断,出界后点击还能继续。

14.

依次选取按钮“系列动作”、“C→A”,“动画2”,添加【系列按钮】,动作“依序执行”,改名“突围行动”。

15.

【隐藏】不必要的对象、【整理】、【保存】。运行“初始化”后,执行“突围行动”。要抓取并使用图片,请用【显示-区域截图】,然后粘贴。

练习: 马丁·加德纳的四龟问题

四只乌龟在边长为3米的正方形四个角上,以每秒1厘米的速度同时匀速爬行,每只乌龟爬行的方向都是追击其右邻角上的乌龟,问经过多少时间他们才能在正方形的中心碰头?

几何图霸

 

返回帮助目录