#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) вы, вероятно, захотите поискать какую-то итеративную технику. С другой стороны, может быть, лучше поискать какой-нибудь способ избежать построения такой большой матрицы в первую очередь — например, попробуйте использовать исходные данные каким-либо другим способом.