我昨天心血来潮发现的,本想做个对数坐标变换。 原以为是等于可视图形简单变形。
但是抄别人 python 图画修改出来才发现并不是。而是出现了新图形。
摆脱了圆环套圆环的分形。
我又联想起,当年简单的对manderbrot分形的可是图形做傅里叶变换没什么特殊,
或许我应该直接对分形计算做傅里叶变换——这我就没能力改代码了。
import numpy as np
import pylablib as pl
import matplotlib.pyplot as plt
import time
from matplotlib import cm
import math
def iter_point(c):
if(c==0) :
return 0
r=c.real
j=c.imag
r=math.log(r) if(r>0) else 0- math.log(abs(r))
j=math.log(j) if(j>0) else 0 - math.log(abs(j))
#r=math.pow(2,r) if(r>0) else 0- math.pow(2,abs(r))
#j=math.pow(2,j) if(j>0) else 0 - math.pow(2,abs(j))
z = complex(r,j)
for i in range(1, 256): # 最多迭代100次
if abs(z)>2: break # 半径大于2则认为逃逸
z = z*z+c
return i # 返回迭代次数
def draw_mandelbrot(cx, cy, d):
"""
绘制点(cx, cy)附近正负d的范围的Mandelbrot
"""
x0, x1, y0, y1 = cx-d, cx+d, cy-d, cy+d
y, x = np.ogrid[y0:y1:200j, x0:x1:200j]
c = x + y*1j
start = time.perf_counter()
mandelbrot = np.frompyfunc(iter_point,1,1)(c).astype(np.float64)
print("time=",time.perf_counter() - start)
plt.imshow(mandelbrot, cmap=cm.jet, extent=[x0,x1,y0,y1])
plt.gca().set_axis_off()
x,y = 0.27322626, 0.595153338
x,y =0.361,0.6
#x,y = 0.712, 0.071
x,y=0.38367,0.60081
plt.subplot(331)
draw_mandelbrot(0,0,2.7/2)
for i in range(2,9):
plt.subplot(3,3,i)
draw_mandelbrot(x, y, 0.5**(i-1))
# plt.subplots_adjust(0.02, 0, 0.98, 1, 0.02, 0)
plt.show()
--
FROM 223.198.80.*