MATLAB社区

MATLAB、社区及更多

一直圈下去

这是一个关于想法和代码如何在我们共享的社会空间中跳跃的故事。这个从推特上传到GitHub,再传到我的电脑上,现在传到我的博客上。如今,我们所能获得的各种形式的社区共享,确实放大了社会的意外发现。一头扎进去,看看你会在哪里结束,这很有趣。

我们的故事开始于马特·亨德森张贴推特上有这个视频.这只是他发表的众多令人费解的数学可视化作品之一(帮你自己一个忙,跟着他走吧)。

观看视频!想法是使用显示为跟踪工具的特殊区域=1矩形将一组圆转换为另一组圆。上面的一组圆扩展到无穷远。另一组对应的圆映射到第一组圆下方的圆形区域内。

作为一个MATLAB爱好者,我很高兴见到我的朋友杰森C跟进这条推特

“我能看看你的代码吗?”我问他,他慷慨地回复了我,把这一切都发到了GitHub回购.他说他是在一次短暂的午餐休息时把它弄出来的。这是Jason代码的输出,它确实复制了上面显示的他的图像。我喜欢GitHub!

clf%从直线开始得到外圆LinePlot(100、2000)然后画一堆圆一个= -50.5:50.5b=1.5:10.5圈图(100,0.5,[ab])结束结束平等的

我看着原始的变换,思考它是怎样的一种横向反转(和Matthew)他自己也这么说).我知道如果我能把它映射到MATLAB自带的复杂数学功能,那么绘制它的代码可能会变得非常小。

这是我画的图。追踪点是z1,绘图点是z2。

通过检查,我们可以通过逆时针旋转z1 90度(乘以i)来构造z2,然后使用矩形的面积为1的假设来缩放它。

所以

但是嘿!我碰巧知道那件事

点击这里查看详情!你现在可以看到real(z2) = imag(1/z1),和imag(z2) = real(1/z1)。现在我们准备起飞了。系紧你的安全带!

我们要把这些新的圆圈用蓝色覆盖在杰森的图上。

%设置圆的中心[x,y]=网格(-50.5:50.5,1.5:10.5);%制作一个要应用于循环内部的模板圆t = linspace(0, 2 *π,100);ct = 0.5 * cos (t);圣= 0.5 * sin (t);绕圈穿过所有的中心点i=1:numel(x)%建立一个圆xc = x (i) + ct;yc = y (i) +圣;%……和转化Z = xc + 1i*yc;子= 1. / z;将实分量和虚分量翻转并绘图线(图像(zi)、真实(zi))鲍勃是你的叔叔……结束

那是同样的圆圈!我们可以通过放大来验证。

Xlim ([-0.0982 -0.0452]) ylim([0.0301 0.0719])

如果您想更好地了解变换发生了什么,这里是一个包含一些中间步骤的动画。我不得不用一个超高速摄像机来捕捉MATLAB精灵们在反转复数时的动作。你通常无法用肉眼看到这一点。

我觉得很有趣的是,地图将圆形保留为圆形,而它们所在的正方形却严重扭曲。在这里,我移除了圆圈,只留下(倒)网格。

这都是基本的分析,但在复杂的平面上徒步旅行,看看会发生什么,这是很有趣的。尤其是当你与来自网络各地的朋友和同事交流想法时,这更是有趣。因此,为马修·亨德森和杰森·C的灵感干杯!

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。