APP下载

利用Matlab编程展现数学之美

2020-07-06孙慧静王丽英刘丹

课程教育研究 2020年19期
关键词:数学家编程三角形

孙慧静 王丽英 刘丹

【摘要】利用Matlab编程展示几何图,进而探讨了数学美的特征——简洁性,对称性与奇异性。通过展示几何图,让学员感受到数学之美,从而提高学员学习数学的积极性,激发学员学习数学的兴趣。

【关键词】Matlab软件  Julia集  Sierpinski三角形  Koch曲线

【中图分类号】O192 【文献标识码】A 【文章编号】2095-3089(2020)19-0252-02

一、引言

高等数学和工程数学(以下简称数学)是理工科军事院校学员必修的公共基础课。数学是学员学好理工专业课程的基础,该课程除了能够让学员掌握基本的数学理论知识外,更重要的是数学对培养和加强学员的理性思维、思辨能力、分析和解决问题的能力有重要的作用,是开发学员潜在能动性和创造力的重要课程。但是,数学教员在进行授课时发现许多学员对数学不感兴趣,更有甚者对学习数学有厌倦心理。经过调查发现这些不爱学习数学的学员总是将数学与“枯燥”、“抽象”、“晦涩”等一些词联系在一起,他们对学习数学有畏难心理,觉得“数学难,难于上青天”。怎样使学员对学习数学产生兴趣呢?这是广大数学教育工作者亟需解決的问题。

Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国Math Works公司开发的一种数学软件,可用于算法开发、数据分析以及数值计算的高级技术计算语言和交互式环境。

本文旨在通过Matlab软件编程展现数学之美,从而达到提高学员学习数学的积极性,激发学员学习数学兴趣的目的[1]。

二、利用Matlab编程展现数学美

德国大数学家Gauss说过“数学是科学中的皇后”。Gauss在这里谈的是一种在形式上高度抽象的美。一种被数学家所认可却对大多数人来说未曾体验或难以想象的内在美。直到上个世纪80年代,由于电子计算机特别是图象显示系统的发展,这种逻辑形式、结构与证明所构成的美才通过在计算机屏幕上显示出结果使得人们有目共睹。

利用Matlab软件编程,画出Julia集,Sierpinski三角形和Koch曲线的图像,学员就不难发现数学具有如下的美学特征:简洁美、对称美和奇异美。

生成Julia集的Matlab程序如下:

clc,clear

a=-0.11; b=0.65; r=2; N=60;

hold on

for x0=-r:0.02:r

for y0=-r:0.02:r

x(1)=x0; y(1)=y0;

if x0^2+y0^2<=r^2

for n=1:N

x(n+1)=x(n)^2-y(n)^2+a;

y(n+1)=2*x(n)*y(n)+b;

end

if x(end)^2+y(end)^2

plot(x0,y0,'.')

end

end

end

end

著名德国数学家和物理学家H. Weyl说:“美和对称紧密相连。”Sierpinski三角形[2]是具有自相似对称性的几何对象,它指的是对一类具有无穷嵌套的几何对象,适当地取出其一部分,并加以放大,观察者看到的结果与整体对象完全相同。图2由无穷次分割做成,若取出其中一部分,放大2n倍(n为整数),则获得与整体对象完全相同的图形。Sierpinski三角形的构成原理为:把一个三角形分成四等份,挖掉中间那一份,然后继续对另外三个三角形进行这样的操作,并且无限地递归下去。每一次迭代后整个图形的面积会减小到原来的3/4。因此最终得到的图形面积显然为0。这就是说,Sierpinski三角形其实是一条曲线。由图2不难发现Sierpinski三角形图形上毫无保留地展现出数学的对称美。

生成Sierpinski三角形的Matlab程序如下:

function mysierpinski(x,y,L,n)

hold on

if n==1

x1=x-L/2; y1=y-L*tan(pi/6)/2;

x2=x+L/2; y2=y-L*tan(pi/6)/2;

x3=x; y3=y+L*tan(pi/6)/2;

plot([x1;x2],[y1;y2]); plot([x2;x3],[y2;y3]); plot([x3;x1],[y3;y1])

else

x01=x-L/4; y01=y-L*tan(pi/6)/4;

x02=x+L/4; y02=y-L*tan(pi/6)/4;

x03=x; y03=y+L*tan(pi/6)/4;

mysierpinski(x01,y01,L/2,n-1)

mysierpinski(x02,y02,L/2,n-1)

mysierpinski(x03,y03,L/2,n-1)

end

奇异美总是体现在冲破传统观念和经验的局限性,以新奇的方法或从新奇的前提(如公理)出发,得出新颖的数学结果中。1904年,瑞典数学家H. von Koch等方法构造了如今称为Koch曲线[3]或雪花曲线(如图3所示)的处处不可微的连续曲线,并且讨论了该曲线的性质:一条封闭的曲线,它本身的长无限,然而它所围的区域面积却有限的怪异。其构造如下:设L0为单位直线段,将其三等分后,中间一段用与其组成等边三角形的另两边代替,得到L1,L1包含四条线段。把同样的过程应用到L1的每个直线段而构造L2。以此类推,对Ln的每条线段重复以上做法得到Ln+1。当n趋向于无穷时,所得的折线序列趋于极限曲线L,称L就是Koch曲线。

生成Koch曲线的程序如下:

function koch(level)

xl=zeros(level, 1);

xr=xl;

xr(level)=1;

yl=xl;

yr=yl;

r=sqrt(1/3^2-1/6^2);

hold on,

subkoch(xl, xr, yl, yr, level, r);

hold off;

axis equal;

axis tight;

axis off;

function subkoch(xl, xr, yl, yr, level, r)

% draws a line at the lowest iteration level

if level==1

plot([xl(1) xr(1)], [-yl(1) -yr(1)], 'b-') ,

return

end

% branch in the next level

level=level-1;

% left subbranch

xl(level)=xl(level+1);

yl(level)=yl(level+1);

xr(level)=1/3*xr(level+1)+2/3*xl(level+1);

yr(level)=1/3*yr(level+1)+2/3*yl(level+1);

subkoch(xl, xr, yl, yr, level, r);

% middle left subbranch

xl(level)=xr(level);

yl(level)=yr(level);

xr(level)=5*xr(level+1)+5*xl(level+1)-r*(yl(level+1)-yr(level+1));

yr(level)=5*yr(level+1)+5*yl(level+1)+r*(xl(level+1)-xr(level+1));

subkoch(xl, xr, yl, yr, level, r);

% middle right subbranch

xl(level)=xr(level);

yl(level)=yr(level);

xr(level)=2/3*xr(level+1)+1/3*xl(level+1);

yr(level)=2/3*yr(level+1)+1/3*yl(level+1);

subkoch(xl, xr, yl, yr, level, r);

% right subbranch

xl(level)=xr(level);

yl(level)=yr(level);

xr(level)=xr(level+1);

yr(level)=yr(level+1);

subkoch(xl, xr, yl, yr, level, r);

三、總结

本文应用Matlab软件展现了一些美丽的分形图。通过上面的几个小例子,让学员真实感受到数学是一门很美的学问,从而达到提高学员学习数学的积极性,培养学员学习数学兴趣的目的。

参考文献:

[1]李铁木.数学与美学[M].北京:地震出版社,1999.8-10.

[2]汪小帆,李翔,陈关荣.复杂网络理论及其应用[M].北京:清华大学出版社,2005,42-46.

[3]陈士化,陆军安.混沌动力学初步[M].武汉:武汉水利出版社,1998,81-92.

作者简介:

孙慧静(1982-),女,博士,讲师。

猜你喜欢

数学家编程三角形
“买来的”数学家
爱睡懒觉的数学家
编程,是一种态度
数学家相亲
编程小能手
纺织机上诞生的编程
三角形,不扭腰
三角形表演秀
画一画