빠른 inverse3 × 3 에 관한 첫 번째 질문에 대해 생각하려고합니다 . 치다
A =⎡⎣⎢ㅏ비씨디이자형에프지h나는⎤⎦⎥
행렬은 작고 매우 일반적이기 때문에 (알려진 구조, 0, 요소의 상대적 스케일을 특징으로하지 않음) 임의 스케일 ( 없이)에 대한 알고리즘을 제공하는 것은 불가능하다고 생각 합니다. 9 개의 요소 각각에 2 개의 융합 된 플롭이 필요하고 의 항목 에 사전 정보가없는 경우 모든 제품은 고유하므로 18 개의 융합 된 플롭보다 빠릅니다 .
여기서, 는 기본적으로 "임의 척도"와 반대입니다 (반대가 존재하는 경우).1 / 데트 ( A )ㅏa , … , i
ㅏ− 1det ( A ) = 조정 ( A ) =⎡⎣⎢e i - fhb i - c hc e - b f디나는 − f지a i - c gF− c d지e - dhH - B ga e - b d⎤⎦⎥
조정 ( A )
그러나 계산에 일부 계산을 재사용 할 수 있습니다 . 첫 번째 열 위로 확장하면 (5 가지 추가 선택 항목이 있습니다)
사항, (* )은 평가 중에 이미 계산되었습니다 . 따라서 결정자의 역수는 4 개의 추가 융합 플롭으로 계산 될 수 있습니다 ( 역수가 1 플롭으로 간주되는 경우).데트 ( A )
데트 ( A )= a ( e i - fh ) + b ( f지− di ) + c ( 일시간 - ge )= a( e i - fh )※− b( d나는 − f지)※− c( ge - dh )※
조정 ( A )1 / 데트 ( A )
이제 의 각 9 개 요소는 이미 결정된 역수를 구하여 크기를 조정하고 9 개의 융합 된 플롭을 추가합니다.조정 ( A )
그래서,
- 18 개의 융합 플롭에서 계산조정 ( A )
- 계산 용융 3은 이미 계산 된 항목의 사용 퍼데트 ( A )조정 ( A )
- 찾습니다 (1 플롭 가정).1데트 ( A )
- 다른 9 개의 융합 된 플롭에서 에 의해 이미 계산 된 의 각 elelemt를 확장합니다 .조정 ( A )1데트 ( A )
18 + 3 + 1 + 9 = 31 융합 플롭 결과 . 결정자를 계산하는 방법을 설명하지 않았지만 1 개의 추가 플롭을 저장할 수 있다고 생각합니다. 또는 3 단계에서 검사를 수행하는 데 사용할 수 있습니다 . 여기서 은 축퇴 (무역) 사례에 대한 허용 오차이며 , 32 개의 융합 된 플롭 ( 1 개의 플롭으로 가정 )이 발생합니다.| det(A) | >ϵϵif
나머지 모든 계산이 고유하기 때문에 일반 행렬 의 역수를 계산하는 더 빠른 방법이 없다고 생각 합니다. Cayley-Hamilton을 사용하면 속도 관점에서 도움이되지 않아야합니다. 일반적으로 다른 연산 외에 행렬에 대해 를 계산해야 합니다.3 × 3ㅏ23 × 3
NB :
- 이 답변은 수치 안정성을 다루지 않습니다.
- 벡터화 및 메모리 액세스 패턴 최적화에 대한 가능한 가능성에 대해서도 논의되지 않습니다