У меня проблемы с этим вопросом. Все, что он возвращает, - это пустой график.
Здесь мы, наконец, сделаем графики, подобные тем, которые мы видели в упражнении 6, которые показывают, к какому корню сходятся из разных начальных точек комплексной плоскости, для ?4−1. Начните с вставки в вашем which_roots_z4 (z, n) из упражнения 11 (или используйте тот, что из опубликованного решения, если вы никогда не заставляли свое работать - если вы это сделаете, сделайте комментарий о том, что вы это сделали). Затем создайте двумерный массив комплексных чисел, чьи действительные и мнимые части дают значения x и y точек сетки, охватывающих от -2 до +2. Используйте 1000 баллов в каждом измерении (всего 106 баллов). Затем вызовите вашу функцию с этим массивом как z, и n = 100. Теперь, чтобы сделать изображение, создайте новый трехмерный массив целых чисел, имеющий форму (1000, 1000, 3). Последнее измерение будет содержать интенсивность красного, зеленого и синего компонентов изображения в каждой из точек сетки 1000x1000. Заполните массив так, чтобы точки, сходящиеся к корню 0, выглядели красными (255, 0, 0), а точки, сходящиеся к индексу 1, были голубыми (0, 0, 255) - и выберите два других цвета для двух других корней. Наконец, вы можете использовать plt.imshow () для отображения изображения.
Вот код на данный момент:
import numpy as np
import matplotlib.pyplot as plt
def which_root_z4(z,n):
for i in range(n):
z=z-(z**4-1)/(4*z**3)
d=np.zeros((4,)+z.shape)
d[0]=np.abs(z-1)
d[1]=np.abs(z-1j)
d[2]=np.abs(z-1)
d[3]=np.abs(z-1j)
mins=np.argmin(d,axis=0)
return mins
x1d=np.arange(-2,2,1000)
y1d=np.arange(-2,2,1000)
x2d,y2d =np.meshgrid(x1d,y1d)
z2d=x2d + 1.j*y2d
f2d=which_root_z4(z2d,100)
f3d=np.zeros((1000,1000,3))
roots=np.array([x1d,y1d])
colours=[]
f3d[np.where(f2d==0)]=(255,0,0)
f3d[np.where(f2d==1)]=(0,0,255)
f3d[np.where(f2d==2)]=(255,255,0)
f3d[np.where(f2d==3)]=(255,165,0)
plt.imshow(f3d,extent=(-2,2,-2,2))
plt.show()