La liste des routines de calcul disponibles dans LAPACK peut être trouvée here - faites défiler vers le bas de la page, Tableau 2.8. Autant que je sache, toutes les méthodes pour les matrices générales utilisent la factorisation pour effectuer l'inversion. Donc, il n'y a pas de sous-programme qui utilise GE pour calculer inverse. En ce qui concerne le pivotement, je suppose qu'à moins que vous ne sachiez vraiment ce que vous faites, vous ne devriez probablement pas utiliser une méthode sans pivotement partiel. Le pivotement partiel n'est pas terriblement cher en termes de performance, mais offre des améliorations. numerical stability. Pour autant que je sache, l'élimination gaussienne est également généralement utilisée avec pivoting partielle. En particulier, l'algorithme se brise si un élément de la diagonale principale est nul (pour une raison évidente). De plus, si la valeur du pivot est maximisée, la précision numérique de la solution est généralement améliorée.
Si vous vous une amélioration des performances pour votre version GE sans faire pivoter c'est tout simplement parce que vous faites du commerce de précision/généralité de l'approche de la performance (qui à mon humble avis est un jeu juste quand vous vraiment savoir ce que vous faites et un cas d'utilisation spécifique à l'esprit, mais je peux voir pourquoi les auteurs de bibliothèque préfèrent avoir la mise en œuvre plus générique).
En aparté, si vous êtes dans le jeu de comparaison des performances je, pour faire bonne mesure comparer aux fonctions d'inversion de matrice à partir Intel's MKL et assurer que tous les drapeaux d'optimisation du compilateur sont correctement spécifiés (-O3 -march=native
au moins) avant de tirer des conclusions.
Pourquoi l'algorithme utilisé par une routine en conserve fait-il une différence? –
Il fait la différence en raison de la performance. Les algorithmes de pivotement sont chers. En écrivant un algorithme d'élimination gaussienne pour l'inversion matricielle, j'ai pu obtenir près de 50% du temps de calcul des sous-programmes mentionnés. Comme BLAS et LAPACK ont été développés par des experts dans ce domaine, nous pensons que le paquet peut avoir des algorithmes plus rapides qui ne pivotent pas. –