最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

十幾行python代碼,帶你畫一個漂亮的Mandelbrot集

2022-07-10 00:50 作者:怯默吾聲  | 我要投稿

想必大多對數(shù)學(xué)感興趣的人都對Mandelbrot集有所耳聞。

雖然每個做這個程序的都要說,但是我還是以我的語言再解釋一次吧。

對于復(fù)平面上任意一個復(fù)數(shù)C,從X0=0開始,Xn=Xn-1^2+C反復(fù)迭代 ,如果結(jié)果始終不會發(fā)散,則C屬于曼德布洛特集。

所以繪制曼德布洛特集其實很簡單,按照定義把這些點找出來就可以啦。

用python實現(xiàn)一下:


import numpy as np

from matplotlib import pyplot as plt

n=1000

Y, X = np.mgrid[-1.5:1.5:3/n, -2:1:3/n]

C = X+1j*Y

#做出復(fù)平面C,每一個元素,都是復(fù)平面上該點的坐標(biāo)。

#下面來檢查一下這些點,哪些滿足Mandelbrot集定義


pic = np.zeros((n,n)) ?#定義一個平面,用來保存定義要求的每一次迭代的結(jié)果。

ans = np.zeros((n,n)) ?#用來繪制最終曼德布洛特集的平面。


for i in range(20):

? ? pic=pic**2+C ?? #按照曼德布洛特集的定義進(jìn)行迭代。

? ?

ans = np.float32(np.abs(pic)<100) ?

#檢查多次迭代后,最終結(jié)果模值小于100的點都認(rèn)為收斂,從而得到每一點的收斂情況

# 把收斂結(jié)果然后轉(zhuǎn)化成浮點類型,放在ans中。


plt.imshow(ans,cmap="rainbow")

plt.show()? ?#把a(bǔ)ns畫出來


怎么樣,是不是很簡單? 我們來看看結(jié)果如何。

Mandelbrot集的繪制效果

總共13行就實現(xiàn)了這樣的效果。

現(xiàn)在修改一下程序,我們把迭代過程中的每一步滿足的點集都繪制在一張圖上。修改的方法很簡單,讓保存最終結(jié)果的ans是每一步結(jié)果的和,看下修改后的代碼


import?numpy?as?np

from?matplotlib?import?pyplot?as?plt

n=1000

Y, X = np.mgrid[-1.5:1.5:3/n, -2:1:3/n]

C = X+1j*Y

pic = np.zeros((n,n))??

ans = np.zeros((n,n))??

for?i?in?range(20):

? ? pic=pic**2+C? ??

????ans += np.float32(np.abs(pic)<100)??

????#這里ans放入循環(huán)體中,對每一步求和,從而展示出逐漸收斂的過程。

plt.imshow(ans,cmap="rainbow")

plt.show()? ?

看看結(jié)果:

Mandelbrot彩虹

效果是不是挺驚艷。


如果想繪制局部圖形,還是老程序,但是需要修改對應(yīng)的參數(shù):

import numpy as np

from matplotlib import pyplot as plt

n=1000

Y, X = np.mgrid[-0.05:0.05:0.1/n, 0.2:0.3:0.1/n]??

#在這里只選擇平面上自己想繪制的部分區(qū)間。

C = X+1j*Y

pic = np.zeros((n,n)) ?

ans = np.zeros((n,n))??

for i in range(200):

#由于繪制范圍變小,為了在局部依然明確的區(qū)分出收斂情況,則需要相應(yīng)提高迭代次數(shù)。

? ? pic=pic**2+C ??

? ? ans += np.float32(np.abs(pic)<100)??

plt.imshow(ans,cmap="rainbow")

plt.show() ?

-0.05<y<0.05?0.2<x<0.3的部分部分圖形

怎么樣,沒有疑問了吧。


十幾行python代碼,帶你畫一個漂亮的Mandelbrot集的評論 (共 條)

分享到微博請遵守國家法律
上饶县| 绥中县| 南京市| 海城市| 高雄县| 中牟县| 巴彦淖尔市| 开江县| 徐汇区| 巫溪县| 东乡| 康乐县| 满洲里市| 兰西县| 大渡口区| 康马县| 吐鲁番市| 吴江市| 昆山市| 华亭县| 西吉县| 固原市| 元阳县| 如皋市| 桃江县| 肇庆市| 渝北区| 高州市| 突泉县| 临泉县| 通州市| 丹寨县| 灌南县| 彭山县| 金寨县| 江安县| 房山区| 永平县| 江华| 文水县| 三江|