Nous connaissons tous les nombreuses méthodes de calcul pour résoudre le système linéaire standard
Cependant, je suis curieux de savoir s'il existe des méthodes de calcul "standard" pour résoudre un système linéaire plus général (de dimension finie) de la forme
où, disons, est unematrice , est unematrice et est un opérateur linéaire prenant matrices en matrices, ce quin'implique pas la vectorisation des matrices, c'est-à-dire tout convertir en la forme standard .
La raison pour laquelle je demande est que je dois résoudre l'équation suivante pour :
où est la transformée de Radon 2d, son adjoint, et et sonttous les deux destableaux (images). Il est possible de vectoriser cette équation, mais c'est pénible, surtout si on passe en 3D.
Plus généralement, qu'en est-il des tableaux ? Par exemple, résoudre où et sont des tableaux 3D (je devrai également le faire avec la transformation de Radon à un moment donné).
Merci d'avance et n'hésitez pas à m'envoyer vers un autre StackExchange si vous en ressentez le besoin.
linear-algebra
icurays1
la source
la source
Réponses:
Oui, vous avez raison et cela fonctionnera bien lorsque vous passerez à la 3D. La partie la plus simple, vraiment, est le produit intérieur --- il suffit de faire un produit scalaire standard sur l'équivalent, R n dérouléRn ⟨y,x⟩≜Re(yHx)
Une chose à laquelle vous devez faire attention lorsque vous implémentez CG (ou des approches itératives similaires) avec des opérateurs linéaires généraux est d'implémenter correctement l' adjoint de votre opérateur linéaire. Autrement dit, les gens obtiennent souvent correctement, mais commettent une erreur en mettant en œuvre .y=F(x) z=F∗(y)
Je recommande d'implémenter un test simple qui tire parti de l'identité suivante: pour tout et conforme , Donc, ce que vous faites est de générer des valeurs aléatoires de et , de les exécuter à travers vos opérations directes et adjointes, respectivement, et de calculer les deux produits internes ci-dessus. Assurez-vous qu'ils correspondent à une précision raisonnable et répétez plusieurs fois.x y
EDIT: que faites-vous si votre opérateur linéaire est supposé être symétrique? Eh bien, vous devez également vérifier cette symétrie. Utilisez donc le même test, notant simplement que --- appliquez la même opération à et . Bien sûr, l'OP a à la fois un opérateur asymétrique et un opérateur symétrique à gérer ...F=F∗ x y
la source
linop_test.m
routine pour cette raison. Ce package prend également en charge les matrices, les tableaux et les produits cartésiens dans les espaces vectoriels.Je soupçonne que cela se passera très bien lorsque je passerai aux tableaux 3D, bien que je n'aie pas encore vu le produit interne Frobenius défini sur les tableaux 3D (je travaillerai en supposant que je peux à nouveau simplement résumer le produit ponctuel).
Je serais toujours intéressé par des méthodes plus générales si quelqu'un en connaissait!
la source