La solution d'un système d'équations linéaire peut-elle être approchée uniquement pour les premières variables?

15

J'ai un système linéaire d'équations de taille mxm, où m est grand. Cependant, les variables qui m'intéressent ne sont que les n premières variables (n est petit par rapport à m). Existe-t-il un moyen d'approximer la solution pour les premières valeurs m sans avoir à résoudre l'ensemble du système? Dans l'affirmative, cette approximation serait-elle plus rapide que la résolution du système linéaire complet?

Paul
la source
2
Sauf si votre fonction de forçage est également limitée aux n premières variables. Si c'est le cas, vous pouvez former le complément Schur, bien qu'il soit probablement dense. Si votre opérateur d'origine est rare, cela n'en vaut peut-être pas la peine.
Jack Poulson
1
Je suppose que vous pourriez utiliser l'élimination gaussienne à partir du coin inférieur droit de la matrice. Ce serait ~ 2x plus rapide que l'élimination gaussienne régulière si vous ne vous souciez que des premiers éléments et arrêtez-vous à mi-chemin. Je ne sais pas comment cela se comparerait aux méthodes itératives.
Dan
4
@OscarB: S'il vous plaît non. La règle de Cramer est une atrocité en arithmétique à virgule flottante. Je n'ai jamais entendu parler de son utilisation pour des calculs sérieux, et il faut beaucoup de réflexion pour éviter la complexité factorielle , où il n'est toujours pas compétitif avec l'élimination gaussienne.
Jack Poulson
1
@Paul: La plupart des réductions d'ordre de modèle sont utilisées dans le contexte de grands systèmes ODE ou DAE. Parfois, les méthodologies de réduction sont motivées par les systèmes ODE ou DAE qui résultent de la discrétisation des PDE. Je n'ai pas vu de réduction de modèle utilisée sur des équations purement algébriques. (Si vous en avez, veuillez m'envoyer des références, car je fais ma thèse sur les méthodes de réduction de modèles et serais très intéressé de le voir.) Si vous le souhaitez, je pourrais esquisser à quoi pourrait ressembler la réduction de modèles si nous traitons équations algébriques comme cas dégénéré d'un système d'équations différentielles-algébriques.
Geoff Oxberry
1
@JackPoulson - cela vous dérange de résumer votre commentaire en tant que réponse? Je pense que c'est la solution la plus correcte et je ne veux pas qu'elle soit perdue dans les commentaires.
Aron Ahmadia

Réponses:

13

Comme d'autres l'ont souligné, cela est difficile à faire avec un solveur direct. Cela dit, ce n'est pas si difficile à faire avec des solveurs itératifs. À cette fin, notez que la plupart des solveurs itératifs minimisent d'une manière ou d'une autre l'erreur par rapport à une norme. Souvent, cette norme est soit induite par la matrice elle-même, mais parfois c'est aussi juste la norme du vecteur l2. Mais cela ne doit pas être le cas: vous pouvez choisir la norme dans laquelle vous souhaitez minimiser l'erreur (ou le résiduel), et vous pouvez, par exemple, choisir une norme dans laquelle vous pesez les composants qui vous intéressent avec 1 et tous les autres avec 1e-12, par exemple quelque chose comme (1e-24)N i = 6 x 2 i et produit scalaire correspondant. Ensuite, écrivez toutes les étapes du solveur itératif par rapport à cette norme et produit scalaire, et vous obtenez un solveur itératif qui accorde beaucoup plus d'attention aux éléments vectoriels qui vous intéressent qu'aux autres.||x||2=i=15xi2+i=6Nxi2

La question est bien sûr de savoir si vous avez besoin de moins d'itérations qu'avec le produit standard / scalaire qui pèse tous les composants de manière égale. Mais cela devrait en effet être le cas: disons que vous ne vous souciez que des cinq premiers éléments vectoriels. Ensuite, vous devez avoir au plus cinq itérations pour réduire l'erreur d'un facteur 1e12, car cinq itérations sont nécessaires pour le système 5x5 qui les décrit. Ce n'est pas une preuve, mais je suis assez certain que vous devriez en effet vous en tirer avec un nombre d'itérations bien plus petit si le poids dans la norme (1e-12 ci-dessus) est plus petit que la tolérance avec laquelle vous voulez résoudre le système linéaire de manière itérative .

Wolfgang Bangerth
la source
2
Hmm, bon point. Je serais intéressé à voir un exemple réel, car je m'inquiète quelque peu des effets de ne tenter de résoudre que quelques degrés de liberté; même si le résidu peut être petit, la norme de l'erreur est peut-être encore assez grande (faire pour ignorer efficacement la plupart de l'opérateur).
Jack Poulson
Intuitivement, cela ne semble fonctionner que si les composants du très petit système dominent vraiment la réponse dans un sens L2 (ou la norme dans laquelle vous comprenez que votre erreur doit être mesurée). Sinon, je pense que la préoccupation de Jack est valide, mais je serais certainement intéressé à voir une preuve numérique de cela ...
Aron Ahmadia
Il faudrait s'assurer de prendre une méthode qui minimise l' erreur , pas le résiduel. Je pense que MinErr pourrait être un bon point de départ.
Wolfgang Bangerth, le
@WolfgangBangerth: Je ne connais pas MINERR: est- ce la référence principale?
Jack Poulson
1
Même cela ne suffit pas, car vous serez inexact. Vous ne pouvez pas obtenir avec précision quelques composants en utilisant cette pondération.
Matt Knepley
17

Former le complément Schur

Supposons que vous ayez permuté et partitionné votre matrice sous la forme

A=(A11A12A21A22),

de telle sorte que contient vos degrés de liberté d'intérêt et est beaucoup plus petit que A 11 , alors on peut former le complément SchurA22A11

S22:=A22A21A111A12,

soit par une factorisation LU partielle droite, soit par la formule explicite, puis peut être compris dans le sens suivant:S22

S22x=y(A11A12A21A22)(x)=(0y),

représente la partie «sans intérêt» de la solution. Ainsi, à condition qu'un côté droit ne soit pas nul dans les degrés de liberté du complément Schur S 22 , il suffit de résoudre contre S 22 pour obtenir la portion de la solution correspondant à ces degrés de liberté.S22S22

Complexité informatique dans un cas dense non structuré

Réglage de à la hauteur de A et n à la hauteur de A 22 , la méthode de référence pour le calcul de S 22 est d'abord facteur L 11 U 11 : = A 11 (Ignorons pivotant pour le moment) à peu près deux / trois ( N - n ) 3 travaux, puis formerNAnA22S22L11U11:=A112/3(Nn)3

S22:=A22(A21U111)(L111A12)=A22A21A111A12

en utilisant deux résolutions de triangle nécessitant travaux chacune, puis effectuer la mise à jour vers A 22 en 2 n 2 ( N - n ) travaux.n(Nn)2A222n2(Nn)

Ainsi, le travail total est d' environ . Quand n est très faible, N - n N , de sorte que le coût peut être considérée comme à peu près 2 / 3 N 3 , qui est le coût d'une factorisation complète.2/3(Nn)3+2n(Nn)2+2n2(Nn)nNnN2/3N3

L'avantage est que, s'il y a un très grand nombre de côtés droits à résoudre avec le même système d'équations, alors pourrait potentiellement être réutilisé un grand nombre de fois, où chaque résolution ne nécessiterait que 2 n 2 de travail (plutôt que 2 N 2 ) si S 22 est pris en compte.S222n22N2S22

Complexité informatique dans le cas rare (typique)

Si votre système clairsemé est né d'un certain type d'approximation par différences finies ou éléments finis, les solveurs directs clairsemés seront presque certainement en mesure d'exploiter une partie de la structure; 2d systèmes peuvent être résolus avec travail et O ( N log N ) de stockage, tandis que les systèmes 3D peuvent être résolus avec O ( N 2 ) de travail et O ( N 4 / 3 ) de stockage. Les systèmes factorisés peuvent alors être résolus avec la même quantité de travail que les besoins de stockage.O(N3/2)O(NlogN)O(N2)O(N4/3)

Le point de faire apparaître les complexités de calcul est que, si et vous avez un système 2d, alors comme le complément de Schur sera probablement dense, la complexité de résolution étant donné le complément de Schur factorisé seraO(n2)=O(N), qui ne manque qu'un facteur logarithmique par rapport à la résolution complète système! En 3D, il fautO(N)travaillieu deO(N 4 / 3 ).nNO(n2)=O(N)O(N)O(N4/3)

Il est donc important de garder à l’esprit que, dans votre cas où , il n'y aura des économies importantes que si vous travaillez dans plusieurs dimensions et que vous avez de nombreux problèmes à résoudre.n=N

Jack Poulson
la source
1
Ceci est un excellent résumé de la méthode du complément schur et quand il est efficace sur le plan informatique de l'utiliser!
Paul
6

L'approche de réduction du modèle

Depuis que Paul a demandé, je vais parler de ce qui se passe si vous utilisez des méthodes de réduction de modèle basées sur la projection sur ce problème. Supposons que vous puissiez trouver un projecteur tel que la plage de P , notée R ( P ) , contienne la solution de votre système linéaire A x = b , et ait la dimension k , où k est le nombre d'inconnues pour lesquelles vous souhaitent résoudre dans un système linéaire.PPR(P)Ax=bkk

Une décomposition en valeurs singulières de donnera la matrice partitionnée suivante:P

P=[V][diag(1k)000][WT].

Les matrices obscurcies par les étoiles comptent pour d'autres choses (comme l'erreur d'estimation, etc.), mais pour l'instant, nous éviterons de traiter des détails étrangers. Il s'ensuit que

P=VWT

est une décomposition de plein rang de .P

Essentiellement, vous allez résoudre le système

PUNEX=Pb

d'une manière intelligente, parce que et W ont aussi la propriété que W T V = I . En multipliant les deux côtés de P A x = P b par W T et en laissant y = V x est une approximation de x rendementsVWWTV=jePUNEX=PbWTy=VX^X

WTUNEX^=WTb.

Résoudre pour x , Prémultiplier par V , et vous avez y , votre approximation pour x .X^VyX

Pourquoi l'approche du complément Schur est probablement meilleure

Pour commencer, vous devez choisir manière ou d'une autre. Si la solution de A x = b est dans R ( P ) , alors y = x , et y n'est pas une approximation. Sinon, yx , et vous introduisez une erreur d'approximation. Cette approche ne tire pas vraiment parti de la structure que vous avez mentionnée vouloir exploiter. Si nous choisissons P tel que sa plage soit la base d'unité standard dans les coordonnées de x que vous souhaitez calculer, les coordonnées correspondantes de y auront des erreurs. Vous ne savez pas comment choisirPUNEX=bR(P)y=XyyXPXy . Vous pouvez utiliser un SVD de A , par exemple, et sélectionner P pour être le produit des k premiersvecteurs singuliers gauches de A et l'adjoint des k premiersvecteurs singuliers droits de A , en supposant que les vecteurs singuliers sont disposés par ordre décroissant de valeur singulière. Ce choix de projecteur équivaudrait à effectuer une décomposition orthogonale appropriée sur A , et il minimiserait l'erreurL 2 dans la solution approximative.PUNEPkUNEkUNEUNE2

VWP

Les inconvénients ressemblent beaucoup à l'approche de JackPoulson, sauf que vous ne tirez pas tout à fait parti de la structure que vous avez mentionnée.

Geoff Oxberry
la source
4

La réponse longue est ... en quelque sorte.

k

k

n-kn

De plus, gardez à l'esprit que restreindre l'ordre dans lequel vous allez effectuer une rétro-substitution peut restreindre la forme de la matrice (cela enlève la possibilité d'échanger des colonnes), ce qui pourrait éventuellement conduire à un système mal conditionné, mais je ne suis pas sûr de cela - juste quelque chose à garder à l'esprit.

drjrm3
la source
O(n3)O(n2)n
c'est pourquoi la réponse est "en quelque sorte" au lieu de "oui" =)
drjrm3
Il est logique que cela puisse être fait de cette façon ... Cependant, la majeure partie du calcul dans une élimination gaussienne est dans la phase d'élimination avant, ce qui donne une complexité O (n ^ 3) malgré la phase de substitution rétrograde tronquée. J'espérais qu'il y aurait une méthode plus rapide ...
Paul