效果预览
GeoGebra(音译:几何不难)
是数形结合的神器,个人使用完全免费,并且可跨平台使用
官网https://www.geogebra.org/
经典版本下载 http://download.geogebra.org/installers/5.0/
跨平台的网页版说明
https://wiki.geogebra.org/en/Reference:GeoGebra_Apps_Embedding
跨平台的网页版下载
https://download.geogebra.org/package/geogebra-math-apps-bundle
勾股树的本质是几何分形,为了方便理解,我们从GeoGebra的代数例子入手
分形数阵详解
问题
要求做出下面的分形数阵
1
11, 12
111, 112, 121, 122
1111, 1112, 1121, 1122, 1211, 1212, 1221, 1222
...
求解
指令:
IterationList(join(zip({10*k+1,10*k+2}, k, p)),p,{{1}},2)
结果:
{{1}, {11, 12}, {111, 112, 121, 122}}
这个一大串的东西,着实复杂,不过没关系,我们可以看下面的分析
过程分析
上面的指令用到了GeoGebra内置的三个函数,点击下面三个函数名字,可以直接跳转到官网说明
我们只需要知道每个函数可以输入什么对象,输出什么对象。接地气的说法就是:吃进什么,吐出什么。
IterationList
iterationList(p*10+1, p, {1}, 2)
结果为 {1, 11, 111}.
Join
Join({{1, 2, 3}, {3, 4}, {8, 7}})
结果为 {1, 2, 3, 3, 4, 8, 7}.
Join({5, 4, 3}, {1, 2, 3})
结果为 {5, 4, 3, 1, 2, 3}.
Zip
Zip(f(2), f, {x+1,x+3})
结果为 {3, 5}.
Zip(Degree(a), a, {x^2, x^3, x^6})
结果为 {2, 3, 6}.
zip({10*k+1,10*k+2}, k, {1,2,3})
结果为 {{11,12}, {21,22}, {31,32}}.
上面的函数,至于怎么理解,怎么翻译,全看个人!在作者看来:
理解了GeoGebra这三个内置的函数,我们再分析原来的分形数阵,这里我们从天人合一
Join + 雨露均沾
Zip开始
先回顾下Zip的最后一个例子zip({10*k+1,10*k+2}, k, {1,2,3})
,它最后一个参数是一个列表{1,2,3}
,雨露均沾之后,每个元素都有了一个新的小家庭 {{11,12}, {21,22}, {31,32}},并且各个家庭之间都有一堵坚实的{}
围墙,当然需要外修天人合一功法Join去除不必要的杂念纷争,去掉{}
围墙合为一家,因此下面的命令
Join(zip({10*k+1,10*k+2}, k, {1,2,3}))
不难想到,其结果是
{11,12,21,22,31,32}
类似有
Join(zip({10*k+1,10*k+2}, k, {1}))
结果是 {11,12}
Join(zip({10*k+1,10*k+2}, k, {11,12}))
结果是 {111, 112, 121, 122}
…
这些指令明显符合代代相传的特点,总不能一直纯手动一步步输入这些指令吧,因此修行第三层代代相传
IterationList功法为上策!再回头看看
IterationList(join(zip({10*k+1,10*k+2}, k, p)),p,{{1}},2)
修行代代相传
IterationList功法当然要知道:祖师爷是谁,神功传了几代,每两代之间如何继承和发扬这个神功。很明显这里的祖师爷是{{1}}
,因为IterationList最后一个参数为2
,因此神功只传了两代,这里神功继承和发扬的方法不是别的,正是前面一直提到的天人合一
Join + 雨露均沾
Zip即join(zip({10*k+1,10*k+2}, k, p))
。
为了进一步理解三层神功,读者可以试试把祖师爷{{1}}
改写成{{11,12}}
。也可以修改下神功传的代数2。
勾股树详解
对前面的代数分形做个总结
雨露均沾Zip,出现很多不融合的家庭,需要天人合一功法Join去除杂念纷争,让各个家庭合成一家,最后把这种优秀的神功代代相传IterationList,必然子子孙孙无穷匮也。
对勾股树的绘制做个分析
不难知道制作勾股树最简单的做法是只绘制矩形,中间的直角三角形自然会通过矩形刻画出来。
我们需要完成下面的步骤:
- 先绘制一个矩形
- 完成能由1个矩形得到2个矩形的指令,
- 结合
天人合一
Join + 雨露均沾
Zip就可以在上步基础上实现由2个矩形得到4个矩形的指令,以及4个矩形得到8个矩形…
- 最后用
代代相传
IterationList,大功告成
具体实现
绘制矩形p1
p1 = Polygon((-1,0), (1,0), 4)
通过矩形p1
得到矩形p11
与p12
- 先绘制半圆
c1 = Semicircle(Vertex(p1,4), Vertex(p1,3))
- 再半圆上取点,保证直角三角形,
0.5
表示点的位置,后面将会用滑条代替A = Point(c1,0.5)
- 得到矩形
p11
与p12
p11 = Polygon(Vertex(p1,4), A, 4)
p12 = Polygon(A, Vertex(p1,3), 4)
结合天人合一
Join + 雨露均沾
Zip
-
我们先把上一步的所有指令写成一块
要注意下面的一大块有缩进的代码,其实就是一行代码,写成这样的格式为了提高可读性,在使用的时候,需要整块指令复制Ctrl
+C
后,按快捷键Ctrl
+V
粘贴到GeoGebra的命令行中
{Polygon(Vertex(p1,4),
Point(Semicircle(Vertex(p1,4), Vertex(p1,3)) ,0.5),
4),
Polygon(Point(Semicircle(Vertex(p1,4), Vertex(p1,3)) ,0.5),
Vertex(p1,3),
4)
}
-
再套用前面的代数功法天人合一
Join + 雨露均 沾
Zip
Join(zip({10*k+1,10*k+2}, k, {1,2,3}))
把代数功法运用到几何里面,就是
p2 = Join(zip(
{Polygon(Vertex(k,4),
Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
4),
Polygon(Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
Vertex(k,3),
4)
},
k,
{p1}
)
)
从而有
p3 = Join(zip(
{Polygon(Vertex(k,4),
Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
4),
Polygon(Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
Vertex(k,3),
4)
},
k,
p2
)
)
p4 = Join(zip(
{Polygon(Vertex(k,4),
Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
4),
Polygon(Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
Vertex(k,3),
4)
},
k,
p3
)
)
p5 = Join(zip(
{Polygon(Vertex(k,4),
Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
4),
Polygon(Point(Semicircle(Vertex(k,4), Vertex(k,3)) ,0.5),
Vertex(k,3),
4)
},
k,
p4
)
)
…
依次做下去,可以得到美丽的勾股树,这种繁琐的做法当然是不可取!
要注意小细节: 从{p1}
到p2
,参数{p1}
是有围墙{}
的,而从p2
到p3
,参数p2
没有围墙,并且后面的都没围墙。
最后用神功代代相传
IterationList可得到如下指令
IterationList(
Join(zip(
{Polygon(Vertex(k,4),
Point(Semicircle(Vertex(k,4), Vertex(k,3)), 0.5),
4),
Polygon(Point(Semicircle(Vertex(k,4), Vertex(k,3)), 0.5),
Vertex(k,3),
4)
},
k,
p
)
),
p,
{{p1}},
6
)
这就意味着,先输入
p1 = Polygon((-1,0), (1,0), 4)
再输入上面那大一串的代代相传
相关指令,就可以直接得到5层勾股树!
但是我们还希望用滑动条控制勾股树的层数,以及直角三角形的形状,为此只需要稍加修改,先输入两个滑条指令,
t = slider(0, 1, 0.01)
n = slider(1, 4, 1)
把上面两段代码中的0.5
都换成t
, 并且把6
换成n
全部指令
p1 = Polygon((-1,0), (1,0), 4)
t = slider(0, 1, 0.01)
n = slider(1, 4, 1)
IterationList(Join(zip({Polygon(Vertex(k,4), Point(Semicircle(Vertex(k,4),Vertex(k,3)), t), 4), Polygon(Point(Semicircle(Vertex(k,4), Vertex(k,3)), t), Vertex(k,3), 4) }, k, p)),p,{{p1}},n)
上面的指令,需要逐行复制Ctrl+C,再快捷键Ctrl+V粘贴到GeoGebra的命令行中
学以致用
在线试试
温馨提示: 出现难以拯救的错误不要紧,F5
刷新网页重新开始
温故知新
本次教程学会了三大神功
并且学会了代数分形,几何分形相关制图
更学会了很实用的方法:复杂的几何绘图问题可以从代数开始
如果有所尝试,一定会感受到数形结合的美
首页地址 https://kz16.top/geogebra/
本文来源 https://kz16.top/geogebra/ptree
欢迎转载,转载请指明来源,
请勿用于商业
作者:Zhou Bingzhen
2019.10.19
UEsDBBQACAgIANu4U08AAAAAAAAAAAAAAAAXAAAAZ2VvZ2VicmFfZGVmYXVsdHMyZC54bWztmk9z4jYUwM/dT6HRqT0ELIOBzcTZye5Mp5nJZjNNZqdXYQujRkiuJQfDp19ZAtssOAVDCkmTQ+Qn659/7+npSeLiUzZh4IkkkgruQ9RyICA8ECHlkQ9TNTobwE+XHy4iIiIyTDAYiWSClQ+9vGRRT0str+fmeTiOfRgwLCUNIIgZVnkVH04hAJmk51zc4gmRMQ7IfTAmE3wjAqxMK2Ol4vN2ezqdtpb9tUQStaNItTIZQqDHyqUPFw/nurmVStOOKe46Dmr/9fXGNn9GuVSYBwQC/R0hGeGUKakfCSMTwhVQs5j4MBaUKwgYHhLmw7tcAr+OEkJ+g2BRSeNx4OWHXy7kWEyBGP5NAp2nkpQU9YzQzsvo118EEwlIfNjvQxDZZOhD1/M0JRaPsQ8dW5jhGUnAE2ZFDk6VCEx9kzvCTJJlWd3TVxES+6a7KM/pxFAEUhGtAASBjAkJzZP9QmS0MTOKrbQXCJGEEmQ+vMW3EMwW6dympohhc0/niy69aq6aMVIZ+UV7gXU7wCGJCQ91oRXKqBHl3sBQzpOhTV4z5O5LQ+69Q66DjHan/I1X2bqN2CLXM3BN+u4oKnSv+Z8k0mOuMu68Mz4o41UL7jai6xi2zisla4pYhjL/r8MYMYkZyQ4InlFeQrwxQgHdbRZdVKE7R0HuNEae47Dw1JgGj5xImZMt280f/qChXr1Mf0KHjVTpllB/YFsg//AVlVGtMarLPK+GUcoDZRzKAu2XNHmq6qLTdY6hjbLNQytjX9L1LCWJcqngcr+US8NuFtD9vw1bpIrlPV9zpXdZxJirXPu0R0LiB93UN/6QYC7zrdaqJdXrLcGz53Tmvevs9HS29Fu333FSaCLVwf1Ijz2sqq9ZeFS7gLdc79g63MGbbySyf0hzUga9o7Uexqx6zbyC63Q3Y2z1T9isnvTniZLH94VYxgjv8druLnJDkI0TRSTF/N+2LGwWVeb43VIu9NG3+th/jDtvKr2O0amH1uwbOfYPdT86CPWQe2w1Pw94ZXtyV2SUiNGREJ/opKmnGQien38vtxdWKjh235jrOMA+jkaEW48rAcgcU2zmmMpzZ3EzkSEjz5B5O0c229TXA09oBq5sjStb8Mq1SccmXZt4BaBmm0ej2lh7rUr4/NPS0G2243lNjuRNKv0/COF5OiFJxTXcLuXCeDzrHHR7KVlR7RauoM5O6q1CMhpqE5pQraQzrb0JzowW8VAKlipyHySE8PKSzprxlIZqnAd2uu8RzXJzsW2CsUjoXHBV0AD5LLhi5jpv5YRjk/m4zwWwK8a6n3vGPGLlbLyyUqkBe4BvCv18trdJMVWGzgJhr+UOOmjgdZw+6n/0Br0tkaJBidS+2JroirtZqGOL9QQ5W5vR/u5mJ6fhbnIaOAnKU9iOc2DDWNtL/l5klLugUzwaNCazVvTFTv2YCFJZnmRbqSA0eGPxDU4zyihOZus9vRhhRbIywngwQuWHCCcIuP5TNPaoHNq1lSr3/fZjRlRT5HiiK9hOKP+Mg8coESkP19etg3w6OrZt1UMbCsEILh3R56VcuWdeixTqAG2/GrzY7AvGJHgcimxlcXvex1BZzoAbI1TufzfMgH3WvLOjm0KTM726a8mNoUuVdLvyS6j28tdWlz8AUEsHCJOo99jSBAAADyYAAFBLAwQUAAgICADbuFNPAAAAAAAAAAAAAAAAFwAAAGdlb2dlYnJhX2RlZmF1bHRzM2QueG1s7ZjNbts4EMfP7VMQvNcmZUmJgiiF0R52gbZIkcteGWpscyuRKknHVl5t32GfqSNSceRuXDRGGqDt+uDh1wzJ358aiz5/vW1qcgPWKaNLyieMEtDSVEovS7r2i1en9PXFy/MlmCVcW0EWxjbClzTrR+78sDbJ8qRvE21bUlkL55SkpK2F711KuqGEbJ060+aDaMC1QsKVXEEj3hkpfIiy8r49m043m83kbr6JscvpcuknW1dRgmvVrqRD4QzD7TltZmF4whif/vX+XQz/SmnnhZZACe6jgoVY195hEWpoQHviuxZwxUYrOcM5anENdUn/1B43B7JfGZFre4P+g3NJZzxj9OLli3O3Mhtirv/GcSX1dg07/1CZ9mOw+42pjSW2pAmnBLlyhvYabZEgsLpdiZKyCWfxw9OCcZ7zJPrXogNLbgQGZbFFrL2RIWRoXYjawd1YnPy9qSD2pMN4rZqAmDgPqA5O7lqAKpTi9lmQqguqj+MpDVe+q4H4lZKfNDjEn42c+sIfqqqgPzzRB9QS9A0SMdah5CzM0rEw/JYNZ2zLQ73jofeWx+bgj0u1akvm0WMeB86TaGbRpNFkOyTwWcd1uv67pK2weMowkOz7z6eD2P+RXWyVG6k+76tv95Rms6OUZkFoFmRm9yL/pJIepkuGMuCe//3n27DDYySF9eCU0CPsb/qOr7nnvzv3wyAxvoYRv8tQ3+OHSfAofkURACa8CAiD3WWo7KkwSmNs5cg2JoGYGsL3ZhdyIfrfoGGWg7nxIajsSKim7lZQWaPvuY6a7tHOBrTHPEmPlYNns6BHxr8+0ZN0QJIVOUvz9Mm0OfaIP4rs3MqVaqACsY8WhX0utAmPP8bpSUDbm1+D7WWHGVlV+1yf78iGlIGLLyLX5Jc5s5dWuWafKn9GqnlMzJFqkf+UVDX43T4/9OVxVs3+z6qPYfl5LarwBjZs9eNdfcyUH3lNOZwa87ToPyc5z055mvCnAvQjrhoPXjT6xnib6KK5TXYBH3v3IPM8mpNoTqMpDt5LVNPWSir/bWnd2i7wfvzQq/LQta9yepzK6Pfgy/Lk5HuP/X3gZ3ld5t/7Zjcd3fOnd/8lXHwBUEsHCGNHzxA8AwAA7RAAAFBLAwQUAAgICADbuFNPAAAAAAAAAAAAAAAAFgAAAGdlb2dlYnJhX2phdmFzY3JpcHQuanNLK81LLsnMz1NIT0/yz/PMyyzR0FSorgUAUEsHCNY3vbkZAAAAFwAAAFBLAwQUAAgICADbuFNPAAAAAAAAAAAAAAAADAAAAGdlb2dlYnJhLnhtbM0Ya2/jNvLz9lcQQg+4An7wKVkLe4vsXhdtse0tLndF0TQfaImxeZElQaLjpNv97zdDSrKdZK/JJvdIopAcDmc475HmX19vCnJlmtZW5SJiExoRU2ZVbsvVItq6i/Es+vrVF/OVqVZm2WhyUTUb7RaRQszhHKwmKuYI03W9iLJCt63NIlIX2uGRRbSLiM0X0dtZomT8DR+fzJgcS/H2L+P05M3bMUvV61h+k6av35xEhFy39mVZ/ag3pq11Zk6ztdnod1Wmnee3dq5+OZ3udrtJf7NJ1aymq9Vyct3mEQGpynYRdZOXQO7o0E54dE4pm/78w7tAfmzL1ukyMxFBibf21Rcv5jtb5tWO7Gzu1iAnBwnXxq7WoAIxg8UUkWrQQ20yZ69MC0cPll5mt6kjj6ZL3H8RZqQYxIlIbq9sbppFRCexYikXNIm7/xGpGmtK1+Gyjue0pza/smYXyOLMc1SMR8RVVbHUSJP8ThhRFB7CUjIicQIQTpgiEiAzgCREIEwxSQRBFCaIlDBKBLMYdnAb/itFCWOwQzglnBPOCBewVIooQEvwLAfcOPX0KDyIDTeCRyBMCHg8TEh4OM6AkApk4B5KxH6mEBvog9Zh5oFiRmQKjBCgEkYE3AHWCSVAUSB55uWQlOAfIxLJ84TwGQF6IDpSpqCdK9vaZWEW0YUuWjC5LS8acLdh3bqbwnj1dYC9udgIfgHD/gboioIXBC+BHUpH+MTwSNq5x4Fd5LFVwAgUZBvhwMLAA5SGJRVh4GGQYVABR4aTMqAGQakMOFI8VcJePvEY+WYH8jEUAuyBt/eDIHhv5u+Pg+yWcVh6R6OMdtBZgKa4jJ8ojPgsYSRNk8cwds32k0rks7t8E3ggmu7wZQdMA83HCDv4JbuH5adEfVQ83JZzr12RPpwle6JR7zWpAo3in3/usBRPEvNzOMZHAf88AsvZg9kzdLv/Ms+E3pvjwsi68XkMkT7cEE/Nh4Mi1L9nOZ/21XjeKYG0a8TteTqzaVEviSAxH+pyjGWzK84JJ4kiSXxQokdYpGO1r9NYpWdHdVrNjot1jMDEV36ojVhnQ9Xmsi/co650/36ndEOllftiCxdEUowQaA5IjHm5q7pwCz7UXa6w9PKYQG1WnMSY+z9RgqEtrFo7aHZtinpQkFeiLeutO1Zctsl7T3AVoOvCd33dgbzKLl/f1rXRrTukCy3TvjELLdRR3/ZiXuilKaDzPUVPIORKFxi1nsNFVTrSOQGXkSfnW8S52WaFza0ufwLL9/3Yj9vN0jTETyuU0hPB42ToJTFBD71kMgsoWVU1+elNC35Crn8xDR7mdCKSOBaJTKWkAjPnTdgSgk5oSmWS0FRynkC6aTONPi6hGRczzjgXScKh18ZD9+8B1cDbXJ0a50D+luhr0w66WzUYQgeL79rXVbEH1ZUt3Rtdu23jXxsg1hoU66RcFcbr0tsZmuzsclldnwYlxoHW329qzKnhBsvVm6qoGgIxyJUChG5chtHj4NUGLOpxqMfoLIVEh31opT2GH5dh9Fhg5nC1TlTGejlpz8a2JKyP3co7Cfbs29K6d/3C2exyLyoeCC7Qdl57TJM9F8359Jb7zS9NU5oiuFIJxtxW2zZ4cuDlL7JtzXvt1idl/jezgjh8rzETOiAdUPdXzk1mN3AwwDvlaTTsP+CqAZqbVWN6EUNcBtX6XWwP6sbovF0b4wb9Bkffo9EgTn/9udOQq33+3ljIE2Ow30Zf+1YFgqPuYmreZo2t0WfJEtL1pdl7ZW5bJJEfCI4qaUG2DHMPqNehauGVdevWVeNfw7RDiMfcbHSZk9JXiPdVcbOqymifnDRdRH8WE5XyWZJSBXVBUi7UiIzpRKYpABRVKRMxk8lXwIIBuno4Osd3Ba+naut6fnUQedrdDXNPYTbwakicD6K6u2XvToB/7OpuDR4Fb43gQBBU4RANk29tnpuQjyt447buBuZ9UkLXI9Xyn5Aqh3IcWBz4FOzvw04JH3aKdZFJdFGvNb7eQk/of5hMKWMx6+NR32C+PMi4nsMPVT64UXAbSDNoPA/78tdCNyvz4U/lxy+7aAgKuaOacrsxDX6Q6O7tvGaAyLZ3v4nqhb3ZLKvCZgeRQP5AC/twOVTCcW56Ng20BX4pCFFBu6AANetlWxVbZ04ziMVy/6kkXLSrORz7FMAHWQkYWMH7zYW9PggaiAP7G+SNvego9UkI6kNB73UqRj/pVV3egFzizRdCGIoXJrbamJATh7M1KMOXkgP/eibLl7ctL/4vzf7Xi4vWOLTVOPa2ih/sFKxzCvlIpxDAwntF/L/1iv+ASxxn8++g0HmG72zrbuX076GXOfvF1mcfupx/9pNpnLk+u4T2+nxE3mOvc3ZqNjazTVaYW9v7lTiHpTvvTwVajz99CEKkjyMC8/r8PNSUOtSKDx9q9vEjzAU6+O26UfxB3ShQDb1TF6FofJ7XM/rs6e6R1St8j0U1Y5sZKPWN49COHrF9sBNND7sH3/93n55f/QtQSwcII7CMOV0HAABGFwAAUEsBAhQAFAAICAgA27hTT5Oo99jSBAAADyYAABcAAAAAAAAAAAAAAAAAAAAAAGdlb2dlYnJhX2RlZmF1bHRzMmQueG1sUEsBAhQAFAAICAgA27hTT2NHzxA8AwAA7RAAABcAAAAAAAAAAAAAAAAAFwUAAGdlb2dlYnJhX2RlZmF1bHRzM2QueG1sUEsBAhQAFAAICAgA27hTT9Y3vbkZAAAAFwAAABYAAAAAAAAAAAAAAAAAmAgAAGdlb2dlYnJhX2phdmFzY3JpcHQuanNQSwECFAAUAAgICADbuFNPI7CMOV0HAABGFwAADAAAAAAAAAAAAAAAAAD1CAAAZ2VvZ2VicmEueG1sUEsFBgAAAAAEAAQACAEAAIwQAAAAAA==