解く


22

行列とます。はスパースで、で非常に大きい(数百万程度)は高さの行列で、はかなり小さく()、各列はように、残りがである単一のエントリのみがあります。は巨大なので、反転するのは本当に、などのクリロフ部分空間法を使用して、などの線形システムを繰り返し解くことができますが、AGAn×nnGn×mm1<m<100010GTG=IAAx=bBiCGStab(l)A1 explicitly.

I want to solve a system of the form: (GTA1G)x=b, where x and b are m length vectors. One way to do it is to use an iterative algorithm within an iterative algorithm to solve for A1 for each iteration of the outer iterative algorithm. This would be extremely computationally expensive, however. I was wondering if there is a computationally easier way to go about solving this problem.


I just added to my answer a remark on exploiting the 0-1 structure.
Arnold Neumaier

回答:


19

Introduce the vector y:=A1Gx and solve the large coupled system Ay+Gx=0, GTy=b for (y,x) simultaneously, using an iterative method. If A is symmetric (as seems likely though you don't state it explicitly) then the system is symmetric (but indefinite, though quasidefinite if A is positive definite), which might help you to choose an appropriate method. (relevant keywords: KKT matrix, quasidefinite matrix).

Edit: As A is complex symmetric, so is the augmented matrix, but there is no quasidefiniteness. You can however use the Ax routine to compute Ax=Ax¯¯; therefore you could adapt a method such as QMR ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf (designed for real systems, but you can easily rewrite it for complex systems, using the adjoint in place of the transpose) to solve your problem.

Edit2: Actually, the (0,1)-structure of G means that you can eliminate x amd the components of GTy symbolically, thus ending up with a smaller system to solve. This means messing with the structure of A, and pays only when A is given explicitly in sparse format rather than as a linear operator.


Thank you! A is complex symmetric. Is there reason to expect the condition of the augmented matrix to be worse than that of the original matrix A? If m is small, the augmented matrix is only marginally larger in size than A, so I would suspect that solving this augmented system iteratively should not be much tougher than solving a system with A?
Costis

The condition number of the two systems is generally quite unrelated; it depends very much on what G is. - I added to my answer information on how to exploit complex symmetry.
Arnold Neumaier

Hi guys! Thanks for all the replies; this place is great! An extension to the original question: Assume now that I have (GTAHBA1G)x=b, where G and A have the same meaning as in the original question but B is a rank deficient nxn matrix (same size as A) and the whole GTAHBA1G is full rank. How would you go about solving the new system, since now the inverse of B does not exist so you cannot have AB1AH. I don't think it would work simply with the pseudoinverse of B either.
Costis

1
Introduce y:=A1Gx and z:=AHBy, and proceed in analogy to the case worked out. (POssibly you also need to factor B into full rank matrices and introduce an additional intermediate vector.)
Arnold Neumaier

Hi Arnold. Thanks, this indeed does work! I tested it with some very small test examples, and it works great. However, my iterative solver is having huge issues inverting the augmented matrix. While it takes only about 80 iterations (a few seconds) to solve a system of the form Ax=b with the original A matrix, the system with the augmented matrix (which is 2n+m x 2n+m or 2n-m x 2n-m using @wolfgang-bangerth 's approach) takes over tens of thousands of iterations (several hours) to solve for one RHS. Are there any strategies for accelerating the convergence? perhaps a preconditioner?
Costis

7

Following Arnold's reply, there is something you can do to simplify the problem. Specifically, rewrite the system as Ay+Gx=0,GTy=b. Then note that from the statement that G is tall and narrow and each row has only one 1 and zeros otherwise, then the statement GTy=b means that a subset of the elements of y have a fixed value, namely the elements of b.

Let us say that for simplicity that G has m columns and n rows and that exactly the first m rows have ones in them and that be reordering the elements of x I can make it so that G has the m×m identity matrix at the top and a nm×m zero matrix at the bottom. Then I can partition y=(yc,yf) into m "constrained" and nm "free" elements so that yc=b. I can also partition A so that A=(AccAcfAfcAff). From the equation Ay+Gx=0 I then get the following:

Accyc+Acfyf+x=0,Afcyc+Affyf=0
and using what we know about yc we have from the second of these equations
Affyf=Afcb
and consequently
x=AccbAcfAff1Afcb.
In other words, the only matrix you have to invert is the subset of A whose rows and columns are not mentioned in G (the null space of G). This you can easily do: (i) compute z=Afcb; (ii) use whatever solver you have to solve Affh=z; (iii) compute x=AccbAcfh.

In other words, given the structure of G, solving the linear system you have is really not more difficult than solving a single linear system with A.


0

But we know G, GT and A, so

GTA1Gx=b

GGTA1Gx=Gb

Since GTG=I, then GT=G1, so GGT=I:

A1Gx=Gb

AA1Gx=AGb

Gx=AGb

GTGx=GTAGb

x=GTAGb

Unless I've missed something, you don't need any iteration, or any solver to calculate x given G, A and b.


3
GT being a left inverse of G does not imply that it is also a right inverse. Consider G=e1, where GT=e1T is a left inverse, but GGT=e1e1TI.
Jack Poulson

1
GCnCm, hence GTG=Im×m, but GGTIn×n. Rather it's a projector on a subspace.
Deathbreath
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.