Supposons que j'ai un carré matrixM
. Supposons que je voudrais invert la matrice M
.Inversion de matrice rapide sans paquet
J'essaie d'utiliser la classe des fractions mpq
au sein de gmpy2 en tant que membres de ma matrice M
. Si vous n'êtes pas familier avec ces fractions, elles sont fonctionnellement similaires au package intégré de python fractions
. Le seul problème est, il n'y a pas de paquets qui vont inverser ma matrice à moins que je les sorte de la forme de fraction. J'ai besoin des nombres et des réponses sous forme de fraction. Donc, je vais devoir écrire ma propre fonction pour inverser M
.
Il existe des algorithmes connus que je pourrais programmer, tels que gaussian elimination. Cependant, la performance est un problème, donc ma question est la suivante:
Existe-t-il un algorithme de calcul rapide que je pourrais utiliser pour calculer l'inverse d'une matrice M
?
Tout algorithme rapide et raisonnable pour cela aurait besoin d'être implémenté en C, en tant qu'extension. Une autre approche serait de les multiplier tous par leur GCD, ou simplement le produit de leurs dénominateurs, de les transformer en entiers, et d'utiliser des paquets avec des extensions C et beaucoup plus de temps mis à optimiser. C'est 'O (n)', donc à moins que l'algorithme à inverser soit meilleur que 'O (n)', cela ne nuira pas à la complexité temporelle. – Artyer
Avez-vous regardé sympy? Cela fonctionne très bien avec gmpy2 et les matrices: http://docs.sympy.org/dev/modules/matrices/matrices.html#linear-algebra – denfromufa
Oui, mais l'inversion de sympy est plus lente que de coder l'élimination gaussienne à la main. Je peux partager mon code pour l'élimination gaussienne avec des repères. –