Разница между dtrtrs и dtrsm - PullRequest
7 голосов
/ 29 июня 2011

Я ищу несколько треугольных решателей, и я столкнулся с двумя решателями. Один в BLAS: dtrsm , а другой в LAPACK: dtrtrs . Судя по всему, оба имеют общую функциональность, а dtrsm обладает чуть большей функциональностью (масштабирование правой части до решения системы).

Хотелось бы узнать
1) Чем еще отличаются эти функции?
2) При выполнении той же операции, что быстрее?
3) Если ответ на (2) неочевиден, когда предлагается dtrsm вместо dtrtrs и наоборот?

1 Ответ

8 голосов
/ 29 июня 2011
  1. Помимо масштабирования, dtrsm также может решать системы, в которых треугольная матрица умножается справа на неизвестную матрицу (т. Е. Она может решать XA = B, а также AX = B).С другой стороны, dtrsm может молча потерпеть неудачу, если A является единственным, тогда как dtrtrs проверяет это условие и сообщает об ошибке.

  2. В "типичном" распределении LAPACK dtrtrs - это просто оболочка, которая проверяет сингулярность и затем вызывает dtrsm.dtrsm поэтому немного быстрее, но это различие незначительно для матриц любого разумного размера.

...