登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

徐小湛的博客

高等数学课件、函数图形动画、数学软件应用

 
 
 

日志

 
 

麦比乌斯带  

2009-07-11 10:49:24|  分类: 高等数学图形动画 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

所有图形见数学图形目录

 

麦比乌斯带(Mobius strip)是以德国数学家麦比乌斯(Mobius)的名字命名的曲面。

麦比乌斯带 - Calculus - 高等数学
麦比乌斯带的神奇之处在于这个曲面是单侧曲面,也就是说它只有一侧,而不像一般的曲面那样有两侧。

 

1. 麦比乌斯带的参数方程是:

麦比乌斯带 - Calculus - 高等数学

 

2. 麦比乌斯带的图形:

麦比乌斯带 - Calculus - 高等数学

图形的Maple程序:

with(plots): a:=2:b:=0.5:

qumian:=plot3d([(a+u*cos(b*v))*cos(v),(a+u*cos(b*v))*sin(v),u*sin(b*v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patch,grid=[20,20]):
x_axis:=plot3d([u,0,0],u=-3..3,v=0..0.01,thickness=3):
y_axis:=plot3d([0,u,0],u=-3..3,v=0..0.01,thickness=3):
z_axis:=plot3d([0,0,u],u=-2..3,v=0..0.01,thickness=3):
xyz:=display(x_axis,y_axis,z_axis,thickness=3):
text:=textplot3d([0,0,-3,"XUXZ 2008"],color=grey):
display(qumian,text,xyz,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
 

 麦比乌斯带 - Calculus - 高等数学
动画的Maple程序:
with(plots): with(plottools): a:=2:b:=0.5: w:=1:
K:=40:for i from 1 to K do ti:=i*4*Pi/K:
qumian[i]:=plot3d([(a+u*cos(b*v))*cos(v),(a+u*cos(b*v))*sin(v),u*sin(b*v)],                   
u=-1..1,v=0..ti,scaling=constrained,style=patch,grid=[20,20]):
muxian[i]:=spacecurve([(a+u*cos(b*ti))*cos(ti),(a+u*cos(b*ti))*sin(ti),u*sin(b*ti)],u=-1..1,color=red,thickness=4) od:
qumian:=display(seq(qumian[i],i=1..K),insequence=true):
muxian:=display(seq(muxian[i],i=1..K),insequence=true):
x_axis:=plot3d([u,0,0],u=-3..3,v=0..0.01,thickness=3):
y_axis:=plot3d([0,u,0],u=-3..3,v=0..0.01,thickness=3):
z_axis:=plot3d([0,0,u],u=-2..2,v=0..0.01,thickness=3):
xyz:=display(x_axis,y_axis,z_axis,thickness=3):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(muxian,qumian,text,xyz,orientation=[-30,64],tickmarks=[4,4,4],
title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);

 

 

3. 麦比乌斯带是有边界的单侧曲面。
    以下图形显示:麦比乌斯带的边界是一条空间的闭曲线

 
 
麦比乌斯带 - Calculus - 高等数学
 
with(plots): with(plottools): a:=2:b:=0.5: w:=1: K:=40: for i from 1 to K do:
ti:=i*2*Pi/K:
quxian:=spacecurve([(a+cos(b*v))*cos(v),(a+cos(b*v))*sin(v),sin(b*v)],v=0..4*Pi,color=red,thickness=3):
muxian[i]:=spacecurve([(a+u*cos(b*ti))*cos(ti),(a+u*cos(b*ti))*sin(ti),u*sin(b*ti)],u=-1..1,color=blue,thickness=2) od:
muxian:=display(seq(muxian[i],i=1..K)):
x_axis:=plot3d([u,0,0],u=-3..3,v=0..0.01,thickness=3):
y_axis:=plot3d([0,u,0],u=-3..3,v=0..0.01,thickness=3):
z_axis:=plot3d([0,0,u],u=-2..2,v=0..0.01,thickness=3):
xyz:=display(x_axis,y_axis,z_axis,thickness=3):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(quxian,muxian,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
  
 A=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,2*Pi},{v,-0.81,0.81},Boxed->False,Axes->None,PlotStyle->FaceForm[LightBlue,LightCyan],Mesh->{15,2}];
v=0.8;
B=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,4*Pi},PlotStyle->{Red,AbsoluteThickness[2]}];
Show[A,B]



麦比乌斯带 - Calculus - 高等数学 
with(plots): with(plottools): a:=2:b:=0.5:
qumian:=plot3d([(a+u*cos(b*v))*cos(v),(a+u*cos(b*v))*sin(v),u*sin(b*v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=wireframe,color=blue,thickness=2,grid=[20,20]):
u0:=1: K:=60:for i from 1 to K do ti:=i*4*Pi/K:
quxian[i]:=spacecurve([(a+u0*cos(b*v))*cos(v),(a+u0*cos(b*v))*sin(v),u0*sin(b*v)],v=0..ti,color=red,thickness=5) od:
quxian:=display(seq(quxian[i],i=1..K),insequence=true):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(qumian,quxian,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
 
 

麦比乌斯带 - Calculus - 高等数学

Mathematica程序:

A=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,2*Pi},{v,-
0.81,0.81},
     Boxed->False,Axes->None,PlotStyle->FaceForm[LightBlue,LightCyan],Mesh->{15,2}];
v=0.8;
B=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,4*Pi},PlotStyle->{Red,AbsoluteThickness[2]}];
Show[A,B]
 
 
 
4. 以下动画显示:麦比乌斯带只有一侧
 
麦比乌斯带 - Calculus - 高等数学
动画程序:
with(plots): with(linalg): a:=2:b:=1/2: x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v): z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,grid=[10,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v): 
K:=80: for i from 1 to K do ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..0.95,color=blue,thickness=4):
dian[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0.95..1.05,color=red,thickness=10):
dian2[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=-0.06...0.05,color=red,thickness=10):
A[i]:=display(fashi[i],dian[i],dian2[i]) od:
AA:=display(seq(A[i],i=1..K),insequence=true):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(AA,qumian,quxian,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
 

麦比乌斯带 - Calculus - 高等数学
 
with(plots):  witwith(plottools): a:=2: b:=0.5:
x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v):
z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patch,color=yellow,grid=[30,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):  
K:=30: for i from 1 to K do: ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..0.3,color=blue,thickness=4):
dian[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0.3...0.35,color=red,thickness=4):
A[i]:=display(fashi[i],dian[i]): od:
AA:=display(seq(A[i],i=1..K)):
K:=60: for i from 1 to K do: ti:=i*360/K:
B[i]:=display(qumian,quxian,AA,orientation=[ti,90]): od:
BB:=display(seq(B[i],i=1..K),insequence=true):
text:=textplot3d([0,0,0,"XUXZ 2008"],color=grey):
display(BB,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
 
5. 以下图形显示:麦比乌斯带的这些法线又构成一个麦比乌斯带

  
麦比乌斯带 - Calculus - 高等数学

with(plots):  with(plottools): a:=2:b:=0.5: x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v): z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patchnogrid,color=grey,thickness=2,grid=[20,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):
s0:=0.5:
quxian2:=spacecurve([x(0,v)+s0*M1(0,v),y(0,v)+s0*M2(0,v),z(0,v)+s0*M3(0,v)],v=0..4*Pi,color=red,thickness=4):
K:=50: for i from 1 to K do: ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..s0,color=blue,thickness=4):
dian[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=s0...s0+0.05,color=red,thickness=4):
A[i]:=display(fashi[i],dian[i]):  od:
AA:=display(seq(A[i],i=1..K)):
text:=textplot3d([0,0,0,"XUXZ 2008"],color=grey):
display(qumian,quxian,quxian2,AA,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);

麦比乌斯带 - Calculus - 高等数学
with(plots):  witwith(plottools): a:=2: b:=0.5: x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v): z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patch,color=yellow,grid=[30,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):
s0:=0.5:
quxian2:=spacecurve([x(0,v)+s0*M1(0,v),y(0,v)+s0*M2(0,v),z(0,v)+s0*M3(0,v)],v=0..4*Pi,color=red,thickness=3):
K:=80: for i from 1 to K do: ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..s0,color=blue,thickness=3): od:
fashi:=display(seq(fashi[i],i=1..K)):
K:=60: for i from 1 to K do: ti:=i*360/K:
B[i]:=display(qumian,quxian,quxian2,fashi,orientation=[ti,90]): od:
BB:=display(seq(B[i],i=1..K),insequence=true):
text:=textplot3d([0,0,0,"XUXZ 2008"],color=grey):
display(BB,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
 
 
 
 
 
Updated: 14 JULY 2010
  评论这张
 
阅读(2029)| 评论(3)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 -->