Я не совсем понимаю, почему numpy.linalg.solve()
дает более точный ответ, тогда как numpy.linalg.inv()
несколько разрывается, давая (что я считаю) оценки.
Для конкретного примера я решаю уравнение C^{-1} * d
, где C
обозначает матрицу, а d
- вектор-массив. Для обсуждения размеры C
имеют форму (1000,1000)
, а d
- форма (1,1000)
.
numpy.linalg.solve(A, b)
решает уравнение A*x=b
для x, т.е. x = A^{-1} * b.
Поэтому я мог бы либо решить это уравнение с помощью
(1)
inverse = numpy.linalg.inv(C)
result = inverse * d
или (2)
numpy.linalg.solve(C, d)
Метод (2) дает гораздо более точные результаты. Почему это?
Что именно происходит, так что один "работает лучше", чем другой?