Существует ли функция BLAS/LAPACK для расчета обновлений коэффициента Холецкого?
Позволять A
быть положительно определенной матрицей, и пусть A=L*L'
быть его холеской факторизацией, где L
нижняя треугольная. Позволять A2 = A + alpha*x*x'
быть обновленной матрицей ранга 1 A
, где x
вектор соответствующей размерности и alpha
это скаляр
Обновление фактора Холецкого - это процедура получения факторизации A2=L2*L2'
без расчета A2
Во-первых, это полезно для ускорения вычислений в случае таких обновлений матрицы низкого ранга.
Я использую библиотеки BLAS/LAPACK для элементарных алгебраических манипуляций. Я могу рассчитать факторизацию Холецкого положительно определенной матрицы с помощью процедуры spptrf. Тем не менее, я искал вокруг, и я не смог найти функцию BLAS/LAPACK, которая выполняет обновления фактора Холецкого. Может ли быть так, что нет функции, делающей это?
Дополнительно: в этом старом посте обсуждалось добавление такой рутины. Тем не менее, это очень старый пост (2013), и я не смог найти ничего более свежего.
2 ответа
Там нет такой функции. Вы можете посмотреть на эту дискуссию о SciPy. Я составил скрипт на Python, который обновляет соответствующую статью. Вы можете использовать эту информацию.
https://github.com/scipy/scipy/issues/8188
Если вы чувствуете себя конкурентоспособным и действительно пишете для этого код на Фортране, я был бы очень признателен, если бы вы могли представить его в репозиторий LAPACK в качестве пиара. https://github.com/Reference-LAPACK/lapack
Библиотеки BLAS на Netlib, как вы указали, однако я сомневаюсь, что они есть на сайте. Если вы ищете код, просто есть код здесь. Если ты хочешь это быстро, я бы просто превратил этот код в Джулию. Есть книга, которую я никогда не проверял, в которой они могут быть . Также обратите внимание, что вы процитировали статью, для которой автор написал код. Вы могли бы просто связаться с автором статьи. Его сайт, кажется, здесь. Существует проблема с этой ссылкой, хотя.