Я использую numpy.svd для вычисления сингулярных разложений плохо обусловленных матриц. В некоторых особых случаях svd не сходится и вызывает Linalg.Error. Я провел некоторое исследование и обнаружил, что numpy использует процедуру DGESDD из LAPACK. Стандартная реализация имеет жестко заданный лимит итераций в 35 или около того. Если я пытаюсь разложить ту же матрицу в Matlab, все работает нормально, и я думаю, что на это есть две причины: 1. Matlab использует DGESVD вместо DGESDD, который в целом кажется более надежным. 2. Matlab использует в подпрограмме ограничение на число итераций, равное 75. (Они изменили его в исходниках и перекомпилировали.)
Теперь возникает вопрос: есть ли простой способ изменить используемый бэкэнд в numpy с DGESDD на DGESVD без необходимости изменять источник numpy?
Заранее спасибо Миша