선형의 연립 방정식의 해를 처음 몇 변수에 대해서만 근사 할 수 있습니까?


15

mxm 크기의 방정식의 선형 시스템을 가지고 있는데, 여기서 m은 큽니다. 그러나 관심있는 변수는 첫 번째 n 변수입니다 (n은 m에 비해 작습니다). 전체 시스템을 풀지 않고도 첫 번째 m 값에 대한 솔루션을 근사 할 수있는 방법이 있습니까? 그렇다면,이 근사가 전체 선형 시스템을 푸는 것보다 빠를까요?


2
강제 함수가 첫 번째 n 변수로 제한되지 않는 한 아닙니다. 그렇다면 Schur 보완을 구성 할 수 있지만 밀도는 높습니다. 원래 운영자가 드문 경우 가치가 없을 수 있습니다.
Jack Poulson

1
행렬의 오른쪽 하단에서 가우스 제거를 사용할 수 있다고 가정합니다. 처음 몇 개의 요소 만 신경 쓰고 중간에 멈 추면 일반 가우스 제거보다 2 배 빠릅니다. 반복 방법과 비교할 방법을 모르겠습니다.
Dan

4
@OscarB : 아니요. 크 래머의 법칙은 부동 소수점 산술의 조잡함입니다. 나는 그것이 심각한 계산에 사용되는 것을 들어 본 적이 없으며 가우시안 제거와 경쟁하지 않는 요인 복잡성피하기 위해 상당한 양의 생각이 필요합니다.
잭 폴슨

1
@Paul : 대부분의 모델 차수 축소는 대형 ODE 또는 DAE 시스템의 맥락에서 사용됩니다. 때때로, 감소 방법론은 PDE의 이산화로부터 발생하는 ODE 또는 DAE 시스템에 의해 동기가 부여된다. 순수한 대수 방정식에 사용 된 모형 축소를 보지 못했습니다. (만약 모델 축소 방법에 대한 논문을 작성하고 있기 때문에 관심이 있으니 참고 자료를 보내 주시기 바랍니다.) 미분 대수 방정식 시스템의 퇴화 사례로서 대수 방정식.
Geoff Oxberry 2012

1
@ JackPoulson-귀하의 의견을 답변으로 요약 하시겠습니까? 나는 그것이 가장 올바른 해결책이라고 생각하며 의견에서 그것을 잃고 싶지 않습니다.
Aron Ahmadia

답변:


13

다른 사람들이 지적했듯이 이것은 직접 솔버로 수행하기가 어렵습니다. 즉, 반복 솔버로는 그렇게 어렵지 않습니다. 이를 위해 대부분의 반복 솔버가 어떤 방식 으로든 오류를 최소화한다는 점에 유의하십시오. 종종이 규범은 행렬 자체에 의해 유발되기도하지만 때로는 l2 벡터 규범이기도합니다. 그러나 반드시 그럴 필요는 없습니다. 오류 (또는 잔류)를 최소화하려는 규범을 선택할 수 있으며, 예를 들어 1로 관심있는 구성 요소의 무게를 측정 할 규범을 선택할 수 있습니다. 1e-12의 다른 모든 것 (예 : (1e-24)N i = 6 x 2 i 및 해당 스칼라 곱. 그런 다음이 규범 및 스칼라 곱과 관련하여 반복 솔버의 모든 단계를 작성하면 다른 벡터보다 관심 벡터 요소에 훨씬 더 많은주의를 기울이는 반복 솔버를 얻게됩니다.||x||2=i=15xi2+i=6Nxi2

물론 모든 구성 요소의 무게가 같은 표준 / 스칼라 제품보다 반복 횟수가 적은지 여부가 문제입니다. 그러나 실제로는 그렇게되어야합니다. 5 개의 첫 벡터 요소에만 관심이 있다고 가정 해 봅시다. 그런 다음 오류를 설명하는 5x5 시스템에 5 번의 반복이 필요하므로 오류를 1e12만큼 줄이려면 최대 5 번의 반복이 필요합니다. 그것은 증거는 아니지만 규범 (1e-12 위)의 가중치가 선형 시스템을 반복적으로 해결하려는 공차보다 작 으면 훨씬 적은 반복 횟수로 도망 가야한다고 확신합니다. .


2
흠, 좋은 지적이다. 나는 단지 몇 가지 자유도를 해결하려는 시도의 효과에 대해 다소 걱정하기 때문에 실제 사례를 보는 데 관심이 있습니다. 잔차가 적더라도 오류의 표준은 여전히 ​​상당히 큽니다 (대부분의 연산자를 효과적으로 무시하기 위해 수행).
Jack Poulson

직관적으로 이것은 매우 작은 시스템의 구성 요소가 L2 (또는 오류가 측정되는 오류를 이해하는 표준) 의미에서 실제로 답변을 지배하는 경우에만 작동하는 것 같습니다. 그렇지 않으면, 나는 Jack의 관심사가 타당하다고 생각하지만, 이것에 대한 수치적인 증거를 보는 것에도 확실히 관심이있을 것입니다.
Aron Ahmadia

잔차가 아닌 오류 를 최소화하는 방법을 사용해야합니다 . MinErr이 좋은 출발점이 될 것 같습니다.
Wolfgang Bangerth

@ WolffBangerth : MINERR에 익숙하지 않습니다 : 이것이 주요 참조입니까?
잭 폴슨

1
정확하지 않기 때문에 충분하지 않습니다. 이 가중치를 사용하여 몇 가지 구성 요소를 정확하게 얻을 수는 없습니다.
매트 Knepley

17

Schur 보완 구성

행렬을 형태로 바꾸고 분할했다고 가정하십시오.

=(11122122),

그런 (22)가 관심의 자유의 당신의도를 포함하고보다 훨씬 작은 (11) , 그 다음 하나는 슈어 보완을 형성 할 수있다2211

에스22: =222111112,

부분적으로 우시적인 LU 인수 분해 또는 명시 적 공식을 통해 는 다음과 같은 의미로 이해 될 수 있습니다.에스22

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

여기서 는 솔루션의 '무관심한'부분을 나타냅니다. 따라서, 단지 제로 슈어 보체의 자유도에있는 우측 제공 S (22) , 우리는에 대해 해결할 필요가 S (22) 의 자유 그 각도에 대응하는 상기 용액의 일부를 얻기 위해.S22S22

비정형 밀집 사례의 계산 복잡성

설정 의 높이 및 N 의 높이 22 다음 계산을위한 표준 방법을 S (22)는 먼저 계수이고 L 11 U 11 : = 11 대충 (의 지금은 요동을 무시하도록) 2 / 3 ( N - N ) 3 형태로 다음 작업,NAnA22S22L11U11:=A112/3(Nn)3

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

두 개의 삼각형을 사용하면 각각 일이 필요한 다음 2 n 2 ( N - n ) 일 에서 A 22 로 업데이트를 수행합니다 .n(Nn)2A222n2(Nn)

이에 따라, 전체 작업은 대충 . 경우 N 매우 작고, N - N N 비용 대략적으로 알 수 있으므로, 2 / 3 N (3) 전체의 비용 인수이다.2/3(Nn)3+2n(Nn)2+2n2(Nn)nNnN2/3N3

이점은 동일한 방정식 시스템으로 풀어야 할 매우 많은 수의 우변이있는 경우 는 잠재적으로 많은 횟수를 재사용 할 수 있으며, 여기서 각 해는 2 n 2 작업 만 필요 합니다. S 22 가 인수 분해 된 경우 ( 2 N 2 작업 대신 ) .S222n22N2S22

(일반적인) 희소 사례의 계산 복잡성

희소 시스템이 특정 유형의 유한 차이 또는 유한 요소 근사치에서 발생하면 희소 직접 솔버는 거의 일부 구조를 이용할 수 있습니다. 2D 시스템은 해결 될 수 작업 및 O ( N 로그 N ) 3D 시스템은 해결 될 수 있지만, 저장 O ( N 2 ) 작업 및 O ( N 4 / 3 ) 스토리지. 그런 다음 스토리지 요구 사항과 동일한 작업량으로 팩토링 된 시스템을 해결할 수 있습니다.O(N3/2)O(NlogN)O(N2)O(N4/3)

계산 복잡성을 제기하는 요점은 당신은 슈어 보완 가능성, 문제점을 해결 복잡성이 (가) 슈어 보완이 될 것입니다 고려 주어진 밀도가 될 것입니다 그 이후로, 2 차원 시스템이O(N2)=O(N)은 전체를 해결 대 대수 요소를 누락 체계! 3D에서는 필요O(N)대신에 작업O(N 4 / 3 ).nNO(n2)=O(N)O(N)O(N4/3)

따라서 n = √ 인 경우를 명심해야합니다. , 여러 차원에서 작업하고 해결해야 할 오른쪽이 많은 경우에만 상당한 비용 절감 효과가 있습니다.n=N


1
이것은 schur 보완 방법과 계산이 효율적일 때의 훌륭한 요약입니다!
Paul

6

모델 축소 접근법

Paul이 물었으므로이 문제에 대해 투영 기반 모델 축소 방법을 사용하면 어떻게되는지 이야기하겠습니다. R ( P ) 로 표시된 P 의 범위가 선형 시스템 A x = b에 대한 솔루션을 포함하고 치수 k 를 갖는 프로젝터 생각해 봅시다 . 여기서 k 는 알려지지 않은 수입니다. 선형 시스템에서 해결하고 싶습니다.PPR(P)Ax=bkk

의 특이 값 분해 는 다음과 같은 분할 된 행렬을 생성합니다.P

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

The matrices obscured by stars matter for other things (like estimating error, etc.), but for now, we'll avoid dealing with extraneous details. It follows that

P=VWT

is a full rank decomposition of P.

Essentially, you'll solve the system

PAx=Pb

VWWTV=IPAx=PbWTy=Vx^x

WTAx^=WTb.

Solve for x^, premultiply it by V, and you have y, your approximation for x.

Why the Schur complement approach is probably better

For starters, you have to pick P somehow. If the solution to Ax=b is in R(P), then y=x, and y isn't an approximation. Otherwise, yx, and you introduce some approximation error. This approach doesn't really leverage at all the structure you mentioned wanting to exploit. If we pick P such that its range is the standard unit basis in the coordinates of x you want to calculate, the corresponding coordinates of y will have errors in them. It's not clear how you'd want to pick P. You could use an SVD of A, for instance, and select P to be the product of the first k left singular vectors of A and the adjoint of the first k right singular vectors of A, assuming that singular vectors are arranged in decreasing order of singular value. This choice of projector would be equivalent to performing proper orthogonal decomposition on A, and it would minimize the L2-error in the approximate solution.

In addition to introducing approximation errors, this approach also introduces three extra matrix multiplies on top of the linear solve of the smaller system and the work needed to calculate V, and W. Unless you're solving the same linear system a lot, only changing the right hand side, and P is still a "good" projection matrix for all of those systems, those extra costs will probably make solving the reduced system more expensive than solving your original system.

The drawbacks are much like JackPoulson's approach, except that you're not quite leveraging the structure that you mentioned.


4

The long answer is...sort of.

You can re-arrange your system of equations such that the farthest right k columns are the variables which you wish to solve for.

Step 1: Perform Gaussian Elimination so that the matrix is upper triangular. Step 2: solve by back substitution for only the first (last) k variables which you are interested in

This will save you the computational complexity of having to solve for the last nk variables via back-substitution, which could be worth it if n is as large as you say. Keep in mind that a fair amount of work will still have to be done for step 1.

Also, keep in mind that restricting the order in which you are going to perform back-substituion may restrict the form of the matrix (it takes away the ability to exchange columns) which could possibly lead to an ill conditioned system, but I am not sure about that - just something to keep in mind.


Gaussian elimination requires O(n3) work, but backward substitution only requires O(n2). Thus, as n grows larger, the percentage of time spent in the triangle solve becomes vanishingly small.
Jack Poulson

which is why the answer is "sort of" instead of "yes" =)
drjrm3

It makes sense that it can be done this way... However, the bulk of the computation in a Gaussian Elimination is in the forward elimination phase, yielding an O(n^3) complexity despite the truncated backward substitution phase. I was hoping there was a faster method...
Paul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.