Depuis le 22 août 2016, je suis en voyage d'affaires en Malaisie depuis deux mois. Comme je vis dans un hôtel et que j'ai du temps libre en vacances, j'ai décidé de créer un programme de loisirs pour la première fois depuis longtemps.
En ce qui concerne les relations fractales, j'ai dessiné Mandelbrot, Buddhabro, Julia set, etc., mais tous ont calculé la couleur des coordonnées avec Fortran et l'ont sortie avec GMT, mais cette fois j'ai décidé de tout essayer avec Python. fait.
En tant que fonction de dessin, la fonction de dessin de carte thermique (pcolor) de Python-matplotlib est utilisée. Il est nécessaire de préparer la coordonnée x, la coordonnée y et la valeur z (valeurs indiquant les couleurs sur le dessin) dans un tableau à deux dimensions, mais le codage pour le dessin peut être rendu très simple et pratique pour un tel dessin.
Le programme suivant est une réécriture du programme BASIC décrit dans le site de référence (1) vers Python. Je l'ai changé à mon goût.
Les variables à modifier sont les suivantes
ab td> | Créez la chaîne de caractères de base (tableau unidimensionnel dans le programme) que vous souhaitez dessiner avec a = 0, b = 1 td> tr> |
nm td> | Nombre d'itérations du tableau unidimensionnel * ab * td> tr> |
a0, a1 td> | plage de l'axe des x td> tr> |
b0, b1 td> | plage de l'axe y td> tr> |
irx, iry td> | divisions de la plage de l'axe des x et de la plage de l'axe des y td> tr> |
py_lyapunov0.py
import numpy as np
import matplotlib.pyplot as plt
ab=np.array([0,1])
nab=len(ab)
nm=10
a0=2
a1=4
b0=2
b1=4
irx=800
iry=600
x = np.linspace(a0,a1,irx+1)
y = np.linspace(b0,b1,iry+1)
X, Y = np.meshgrid(x, y)
z=np.empty((iry+1,irx+1))
for i in range(0,irx+1):
a=a0+(a1-a0)/(irx)*i
for j in range(0,iry+1):
b=b0+(b1-b0)/(iry)*j
s=0
xx=0.5
for n in range(0,nm):
for m in range(0,nab):
if ab[m]==0:
rr=a
else:
rr=b
xx=rr*xx*(1-xx)
v=np.abs(rr*(1-2*xx))
if 0<v: s=s+np.log(v)
s=s/(nm*nab)
if 2<s:
z[j,i]=2
elif s<-5:
z[j,i]=-5
else:
z[j,i]=s
print(np.max(z))
print(np.min(z))
z=-1.0*z
plt.xlim(a0,a1)
plt.ylim(b0,b1)
plt.pcolor(X, Y, z, cmap=plt.cm.spectral)
plt.colorbar()
plt.show()
Un exemple de dessin avec les variables décrites dans le programme ci-dessus est illustré ci-dessous.
(1) Exemple de programme de dessin Lyapunov Fractal http://www.rowan.edu/colleges/csm/departments/math/facultystaff/osler/15.%20A%20quick%20look%20at%20Lyapunov%20space.pdf
(2) Exemple de carte thermique http://yoshihikomuto.hatenablog.jp/entry/2015/04/10/105615
(3) Principes de base de la carte thermique http://d.hatena.ne.jp/y_n_c/20091122/1258904025
(4) Fractale de Riapnov (Wikipédia) [https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%97%E3%83%8E%E3%83%95%E3%83%BB%E3%83%95%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%AB] (https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%97%E3%83%8E%E3%83%95%E3%83%BB%E3%83%95%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%AB)
c'est tout
Recommended Posts