В настоящее время я работаю над обратной задачей, написанной на python, в которой наблюдаемые данные GPS используются для определения смещения под землей (например, землетрясение).Смещение под землей можно дискретизировать в сетке, а уравнение, описывающее эти проблемы, можно записать в виде:
G(n*n) * S(n*1) = U(n*1) [1]
Где G - наша модельная матрица, описывающая проблему, S - смещение под землейвектор, а U - вектор наблюдений поверхности.В этом случае n - это число точек сетки.
Для наказания «нефизических» решений мы можем упорядочить обратную задачу, предполагая, что смещение в точке сетки аналогично ее соседям через матрицу сглаживания Лапласа.С математической точки зрения мы хотим минимизировать лапласиан смещения, который с использованием матрицы можно записать в виде:
F(nxn) * S(n*1) = 0(n*1) [2]
, где F - матрица Лапласа, S - вектор столбца смещений, а «0» - нулевой столбец.вектор.n - количество точек сетки, используемых в инверсии.Оба уравнения [1] и [2] могут быть оптимизированы с помощью таких методов, как scipy.optimize.nnls
, который используется в этом сценарии.
Проблема заключается в построении матрицы Лапласа, я не уверен, как мне следуетначать строить его;Есть какой-нибудь scipy или другой метод библиотеки, который может достичь того, что я хочу?Я искал некоторые методы в scipy для сглаживания Лапласа, которые используются для обработки изображений, но я не знаю, работают ли они для этого конкретного случая.Другой вариант - создание метода конечных разностей для лапласиана, но я не уверен, как мне начать его создавать.
Спасибо