【繁花曲线】编程攻克“最强大脑”节目项目
编辑:佚名 日期:2024-03-04 14:37 / 人气:
攻克“最强大脑”节目项目
(命题人:清华大学 张阳阳)
温馨提示:科学是我评判的唯一标准。
【繁花曲线】
《最强大脑之燃烧吧大脑》节目中出现“繁花曲线”挑战项目,说起“繁花曲线”,彼时的繁花曲线规,已经红极大江南北,遍地开花,“繁花曲线”的图案更是运用在各个领域,丝绸、餐具、书本等等,堪称80、90后两代人心中的童年回忆。“繁花曲线”
一段段美丽的线条,一种种绚丽的色彩。它是数学与美的完美结合,有一百个大小不一形态各异的繁花齿轮,每个齿轮均有不同形状不同位置的绘图孔,繁花齿轮在空心外图板的圆洞中转动,便绘制出无数种绚丽的图形。
《无问西东》电影中有一句话:“器识为先,文艺其从,立德立言,无问西东。”这句话其实出自于清华大学的校歌。意思是人活这一辈子不应该被各种框框束缚,而是认清真实的自我遵循本心而活。繁花曲线是由杨秉烈先生发明的,他是第一个获得国家发明奖的人,他的一生奋斗在科技发明前线。杨秉烈先生正是保持着这样的匠人初心,不为世俗观念裹挟,他的精神和德行应当为后世铭记于心。
1. 数学模型一:
真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制,繁花曲线规由相互契合的大小两个圆组成,用笔插在小圆上的一个孔中,紧贴大圆的内壁滚动,就可以绘制出漂亮的图案。
设圆O1的半径为r1,圆O2的半径为r2,k为比例系数,分为“两圆内切、圆O1固定、圆O2顺时针滚动”和“两圆外切,圆O1固定,圆O2顺时针滚动”两种情况,如下图所示:
通过建立数学模型,可以得到两种情况下动点的轨迹方程:
提示:使用Python中的Numpy库和Matplotlib库。绘制不同条件的繁花曲线,作图要求如下:
- 在时间0 ~ t内,每隔0.01取一个点作图,即:时间步长为0.01;
- 绘图对象的宽度为12英寸,高度为5英寸;
- 对于左图,线条为红色,厚度为2,实线;
- 对于右图,线条为蓝色,厚度为2,实线;
- 保存图片名称为“fanhua”,分辨率为dpi=300。
- 请你使用Python编程,分别画出“两圆内切、圆O1固定、圆O2顺时针滚动”和“两圆 外切,圆O1固定,圆O2顺时针滚动”所形成的繁花曲线图,其中圆O1的半径为r1=5, 圆O2的半径为r2=2,比例系数k为1,时间为1000,只有得到下面结果,程序才正确。
- 请你使用Python编程,分别画出“两圆内切、圆O1固定、圆O2顺时针滚动”和“两圆 外切,圆O1固定,圆O2顺时针滚动”所形成的繁花曲线图,其中圆O1的半径为r1=17, 圆O2的半径为r2=13,比例系数k为1,时间为1000,只有得到下面结果,程序才正确。
3. 请你使用Python编程,分别画出“两圆内切、圆O1固定、圆O2顺时针滚动”和“两圆 外切,圆O1固定,圆O2顺时针滚动”所形成的繁花曲线图,其中圆O1的半径为r1=17, 圆O2的半径为r2=13,比例系数k为0.5,时间为1000,只有得到下面结果,程序正确。
(4)请你使用Python编程,在同一个图中画出“两圆内切、圆O1固定、圆O2顺时针滚动” 和“两圆外切,圆O1固定,圆O2顺时针滚动”所形成的繁花曲线图,通过建立数学模型, 将前一种情况的横纵坐标均放大n倍,可以得到两种情况下动点的轨迹方程:
请你使用Python编程,在同一个图中画出繁花曲线图,只有得到下面结果,程序才是正确的。
4-1 圆O1的半径为r1=17,圆O2的半径为r2=13,比例系数k为0.38,时间为1000,n=2.1;
4-2 圆O1的半径为r1=17,圆O2的半径为r2=13,比例系数k为0.98,时间为1000,n=1.0;
4-3 圆O1的半径为r1=17,圆O2的半径为r2=13,比例系数k为0.50,时间为1000,n=5.0;
(5)下面让点A成为动点,在圆O2的某一半径上逐渐由圆心原理圆心的方程运动,请你使用 Python编程,在同一个图中画出“两圆内切、圆O1固定、圆O2顺时针滚动” 和“两圆外 切,圆O1固定,圆O2顺时针滚动”所形成的繁花曲线图,通过建立数学模型,分别将横 纵坐标里的前一项乘以mt项,可以得到两种情况下动点的轨迹方程。
请你使用Python编程,在同一个图中画出繁花曲线图,只有得到下面结果,程序才是正确的。
5-1 圆O1半径r1=157,圆O2半径r2=53,比例系数k为0.7,时间为1000,n=1.0,m=0.01;
5-2 圆O1半径r1=157,圆O2半径r2=53,比例系数k为0.7,时间为1000,n=0.7,m=0.01;
5-3 圆O1半径r1=111,圆O2半径r2=22,比例系数k为0.25,时间为1000,n=0.25,m=0.01;
2. 数学模型二:
假设只考虑两圆内切、圆O1固定、圆O2顺时针滚动的情况,如下图所示:
通过数学建模,可以得到动点的运动轨迹的参数方程如下:
(6)请你使用Python编程,设计一个for循环结构,分别作出大圆半径R=7,比例系数k为 2.7,时间为1000,长度l 分别取3、4、5、6、7、8的时候,所形成的繁花曲线。只有得 到下面结果,程序才是正确的。
3. 数学模型三:
繁花曲线的形成可以想象成有两个半径不相等的圆,大圆位置固定,小圆在大圆内部,小圆紧贴着大圆内壁滚动,求小圆上的某一点走过的轨迹。
进一步分析,小圆的运动可以分解为两个部分:小圆圆心绕大圆圆心公转、小圆绕自身圆心自转。设大圆圆心为A,半径为Ra,小圆圆心为B,半径为Rb,轨迹点为C,半径为Rc (BC距离),设小圆公转的弧度为,假设只考虑两圆内切、圆O1固定、圆O2顺时针滚动的情况,如下图所示:
因为大圆的圆心坐标是固定的,要求得小圆上的某点的轨迹,就需要先求出小圆在当前时刻的圆心坐标,再求出小圆自转的弧度,最后求出小圆上某点的坐标。
- (拓展题)请你使用Python编程,绘制上述繁花曲线的动态形成过程,并保存为.gif文件, 只有最后动画结束的时候得到下面结果,程序才是正确的。(提示:使用pygame库)
附录:
繁花曲线形成原理图
参考答案:
Python零基础入门与科学计算【第二期】 - 极值学院 - 专注数学领域培训