l'inversion d'une matrice de 4x4
je suis à la recherche d'un exemple de mise en œuvre du code sur la façon d'inverser une matrice 4x4. je sais qu'il y est gaussien eleminiation, la décomposition LU, etc. mais au lieu de les regarder en détail, je suis vraiment à la recherche pour le code pour faire cela.
langue idéalement C++, les données sont disponibles dans la gamme de 16 flotteurs en cloumn ordre majeur.
merci!
- Est-ce devoirs? Si non (par exemple, vous êtes juste essayer de résoudre Ax=b), puis à essayer de calculer explicitement l'inverse ne peut pas être ce que vous voulez faire.
- il n'est pas de devoirs. c'est pour un projet personnel. et je ne veux pas de "déchets" de temps à l'apprentissage inversion de matrice de 4x4 qui semble assez compliqué par rapport à 3x3
- Je ne pense pas que ce est une question stupide qui mérite -1 score.
- si votre matrice est une rotation/mise à l'échelle/traduction relié: stackoverflow.com/questions/155670/... & web.archive.org/web/20130806093214/http://...
Vous devez vous connecter pour publier un commentaire.
ici:
Cela a été levé à partir MESA mise en œuvre de la GLU de la bibliothèque.
Si quelqu'un à la recherche pour plus de costumized code et "facile à lire", puis j'ai eu cette
Je ne suis pas d'écrire le code, mais mon programme n'. J'ai fait un petit programme pour en faire un programme que calculer le déterminant et l'inverse de N-matrice.
Je le fais parce que une fois dans le passé, j'ai besoin d'un code qui inverses de la matrice 5x5, mais personne à la terre ont fait cela j'ai donc fait un.
Prendre un coup d'oeil sur le programme ici.
EDIT: La matrice est ligne par ligne (sens
m01
est dans la première ligne de la deuxième colonne). La langue est le C#, mais doit être facile à convertir en C.Si vous avez besoin d'un C++ bibliothèque de matrice avec beaucoup de fonctions, avoir un regard sur Eigen bibliothèque - http://eigen.tuxfamily.org
I 'roulé' la MESA de mise en œuvre (aussi écrit quelques tests unitaires pour s'assurer qu'il fonctionne réellement).
Ici:
J'ai écrit un peu à ce sujet et d'afficher le modèle de positif/négatif des facteurs sur mon blog.
Comme suggéré par @LiraNuna, sur de nombreuses plates-formes à accélération matérielle versions de ces routines sont disponibles, donc je suis heureux d'avoir une sauvegarde de la version " c'est concis et lisibles.
Note: cela peut exécuter 3,5 fois plus lent ou pire que la MESA de mise en œuvre. Vous pouvez changer le modèle de facteurs d'en supprimer quelques ajouts etc... mais on perd en lisibilité et continueront de ne pas être très rapide.
Vous pouvez utiliser le Bibliothèque Scientifique GNU ou regarder le code en elle.
Edit: Vous semblez vouloir le L'Algèbre Linéaire section.
Voici un petit (un seul en-tête) C++ vecteur de mathématiques bibliothèque (orienté vers la programmation 3D). Si vous l'utilisez, gardez à l'esprit que la mise en page de ses matrices en mémoire est inversée, la comparant à ce que OpenGL attend, j'ai eu le plaisir de temps à essayer de le comprendre...
Inspiré par @shoosh de vérifier MESA implémentations, j'ai trouvé que l'inversion de matrice semble tout à fait différente dans la plus récente de la mesa de presse. Je suppose que ce sont de bonnes améliorations. Ici, l'inversion de la matrice du code de Mesa-17.3.9:
Remarque: vous pouvez trouver ce morceau de code dans la mesa de la base de code:
mesa-17.3.9/src/mesa/math/m_matrix.c
.Vous pouvez le rendre plus rapide en fonction de ce blog.
Ce n'est pas une mise en œuvre complète parce que P peut pas être inversible, mais vous pouvez combiner ce code avec MESA mise en œuvre pour obtenir une meilleure performance.