как получить обратную матрицу расстояний?

#python #math #matrix #3d #distance

#python #математика #матрица #3D #расстояние

Вопрос:

У меня огромная матрица расстояний.

Пример: (10000 * 10000)..

Есть ли эффективный способ найти обратную матрицу?

Я пробовал Inv() от numpy, но он слишком медленный.

Есть ли более эффективный способ?

Комментарии:

1. Вам действительно нужна вся обратная матрица или вам просто нужно несколько векторов inv (D) * x ? Хотя вычисления будут медленными, это будет быстрее, чем вычисление inv (D) . Всегда полезно описать, что вам нужно сделать.

2. Здравствуйте, спасибо за ваш ответ. Мне действительно нужна была обратная матрица для решения Ax = B. Я попробовал несколько вещей, но это было слишком медленно. T ^ T

3. Это может представлять потенциальный интерес.

Ответ №1:

Вы можете попробовать использовать разложение по сингулярным значениям https://numpy.org/doc/stable/reference/generated/numpy.linalg.svd.html

Инвертирование разложенной формы может занять меньше времени.

Комментарии:

1. Это было бы, но вычисление svd обходится дороже, чем инвертирование.

2. зависит от ранга матрицы.

Ответ №2:

Вероятно, вам на самом деле не нужна обратная матрица.

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

Для такой большой матрицы (10k x 10k) вы, вероятно, захотите поискать какую-то итеративную технику. С другой стороны, может быть, лучше поискать какой-нибудь способ избежать построения такой большой матрицы в первую очередь — например, попробуйте использовать исходные данные каким-либо другим способом.