Я считаю, что Адриен прав, потому что у BLAS нет обратной функции для квадратных матриц.Это зависит от матрицы, которую вы используете для оптимизации исчисления ее обратного.
В общем случае вы можете использовать разложение LU, которое справедливо для любой квадратной матрицы.То есть, что-то вроде:
gsl_linalg_LU_decomp(A, p, signum);
gsl_linalg_LU_invert(A, p, invA);
, где A - квадратная матрица, которую вы хотите инвертировать, p - это gsl_permutation
объект (объект перестановки, где закодирована матрица перестановок), signum -знак перестановки и invA является обратным к A.
Поскольку вы утверждаете, что A = P' G P
является P
нормальным и G
диагональю, вероятно, A
является нормальной матрицей.Я не использовал их некоторое время, но для них должна быть теорема о факторизации, которую вы можете найти в главе 14 справочного руководства GSL или даже лучше, в книге по линейной алгебре.
Просто пример, если у вас были симметричные положительно определенные матрицы и вы хотите найти их обратную, вы можете использовать факторизацию Холецкого, которая оптимизирована для таких матриц.Тогда вы можете использовать функции gsl_linalg_cholesky_decomp()
и gsl_linalg_cholesky_invert()
в GSL, чтобы сделать его эффективным.
Надеюсь, это поможет!