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的距離,如果距離太大,返回白色,如果距離小於某些用戶指定的閾值,則爲灰色。由於實現是直接的,所以我們不給出代碼清單。矩形網格也可以用類似的方法創建,但是使用下一節中討論的傾斜更方便。

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