2009-05-31 2 views
0

난 I 각 재귀 라운드 해결있어 두 방정식 가지고어떤 것이 더 빠르고/더 안정합니까? 행렬을 뒤집거나 여러 개의 오른쪽이있는 3 개의 선형 방정식 시스템을 해결합니까?

X = A - 반전 (B)을 * Y * INV (B) X = X + A '*의 반전 (B) * A,

I가 이러한 방식으로 문제 해결 :

C의 =의 반전 (B) Y < => BC = Y를, C. D = C INV (B) < => DB = C < = 해결 > B'D '= C', D'

E = inv (B) * A < => BE = A, E를 해결하십시오.

모든 행렬은 시간이 지남에 따라 변경되므로 모든 재귀를 다시 수행해야합니다. N은 대개 1-10 정도이며, 아마도 그 이상이 될 수도 있습니다. B는 양의 확률이므로 콜레 스키를 factorisation에 사용할 수 있고 여러 오른손 수식의 방정식을 풀 수 있습니다.

B를 반전 한 다음이 행렬 곱셈을 수행하는 것보다 훨씬 느리거나 빠릅니까? 하나의 반전은 3 개의 선형 방정식 시스템 (다른 방정식도 있음)과 일부 전치를 해결하는 것에 비해 대폭적인 것입니다. 적어도 반전보다 수치 적으로 안정적이라고 생각합니까?

감사합니다.

+0

알려진 내용과 알려지지 않은 내용은 무엇입니까? 또한, 두 번째 방정식에서 Y 의존성은 어디에 있습니까? 지금은 A '* inv (B) * A =='라고 말합니다. X, Y, A는 벡터이고 B는 행렬입니까? – ralphtheninja

+0

죄송합니다. 두 번째 방정식에 오류가 있습니다. 물론 이어야합니다. X = Y + A '* inv (B) * A 다른 모든 것은 알려져 있지만 X와 물론 inv (B) (B는 알려져 있음)입니다. 그리고 두 번째 방정식의 X, Y 및 A는 처음과 같지 않습니다 ... X, A, Y 및 B는 두 방정식에서 모두 p * p 행렬입니다. –

+0

좋아요, 예를 들어 BC = Y를 풀면 Bc (i) = y (i), i = 1..n을 풀면 여러 방정식의 시스템으로 나뉩니다. – ralphtheninja

답변

1

우선, 모든 행렬이 nxn 차라고 가정 해 봅시다. 콜레 스키 인수 분해는 O (n^3/6) 연산 (n의 큰 값에 대해)에서 수행 될 수 있습니다. B * c (i) = y (i) 또는 L * L '* c (i) = y (i) (콜레 스키)는 2 * O (n^2/2)이거나 O (n^2/2) 2)를 풀지 만 BC = Y를 풀면이 방정식 중 n 개를 풀어서 (Y는 nxn이기 때문에) 전체적으로 O (n^3)가됩니다.

D '를 푸는 것은 분명히 이와 유사하므로 다른 O (n^3)와 유사합니다.

D에 D '를 조 변경하면 O (n^2)가됩니다. 계산은 없지만 데이터의 스와핑 (당연히 같은 대각 요소는 제외)입니다. E는 N이고 * O (N^3)

A '하도록 제 화학식 BE에서 = A가 E 해결

는 뒤로 촐레 스키 인수 분해를 한번 더 치환이다^2 * (N MULT 및 N-1 (2^n^3 - n^2)

이 합은 다음과 같이 요약됩니다. O (n^3/6) + 3 * O (n^3) + O O (2 * n^3 - n^2) ~ O (5 * n^3) ~ O (5 * n^3) (큰 n 값의 경우)

행렬의 덧셈/뺄셈과 같지만, B를 반전하기로 결정하면 같을 것이기 때문에 이것은 관련이 없습니다. 나는 같은 이유로 A에서 A로 건너 뛰었습니다.

그래, 매트릭스를 뒤집는 것이 얼마나 비쌉니까? 우리는 행렬 방정식을 풀기를 원합니다 :

B * inv (B) = I 이는 B * x (i) = e (i)를 i = 1..n으로 해결하는 것과 같습니다. 여기서 e i)는 I의 기본 단위 벡터입니다. 일반적으로 가우스 제거를 사용하여 시스템을 O (n^3/3) 연산을 수행하는 삼각형 형식으로 변환하여 수행됩니다. 삼각 측량이 이루어지면이를 해결하기 위해 O (n^2/2) 연산이 필요합니다 (역방향 대체). 하지만이 작업은 n 번 수행해야합니다. 그러면 총 O (n^4/3) + O (n^3/2) 작업을 수행 할 수 있으므로 이미 끝났다는 것을 알 수 있습니다.

그러나, B의 촐레 스키 인수 분해를 아는 경우 INV (B)를 계산하는 단계 (N^3) (L의 *의 L '* INV (B)를 해결하기 = I는 A = BE 해결 같기 때문에)

O이고

그러면 우리는 다음과 같은 결과를 얻습니다 : O (n^3/6) (B의 콜레 스키) + O (n^3) (콜레스키로 inv (B) 계산) + 4 * O 4 개의 행렬 곱셈) ~ O (9 * n^3)가 조금 더 좋지만 여전히 나 빠졌다.

그래서 나는 현재의 접근 방식을 유지하는 것이 좋습니다. 그러나 이것은 n의 큰 값을위한 것임을 명심해야합니다. n이 100 이상이 아니라면 어쨌든별로 중요하지 않다고 생각합니다.

+0

대단히 감사합니다! –

관련 문제