博士家园 首页 文库 查看内容

Python 与数学可视化的例子汇总

2016-2-22 16:03| 发布者: 博士家园| 查看: 3152| 评论: 0|原作者: xida|来自: 博士数学论坛

摘要: 我在版块已经发过不少的利用 python 绘制数学图形的例子,在这个帖子里作一个汇总.每个程序给出关键部分的解释,附上代码和示例图片.所有代码读者可以自由使用. 我选择问 ... ...
本帖请勿回复,可以在点评中发表意见.

我在版块已经发过不少的利用 python 绘制数学图形的例子,在这个帖子里作一个汇总.每个程序给出关键部分的解释,附上代码和示例图片.所有代码读者可以自由使用.

我选择问题的原则就是其背后的数学要足够有趣,而非结果必须有多么漂亮.比如 Shramm - Loewner - Evolution 曲线,单单从结果图上看,就是弯弯扭扭的一个没什么规律的曲线,或者是一坨(Space-Filling Cuve)乱麻样的东西,估计谁第一眼看去也难产生兴趣,但是它背后的数学是非常深的,将统计力学与概率论中许多模型联系在一起,有很多惊人的结果.Werner 也因此而获得了 2006 年的 Fields 奖.一个新手学习怎样绘制这个曲线颇要花一番功夫.

另一方面,像 Julia set,Newton fractals,Apollonian gaskets,SandPile Model 等等虽然可以作出很炫的图片来,但是背后的数学并没有多么复杂,所以就不在选题之列.(我还是手痒没忍住画了一个 Julia 集的脚本,只是单纯为了说明这玩意其实很简单).

总之图片的美观程度与背后的数学的奇妙程度并不成正比,这一点要谨记.

所有的程序仅实现基本的功能,没有任何花哨的东西,目的是为了不 "喧宾夺主" 盖住背后的数学.

已经完成的部分如下:



还有一些正在写但未完成的项目,包括

  • Poincare 双曲铺砌(这个我打算用 Coxeter 群的有限自动机来做).

  • Klein $j$ 函数的可视化(最重要的模函数)

  • Costa 极小曲面


在用 Python 写了一些程序后,我觉得有一些体会可能对大家有帮助.这里仅限于用 Python 与数学结合的方面.

Python 并不是一个运行效率很高的语言,在涉及大量计算的时候纯用 python 的话慢的挺难忍的;在符号和数值计算上它与 Mathematica 差距还挺大的(有不少特殊的数学函数 Python 的库里面是没有实现的,或者实现的效率和精度与 Mma 相去甚远).所以从精益求精的角度,如果想得到最好的效果,很多时候 Python 并不是最好的选择.

但是 Python 有个明显的好处,就是它的代码很容易读懂,而且写起来也很快.如果涉及的数学问题比较复杂的话,这是一个很大的优势,可以把人的精力从具体的代码里面解放出来,而集中在背后的算法上.同一个问题,通过阅读一份 Python 代码的实现和另一份 C 语言代码的实现来搞清楚其背后的逻辑,耗费的时间是很不一样的.

Mathematica 的语法也很简单,而且功能更强,但它就像一个黑匣子,只给你使用的接口,隐藏了内部的细节,这一点对我这种想弄清背后发生了什么的人来说不太爽,这是促使我选择 Python 的另一个原因.

最后 Python 是一门语言,它不仅仅可以用在数学上,也许有一天你决定用它做点别的事情呢?

补充:我用的是 Python 2.7.



2

路过

鸡蛋

握手
32

鲜花

刚表态过的朋友 (34 人)

关于我们|手机版|订阅|博士家园 ( 沪ICP备15045866号-1 )(沪公网安备沪公网安备 31011702001868号) 

GMT+8, 2024-4-16 13:06 , Processed in 0.104043 second(s), 19 queries .

Powered by Discuz! X3.4

© 2004-2024 博士家园

  • 获赠:邀请码

    博士投稿

    请发电子邮件

    电子邮件

    www@math.org.cn

    在线时间:9:00-16:00

  • 返回顶部