【繁花曲线】编程攻克“最强大脑”节目项目

编辑:佚名 日期: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。
  1. 请你使用Python编程,分别画出“两圆内切、圆O1固定、圆O2顺时针滚动”和“两圆 外切,圆O1固定,圆O2顺时针滚动”所形成的繁花曲线图,其中圆O1的半径为r1=5, 圆O2的半径为r2=2,比例系数k为1,时间为1000,只有得到下面结果,程序才正确。
  1. 请你使用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顺时针滚动的情况,如下图所示:

因为大圆的圆心坐标是固定的,要求得小圆上的某点的轨迹,就需要先求出小圆在当前时刻的圆心坐标,再求出小圆自转的弧度,最后求出小圆上某点的坐标。

  1. (拓展题)请你使用Python编程,绘制上述繁花曲线的动态形成过程,并保存为.gif文件, 只有最后动画结束的时候得到下面结果,程序才是正确的。(提示:使用pygame库)

附录:

繁花曲线形成原理图


参考答案:

Python零基础入门与科学计算【第二期】 - 极值学院 - 专注数学领域培训


现在致电 13988889999 OR 查看更多联系方式 →

Top 回顶部

平台注册入口