多语言展示
当前在线:743今日阅读:167今日分享:16

Mathematica应用——变换图形

本文介绍一下怎么把一个图形,经过连续图形,使之变成另一个图形。但是,这里不涉及高深的理论,仅仅是制作几个动态图。
工具/原料
1

电脑

2

Mathematica

方法/步骤
1

首先,绘制一个单位圆形和椭圆形。圆的方程是:x^2+y^2==1;椭圆的方程是:x^2/2^2+y^2==1。        然后把单位圆形转化为椭圆形。        不知道为什么,用网页版Mathematica导出的动态图就能播放一次呢?比如下面第三幅图。

2

下面用另一种方法,把单位圆变成椭圆,其实很简单,只要在方程里面填上参数就行。x^2/a^2+y^2==1        当a从1变为2,就是一个变形过程。而且代码也简单的多:Manipulate[ContourPlot[x^2/a^2+y^2==1,{x,-2.1,2.1},{y,-1.1,1.1},AspectRatio->Automatic],{a,0,1}]

3

圆的参数方程是:{Cos[u],Sin[u]};椭圆的参数方程是:{2 Cos[u],Sin[u]};        试图用参数方程实现图形的转化。        同样是有两种转化方法,第一种方法是:(1-a)*{Cos[u],Sin[u]}+a*{2 Cos[u],Sin[u]},其中a从0变为1;        第二种方法是:{a*Cos[u],Sin[u]},其中a从1变为2。

4

这一次,把圆变成正方形,同时要求圆和正方形的面积都是1。        其中,正方形的方程是:Abs[x]+Abs[y]==1/Sqrt[2];        圆的方程是:Abs[x]^2+Abs[y]^2==1/Pi。        不过,转化过程就只能使用第一种方法了,因为我没有求出Abs[x]^a+Abs[y]^a==1的面积公式,所以无法用第二种方法。        这个“化圆为方”是不完美的,中间过程并没有保持图形面积不变,好在首尾的正方形和圆形的面积都是1。        要想获得保持面积始终相等的变形过程,看看大家有没有好的办法?

5

再来一个三维的例子,把球形变成正八面体。        不过,这一次不去刻意追求面积或体积相等,而是放宽限制,便于用第二种方法进行变形。        正八面体的方程是:Abs[x]+Abs[y]+Abs[z]==1        于是,Abs[x]^a+Abs[y]^a+Abs[z]^a==1,当a从2变为1,就实现了球到正八面体的转化。        网页版Mathematica执行不了这个互动代码,因为用时间太长?

6

最后,请大家思考结合问题:        正方形的参数方程是什么?        正方体的隐函数方程和参数方程是什么?        正八面体的参数方程是什么?        上面第四步“化圆为方”的过程中,如果要求变形过程里所有的图形都保持面积不变,能实现吗?

注意事项
1

在以后的文章里,会陆续提及共形变换等更高明的几何变换方法。

2

如果本文对你有所帮助,请把它推荐给你的朋友!

推荐信息