Мне было интересно, была ли функция в Lapack для ортонормирования столбцов очень высокой и тощей матрицы. A similar previous question asked this question, presumably in the context of a square matrix. Моя настройка такова: у меня есть матрица M по N, которую я пытаюсь ортонормировать столбцы.Функция ортонормирования лапака для прямоугольной матрицы
Итак, моя первая мысль заключалась в том, чтобы сделать разложение qr. Функции для выполнения qr-декомпозиции в Lapack выглядят как dgeqrf и dormqr. Отлично. Тем не менее, моя проблема заключается в следующем: моя матрица A настолько высока, что я не хочу фактически вычислять все Q, потому что это M по M. На самом деле я не могу позволить создать экземпляр матрицы M по M во время любого из моих вычислений (это не поместилось бы в память). Я бы скорее вычислил только матрицу, которая wikipedia calls Q1. Однако я не могу найти способ сделать эту работу.
Странно, что я думаю, что это возможно. У Numpy, в частности, есть функция numpy.linalg.qr, которая, как представляется, делает именно это. Однако даже после прочтения их исходного кода я не могу понять, как они используют вызовы lapack, чтобы заставить это работать.
Есть ли у людей идеи? Я бы предпочел, чтобы это использовало только функции lapack, потому что я надеюсь перенести этот код на CuSOLVE, который реализовал несколько функций lapack (включая dgeqrf и dormqr) для графического процессора.