Doman coloring(域着色)

在复分析中,域着色是一种通过为复平面的每个点指定颜色来可视化复杂函数的技术。

DColor:一个域着色Python模块:

网址

https://github.com/hernanat/dcolor

README

DColor是一个Python3模块,用于使用域着色方案可视化复值函数。

DColor利用了两个著名的Python库:Numpy和Matplotlib。在能够使用DColor之前,您必须使用以下命令安装它们:

$ python3 -m pip install -U numpy
$ python3 -m pip install -U matplotlib

快速启动

在本地环境中准备源文件,并创建DColor对象的实例。例如:

dc = DColor(xmin=-10, xmax=10, ymin=-10, ymax=10, samples=4000)

Lambda表达式用于定义函数并将函数传递给plot()函数。例如:

dc.plot(lambda z : ((z+1-2j)*(z+2+2j)*((z-2)**2))/(z**3))

结果如下图:
在这里插入图片描述

complex-plotting

网址

https://github.com/seaplant3/complex-plotting

README

一些python代码,用于使用域着色和等高线可视化复杂函数(从复杂平面到复杂平面)。
作者:Carl Plant ([email protected])
这显示了一个有趣的3D图形,包括复杂平面的一部分和Rieman(立体图)球体(https://en.wikipedia.org/wiki/Riemann_sphere)。视图可以平移、旋转和缩放,球体或平面可以隐藏在交互式GUI中,但是必须在执行之前修改代码来设置要绘制的函数、分辨率、轮廓的性质等等。有关详细信息,请参阅代码。

设置说明:

如果还没安装python2.7:

安装它!我推荐Miniconda发行版,您将需要Python 2.7版本。然后,您可以运行conda-setup-script.sh来为Mayavi(实现所有这些功能的包)设置所有内容。脚本将打开 Jupyter 笔记本界面,当它完成时,你可以打开complex-plotting-jupyter-notebook.ipynb并按shift+enter运行代码。

如果您关闭 Jupyter并稍后返回,请使用reopen-script.sh从停止的地方继续。

如果您已经安装了python

我建议将complex-plot -main.py的内容剪切粘贴到Jupyter笔记本单元格中,您可以在其中轻松编辑它并按shift+enter运行。您还可以使用python /path/到/complex-plot -main.py从终端运行它。
Mayavi模块可能无法工作或根本无法安装,这取决于您已经安装了哪些其他模块(例如matplotlib)。如果您有这个问题,或者您正在使用Python 3,或者有其他错误,那么conda-setup-script.sh应该会修复它。如果您没有安装conda(大多数人已经安装了),您可以在这里获得它。

如果您关闭Jupyter并稍后返回,请使用reopen-script.sh从停止的地方继续。或者,运行源代码在运行Jupyter笔记本或python之前激活complexPlottingEnv加载Mayavi的设置。

如果我的BASH脚本不能工作(例如,因为你在Windows上),或发生其他问题:

尝试这些故障排除步骤。终端命令适用于Linux/Mac,但如果它们不能在Windows上运行,一个快速的谷歌应该会显示正确的命令。这将构建一个特殊的python环境,其中只包含这段代码所需的包,以防止Mayavi的依赖关系与其他任何东西(如matplotlib)发生冲突。

  1. 确保安装了Python 2.7和conda。您可以使用Miniconda或Anaconda。您可以通过运行conda -version来检查它是否正常工作。
  2. 通过运行conda create -n myEnvName python=2.7创建一个干净的新环境。您可以运行conda env list来查看列表中的新环境,或者检查conda-setup-script.sh是否成功地生成了一个名为complexPlottingEnv的环境。
  3. 通过运行source activate myEnvName切换到这个环境。(myEnvName)应该出现在您的终端提示符中。
  4. 在这个环境中安装mayavi和jupyter包:运行conda Install mayavi jupyter。
  5. 运行代码!运行jupyter笔记本,并导航到 complex-plotting-jupyter-notebook.ipynb的位置。将代码剪切粘贴到记事本单元中,或者运行python /path/到/where/you/ downloads /complex-plot -main.py。只要确保先运行source activate myEnvName,如果它还没有显示在终端提示符中。
    注意,当计算时,它可能需要大约15秒的时间来启动,并可能会抛出一些警告,如“溢出”或“无效值”,这是正常的。

在域着色图片上生成网格

参考:https://pdfs.semanticscholar.org/1b31/16583a2638f896d8e1dd5813cd97b3c7e2bd.pdf

Complex functions that are differentiable(so called holomorphic functions) and have
nowhere vanishing derivative are of particular geometric interest: they are conformal,
i.e. they preserve angles.

复函数是可微的(称为全纯函数),没有哪一种消去的导数具有特殊的几何意义:它们是保角的,
也就是说,它们保持角度不变。

To illustrate this phenomenom, it is helpful to implement grid-like color schemes such as rectangular grids or polar grids. We explain a polar grid consisting of concentric circles as
contour lines around the origin and n rays starting at the origin going through the nth roots of unity exp(2kπi/n), as shown in Figure 6.

为了说明这一现象,可以使用网格状的配色方案,如矩形网格或极座标网格。我们把由同心圆组成的极网格解释为等值线的起源和n射线从原点开始通过统一的n根exp (2 kπi / n),如图6所示。

图6:一种极网格配色方案,其红色等高线模量为1(左上),适用于复数sin(右上),即Joukowski函数图3(左下角)和函数fm-图4(右下角)。
有两件事情要去做:

第一:计算 argzarg z的距离dθd_\theta(作为0-1之间值)最接近分数kn\frac{k}{n}k=0,1,...,n1k=0,1,...,n-1;
第二:计算模长z|z|的距离dcd_c最接近的倍数lD,lNl·D,l\in N,其中D是在任意两个连续的同心圆的距离。依赖于dθd_\theta,dcd_c的距离,如果距离太大,返回白色,如果距离小于某些用户指定的阈值,则为灰色。由于实现是直接的,所以我们不给出代码清单。矩形网格也可以用类似的方法创建,但是使用下一节中讨论的倾斜更方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章