Интегрировать двумерный вектор-массив (реверсивный градиент)

F. Win спросил: 03 ноября 2018 в 09:48 в: python

У меня следующая проблема: я хочу интегрировать двумерный массив, поэтому в основном обращаюсь к оператору градиента.

Предполагая, что у меня есть очень простой массив, как показано ниже:

shape = (60, 60)
sampling = 1
k_mesh = np.meshgrid(np.fft.fftfreq(shape[0], sampling), np.fft.fftfreq(shape[1], sampling))

Затем я строю свое векторное поле как комплексное множество (x-vector = действительная часть, y-вектор = мнимая часть):

k = k_mesh[0] + 1j * k_mesh[1]

Таким образом, действительная часть например, выглядит так

Теперь я беру градиент:

используйте преобразования Фурье, чтобы обратить его, используя следующую функцию:

k_grad = np.gradient(k, sampling)

К сожалению, результат не очень точен в позиции, где k имеет резкое изменение, как видно на графике ниже, который отображает горизонтальную линию профиля k и k_int.

Есть идеи, как повысить точность? Есть ли способ сделать это точно так же?


0 ответов