バーニングシップフラクタルをpythonで描くプログラム

2022年1月10日

 

前回、pythonでマンデルブロ集合を描くプログラムを載せました。

このページでは、それを少し改造して、pythonでバーニングシップフラクタルを描くプログラムを載せます。

 

↓以下プログラムです

import numpy as np
import matplotlib.pyplot as plt

point=[-1.7536,0.0368]
length=0.0922

thresh=5
roop=35
cut=0.001*length

remin=point[0]-length*0.5
remax=point[0]+length*0.5
immin=-point[1]-length*0.5
immax=-point[1]+length*0.5
aximmin=point[1]-length*0.5
aximmax=point[1]+length*0.5

re=np.arange(remin,remax,cut)
im=np.arange(immin,immax,cut)

M=len(re)
N=len(im)

F=np.zeros((N,M))

d=1j
for m in range(M):
	for n in range(N):
		z=0+0*d
		c=re[m]+im[n]*d
		F[n,m]=roop
		for k in range(roop):
			z=(abs(z.real)+abs(z.imag)*1j)**2+c
			if abs(z)>thresh:
				F[n,m]=k
				break

plt.imshow(F,extent=[remin,remax,aximmin,aximmax],cmap=plt.get_cmap("hot"))
plt.axis("tight")

plt.show()

 

マンデルブロ集合を描くプログラムとの違いについて述べておきます。

 

まず、複素数漸化式をバーニングシップフラクタルの式に変えています。

また、pointやlengthなどの描画範囲を、いわゆる燃える船の部分に合わせています。

 

綺麗にバーニングシップフラクタルを描くためには、計算回数を少なくするのがポイントです。

マンデルブロ集合を描くプログラムではroopを100にしていましたが、今回は35と少なくしています。

それでも結構な計算時間がかかります。

 

そしてプロットカラーを、燃える船に見えるように「hot」に変えています。

 

2022年1月10日PC,バーニングシップフラクタル,プログラミング,全ページ

Posted by 無郷庵