몇 가지 기본 선형 대수 연산을 구현하려고하는데 이러한 연산 중 하나는 삼각형 (위 및/또는 아래) 행렬의 반전입니다. 거기에 쉽고 안정적인 알고리즘을 할 수 있습니까?삼각형 (위 또는 아래) 행렬을 뒤집을 수있는 간단한 방법이 있습니까?
감사합니다.
몇 가지 기본 선형 대수 연산을 구현하려고하는데 이러한 연산 중 하나는 삼각형 (위 및/또는 아래) 행렬의 반전입니다. 거기에 쉽고 안정적인 알고리즘을 할 수 있습니까?삼각형 (위 또는 아래) 행렬을 뒤집을 수있는 간단한 방법이 있습니까?
감사합니다.
예, back substitution을 사용하십시오. 행렬을 반전하는 표준 알고리즘은 LU 분해 (저 삼각형 및 상 삼각 행렬로 분해)를 찾고, 삼각형 조각에 대해 백분위를 사용하고 결과를 결합하여 원래 행렬의 역함수를 얻는 것입니다.
나는 삼각형 매트릭스가 아닌 * 삼각형 매트릭스의 역함을 얻으려고합니다. 삼각형의 반전을 얻으려면 뒤 대체가 어떻게 도움이 될까요? – tunnuz
정의에 따르면 삼각 행렬은 정사각형입니다. – jason
또한 사각형 행렬 만 역변환됩니다. – conjectures
와우는 수치 해석 과정의 내용의 절반 정도입니다. 표준 알고리즘이 그것을 할 것이며, 통조림 코드 here의 무리가 있습니다. 이것과 다른 대부분의 일반적인 수치 해석 문제의 궁극적 인 원인은 Numerical Recipes입니다.
삼각 행렬을 반전시키는 것은 수치 해석에서 코스의 내용의 절반이 아닙니다. 삼각 행렬을 반전하는 것은 쉽지 않고 순진 알고리즘은 안정적입니다. – jason
행 피봇 팅을해야합니다. Naive는 안정적이지 않습니다. – duffymo
피벗 (Gaussian elimination을 통해)은 선형 시스템을 삼각형 형태로 변환 한 다음 역 대체로 해결합니다. 안정성에 관해서는, 예를 들어 Nicholas Higham, Numerical Algorithms의 Accuracy and Stability 책, 제 2 판 140 페이지를보십시오. – jason
낮은 삼각 행렬 L이 주어지면, 대체는 사용자가 시스템을 풀 수있게 해줍니다. Lx = b 오른쪽에 b를 빠르게 입력하십시오. b.
L을 반전하려면이 시스템을 오른쪽면 e1 = (1,0, ..., 0), e2 = (0,1, ..., 0), ..., en = (0,0, ..., 1) 및 결과 솔루션 벡터를 단일 (반드시 낮은 삼각형) 행렬로 결합합니다.
폐쇄 형 솔루션에 관심이있는 경우 역원의 대각선 요소는 원래 대각선 요소의 역원이며 역원의 나머지 요소에 대한 수식은 이동과 함께 더욱 복잡해집니다 멀리 대각선에서.
가능한 경우 반전하지 마십시오. 그것은 수치 선형 대수학의 기본 계명 중 하나입니다.
행렬 L 자체를 메모리에 유지하는 것이 훨씬 빠르고 수치 안정성이 뛰어나며 inv (L)을 사용하여 다른 작업을 수행해야 할 때마다
inv(L)b
을 역 대체로 계산하십시오.
반전을위한 일반적인 알고리즘은
inv(L)[1 0 0 ...],
inv(L)[0 1 0 ....],
inv(L)[0 0 1 ....]
등의 시스템을 해결해야하므로, 전혀 반전하지 않는 것이 더 쉽다는 것을 알 수 있습니다.
이 게시물에서보세요 : http://math.stackexchange.com/questions/1143214/method-to-find-the-inverse-of-any-lower-triangular-matrix 베스트 – Dade