Seit dem 22. August 2016 bin ich seit zwei Monaten auf Geschäftsreise nach Malaysia. Da ich in einem Hotel wohne und im Urlaub Freizeit habe, habe ich mich zum ersten Mal seit einiger Zeit entschlossen, ein Hobbyprogramm zu machen.
In Bezug auf fraktale Beziehungen habe ich Mandelbrot, Buddhabro, Julia usw. gezeichnet, aber alle haben die Farbe der Koordinaten mit Fortran berechnet und mit GMT ausgegeben, aber diesmal habe ich beschlossen, alles mit Python zu versuchen. tat.
Als Zeichenfunktion wird die Heatmap-Zeichenfunktion (pcolor) von Python-matplotlib verwendet. Es ist notwendig, x-Koordinaten, y-Koordinaten und z-Werte (Werte, die Farben beim Zeichnen anzeigen) in einem zweidimensionalen Array vorzubereiten, aber die Codierung für das Zeichnen kann für ein solches Zeichnen sehr einfach und bequem sein.
Das folgende Programm ist eine Umschreibung des auf der Referenzseite (1) beschriebenen BASIC-Programms in Python. Ich habe es nach meinem Geschmack geändert.
Die zu ändernden Variablen sind wie folgt
ab td> | Erstellen Sie die grundlegende Zeichenfolge (eindimensionales Array im Programm), die Sie mit a = 0, b = 1 td> tr> zeichnen möchten |
nm td> | Anzahl der Iterationen eines eindimensionalen Arrays * ab * td> tr> |
a0, a1 td> | x-Achsenbereich td> tr> |
b0, b1 td> | Bereich der y-Achse td> tr> |
irx, iry td> | Aufteilung des x-Achsenbereichs und des y-Achsenbereichs 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()
Ein Beispiel für das Zeichnen mit den im obigen Programm beschriebenen Variablen ist unten dargestellt.
(1) Beispiel eines Lyapunov-Fraktal-Zeichenprogramms http://www.rowan.edu/colleges/csm/departments/math/facultystaff/osler/15.%20A%20quick%20look%20at%20Lyapunov%20space.pdf
(2) Beispiel einer Wärmekarte http://yoshihikomuto.hatenablog.jp/entry/2015/04/10/105615
(3) Grundlagen der Heatmap http://d.hatena.ne.jp/y_n_c/20091122/1258904025
(4) Riapnov Fractal (Wikipedia) [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)
das ist alles
Recommended Posts