2016-10-28 3 views
-2

вот эта задача: Комплексные числа могут быть представлены на двумерном пространстве. Рассмотрим комплексные числа cc вида c = x + 1j * y (j - мнимая единица), где x∈ [-2,0,5] и y∈ [-1,1]. Представьте себе, что в этом пространстве есть двумерная сетка, причем каждый шаг сетки равен 10 (-2). Для каждого c, соответствующего одному из узлов сетки, вычислите итеративную функцию Z_{n+1} = Zˆ2_n + c с n∈ [1,100] и Z_0 = 0. Постройте сетку, окрашивая черным ячейку, соответствующую c, если Z_n расходится (т. Е. | Z_n | является NaN, иначе цвет его будет белым.комплексное математическое упражнение на python

Поскольку я не ученик-математик, у меня проблемы с этим. далеко, я мог бы сделать до этого момента:

import numpy as np 

x_values = np.arange(-2, 0.5, 0.01) 
y_values = np.arange(-1, 1, 0.01) 
M = np.zeros((len(x_values), (len(y_values))), dtype = "complex") 

for x in range(len(x_values)): 
    for y in range(len(y_values)): 
     M[x][y] = x_values[x] +1j*y_values[y] 

вы могли бы сказать мне, как я могу определить функцию, которая принимает сетки/массив, как тот, который мы имеем, инициализирует г = 0, а затем в 100 раз (т.е. для п в диапазоне (100)) делает: z = z ** 2 + сетка , затем после возврата цикла z. затем проецировать изображение:

+0

Все ваши уравнения, похоже, были вставлены дважды, что делает их нечитаемыми. Пожалуйста, настройте и переформатируйте. –

+2

Похоже, ваша задача - реализовать набор Мандельброта (или, возможно, набор Джулии). –

+0

регулируется вопрос о том, сколько может –

ответ

1

Вы были почти там !

Просто добавьте немного больше ваш for -loops:

for x in range(len(x_values)): 
    for y in range(len(y_values)): 
     for i in range(100): 
      M[x][y] = M[x][y]**2 + (x_values[x] + 1j*y_values[y]) 

(я не NumPy на данный момент, поэтому я не мог проверить это, но это не слишком сложно, так что это вероятно, хорошо.)

Что касается графика, я предлагаю проверить matplotlib. Если у вас есть проблемы, задайте другой вопрос. Но пока вы не попробовали что-то, я не хочу просто написать вам все это. ;)

+0

Защиту apply_function (матрица): г = 0 для п в диапазоне (100): г = г ** 2 + матрица возвращение г –

+0

насчет этого?)) –

+0

Прошу прощения, я не понимаю. Можете ли вы сказать это еще раз, точнее, пожалуйста? –