Existe-t-il une méthode pour résoudre systèmes linéaires de la forme où est une matrice SPD fixe et sont des matrices diagonales positives?k ( D i + A ) x i = b i A D i
Par exemple, si chaque est scalaire, il suffit de calculer la SVD de . Cependant, cela tombe en panne pour le général raison du manque de commutativité. A D
Mise à jour : jusqu'à présent, les réponses sont «non». Quelqu'un at-il une intuition intéressante quant à la raison? Une non réponse signifie qu'il n'y a pas de moyen non trivial de compresser les informations entre deux opérateurs non commutants. Ce n'est pas très surprenant, mais ce serait formidable de mieux le comprendre.
linear-algebra
algorithms
performance
complexity
Geoffrey Irving
la source
la source
Réponses:
La réponse positive la plus proche que j'ai pu trouver à votre question concerne les perturbations diagonales éparses (voir ci-dessous).
Cela dit, je ne connais aucun algorithme pour le cas général, bien qu'il y ait une généralisation de la technique que vous avez mentionnée pour les décalages scalaires des matrices SPD vers toutes les matrices carrées:
Étant donné n'importe quelle matrice carrée , il existe une décomposition de Schur A = U T U H , où U est unitaire et T est triangulaire supérieur, et A + σ I = U ( T + σ I ) U H fournit une décomposition de Schur de A + σ I . Ainsi, votre idée de pré-calcul s'étend à toutes les matrices carrées grâce à l'algorithme:A A=UTUH U T A+σI=U(T+σI)UH A+σI
Ce raisonnement se réduit à l'approche que vous avez mentionnée lorsque est SPD puisque la décomposition de Schur se réduit à un EVD pour les matrices normales, et l'EVD coïncide avec le SVD pour les matrices hermitiennes positives définies.A
Réponse à la mise à jour: Tant que je n'ai pas de preuve, ce que je n'ai pas, je refuse de prétendre que la réponse est "non". Cependant, je peux donner un aperçu de la raison pour laquelle c'est difficile, ainsi qu'un autre sous-cas où la réponse est oui.
La difficulté essentielle est que, même si la mise à jour est diagonale, elle est toujours en général, donc le principal outil pour mettre à jour un inverse, la formule Sherman-Morrison-Woodbury , ne semble pas aider. Même si le cas de décalage scalaire est également de rang complet, c'est un cas extrêmement spécial car il commute avec chaque matrice, comme vous l'avez mentionné.
Cela dit, si chaque était rare, c'est-à-dire qu'ils avaient chacun O ( 1 ) nonzeros, alors la formule de Sherman-Morrison-Woodbury donne une résolution O ( n 2 ) avec chaque paire { D , b } . Par exemple, avec un seul non nul à la j ème entrée diagonale, de sorte que D = δ e j e H j :D O(1) O(n2) {D,b} j D=δejeHj
où est le j ème vecteur de base standard .ej j
Autre mise à jour: je dois mentionner que j'ai essayé le préconditionneur que @GeoffOxberry a suggéré sur quelques matrices SPD 1000 × 1000 aléatoires utilisant PCG et, ce qui n'est peut-être pas surprenant, il semble réduire considérablement le nombre d'itérations lorsque | | D | | 2 / | | A | | 2 est petit, mais pas lorsqu'il est O ( 1 ) ou plus.A−1 1000×1000 ||D||2/||A||2 O(1)
la source
Si est dominant en diagonale pour chaque i , alors les travaux récents de Koutis, Miller et Peng (voir le site Web de Koutis pour des travaux sur les matrices symétriques à dominante diagonale) pourraient être utilisés pour résoudre chaque système en O ( n 2 log ( n ) ) temps (en fait O ( m log ( n ) ) temps, où m est le nombre maximal d'entrées non nulles dans ( D i + A ) sur l'ensemble(Di+A) i O(n2log(n)) O(mlog(n)) m (Di+A) , afin que vous puissiez également profiter de la rareté). Ensuite, le temps de fonctionnement total serait O ( n 2 log ( n ) k ) , ce qui est meilleur que l'approche O ( n 3 k ) de résolution naïve de chaque système en utilisant une algèbre linéaire dense, mais légèrement pire que le temps de fonctionnement quadratique que vous demande.i O(n2log(n)k) O(n3k)
Une faible densité dans pour tout ce que je pourrais être exploitée par des solveurs clairsemés pour produire un algorithme O ( n 2 k ) , mais je suppose que si vous aviez une rareté importante, vous l'auriez mentionné.(Di+A) i O(n2k)
Vous pouvez également utiliser comme préconditionneur pour résoudre chaque système à l'aide de méthodes itératives et voir comment cela fonctionne.A−1
Réponse à la mise à jour : @JackPaulson fait un grand point du point de vue de l'algèbre linéaire numérique et des algorithmes. Je me concentrerai plutôt sur les arguments de complexité de calcul.
La complexité de calcul de la solution des systèmes linéaires et la complexité de calcul de la multiplication matricielle sont essentiellement égales. (Voir Théorie de la complexité algébrique .) Si vous pouviez trouver un algorithme qui pourrait compresser les informations entre deux opérateurs non commutants (en ignorant la partie semi-définie positive) et résoudre directement la collection de systèmes que vous proposez en temps quadratique en , alors c'est vous pourriez probablement utiliser un tel algorithme pour faire des inférences sur une multiplication de matrice plus rapide. Il est difficile de voir comment une structure semi-définie positive pourrait être utilisée dans une méthode dense et directe pour les systèmes linéaires afin de réduire sa complexité de calcul.n
Comme @JackPaulson, je ne veux pas dire que la réponse est "non" sans preuve, mais étant donné les connexions ci-dessus, le problème est très difficile et présente un intérêt pour la recherche actuelle. Le mieux que vous puissiez faire d'un point de vue asymptotique sans tirer parti d'une structure spéciale est une amélioration de l'algorithme de Coppersmith et Winograd, produisant un algorithme , où α ≈ 2,375 . Cet algorithme serait difficile à coder et serait probablement lent pour les petites matrices, car le facteur constant précédant l'estimation asymptotique est probablement énorme par rapport à l'élimination gaussienne.O(nαk) α≈2.375
la source
Une expansion de Taylor de premier ordre peut être utilisée pour améliorer la convergence par rapport au retard simple. Supposons que nous ayons un préconditionneur (ou facteurs pour une directe résolvons) disponibles pour , et nous voulons l' utiliser pour préconditionnement A . Nous pouvons calculerA+D A
où l'expansion de Taylor a été utilisée pour écrire la dernière ligne. L' application de ce préconditionnement nécessite deux avec résoud .A+D
Cela fonctionne assez bien lorsque le préconditionneur est éloigné de 0 d'une quantité similaire ou supérieure à celle de l'opérateur avec lequel nous essayons de résoudre (par exemple ). Si le décalage dans le préconditionneur est plus petit ( D ≲ min σ ( A ) ), l'opérateur préconditionné devient indéfini.D≳0 D≲minσ(A)
Si le décalage dans le préconditionneur est beaucoup plus important que dans l'opérateur, cette méthode tend à produire un nombre de conditions environ la moitié de celui du préconditionnement par l'opérateur retardé (dans les tests aléatoires que j'ai effectués, il pourrait être meilleur ou pire pour une classe spécifique de matrices). Ce facteur de 2 dans le nombre de conditions donne un facteur de dans le nombre d'itérations. Si le coût d'itération est dominé par les résolutions avecA+D, alors ce n'est pas un facteur suffisant pour justifier l'expansion de Taylor de premier ordre. Si l'application matricielle est proportionnellement coûteuse (par exemple, vous ne disposez que d'un préconditionneur peu coûteux à appliquer pourA+D), cette méthode de premier ordre peut avoir du sens.2–√ A+D A+D
la source