Проверяет ли Лапак, является ли матрица обратимой, прежде чем он попытается ее инвертировать

Я использую LAPACK в коде c, который позволяет мне инвертировать матрицу. чтобы быть более точным, я использую dgetrf_, затем dgetri_ для выполнения инверсии.

Но поскольку я имею дело с большими матрицами и поскольку я не знаю, будут ли матрицы обратимы или нет, я теряю много времени, пытаясь инвертировать необратимую матрицу ... Есть ли способ, используя LAPACK, проверить это?


person PinkFloyd    schedule 20.06.2013    source источник


Ответы (1)


См. эту ссылку (несмотря на то, что ей уже несколько лет. ) относительно отказа dgetrf + dgetri на сингулярной матрице. Также предлагается способ проверки «обратимости» рассматриваемой матрицы: оценка числа обусловленности (функция dgecon).

Номер условия может помочь, потому что это свойство самой матрицы и, следовательно, не связано с точностью вашего алгоритма и / или ошибкой округления ПК. Чем больше число обусловленности, тем ближе к сингулярности ваша матрица, поэтому вы можете по существу установить (переменную) верхнюю границу вашего числа обусловленности. См. Таблицы внизу этой страницы, чтобы увидеть потенциальную функцию - порядок вызова в зависимости от типа используемых вами матриц.

person Kendra Lynne    schedule 20.06.2013
comment
я думаю, ты хотел написать dgecon - person PinkFloyd; 21.06.2013