无法放大使用 matplotlib 设置的 mandelbrot,它只是切断了我尝试缩放的部分
Can't zoom in on a mandelbrot set with matplotlib, instead it just cuts off the part I try to zoom
我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
def mandelbrot(c):
z = complex(0, 0)
for i in range(0, 100):
z = z*z+c
if abs(z) > 2:
return(i)
return 100
M = np.zeros([401, 401])
a = np.linspace(-2, 2, 401)
b = np.linspace(-2, 2, 401)
for x in a:
for y in b:
M[round((x+2)*100), round((y+2)*100)] = mandelbrot(complex(x, y))
plt.imshow(M, cmap='jet', extent=(-2, -2, 2, 2))
plt.show()
这非常有效。下一个任务是更改 a 和 b,以便它放大集合的某个部分。我尝试改变 a 和 b 这样:
a = np.linspace(-0.5, 0.5, 401)
b = np.linspace(-0.5, 0.5, 401)
并且还更改了范围,使得范围=(amin, amax, bmin, bmax)。
这些是结果:
原创
缩放:
如您所见,它并没有放大那部分,而是只是切掉一部分并只显示它。这是我卡住的地方,因为我找不到真正让它缩放的方法。有什么建议吗?
您正在使用数组 a
和 b
的值作为矩阵 M
的索引。
你要的是M[x,y] = mandelbrot(a[x] + i*b[y])
:
import numpy as np
import matplotlib.pyplot as plt
def mandelbrot(c):
z = complex(0, 0)
for i in range(0, 100):
z = z*z+c
if abs(z) > 2:
return(i)
return 100
numpts = 401
xymin = -.5
xymax = .5
M = np.zeros([numpts, numpts])
a = np.linspace(xymin, xymax, numpts)
b = np.linspace(xymin, xymax, numpts)
for x in range(numpts):
for y in range(numpts):
M[x, y] = mandelbrot(complex(a[x], b[y]))
plt.imshow(M, cmap='jet', extent=(xymin, xymax, xymin, xymax))
plt.show()
这给了你正确的结果。
我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
def mandelbrot(c):
z = complex(0, 0)
for i in range(0, 100):
z = z*z+c
if abs(z) > 2:
return(i)
return 100
M = np.zeros([401, 401])
a = np.linspace(-2, 2, 401)
b = np.linspace(-2, 2, 401)
for x in a:
for y in b:
M[round((x+2)*100), round((y+2)*100)] = mandelbrot(complex(x, y))
plt.imshow(M, cmap='jet', extent=(-2, -2, 2, 2))
plt.show()
这非常有效。下一个任务是更改 a 和 b,以便它放大集合的某个部分。我尝试改变 a 和 b 这样: a = np.linspace(-0.5, 0.5, 401) b = np.linspace(-0.5, 0.5, 401)
并且还更改了范围,使得范围=(amin, amax, bmin, bmax)。
这些是结果:
原创
缩放:
如您所见,它并没有放大那部分,而是只是切掉一部分并只显示它。这是我卡住的地方,因为我找不到真正让它缩放的方法。有什么建议吗?
您正在使用数组 a
和 b
的值作为矩阵 M
的索引。
你要的是M[x,y] = mandelbrot(a[x] + i*b[y])
:
import numpy as np
import matplotlib.pyplot as plt
def mandelbrot(c):
z = complex(0, 0)
for i in range(0, 100):
z = z*z+c
if abs(z) > 2:
return(i)
return 100
numpts = 401
xymin = -.5
xymax = .5
M = np.zeros([numpts, numpts])
a = np.linspace(xymin, xymax, numpts)
b = np.linspace(xymin, xymax, numpts)
for x in range(numpts):
for y in range(numpts):
M[x, y] = mandelbrot(complex(a[x], b[y]))
plt.imshow(M, cmap='jet', extent=(xymin, xymax, xymin, xymax))
plt.show()
这给了你正确的结果。