2010-12-15 3 views

답변

6

adjugate는 실제로는 원하지 않는 일 것입니다. 아마도입니다.

정상적인 adjoint (conjugate transpose)를 원할 경우 x'x에 대해 줄 것입니다. (비공 전치 conj(x)는 켤레 복소수를 제공합니다. x.', 또는 transpose(x)이며,뿐만 아니라 행렬과 벡터에서 작동합니다.)

실제로 adjugate (aka classical adjoint)을 원하는 경우에, 나는 옥타브가 내장 가지고 있다고 생각하지 않습니다. 이것을 계산하는 몇 가지 방법이 있습니다. 당신이 invertibility를 취할 수 있다면, 그것은 단지 det(x)*inv(x)입니다. 그렇지 않은 경우 조금 더 복잡합니다. 일반적으로, 보조 물질은 보조 인자 매트릭스의 전치이다. 보조 요소 행렬은 원래 행렬의 각 요소를 보조 요소로 대체합니다 (행과 열이없는 원본 행렬의 행렬식 인 더하기 또는 빼기). 더하기 또는 빼기 규칙은 행렬식 확장에 대해 동일합니다. 행과 열의 수는 짝수입니다. 음수라면 양수입니다. 이상합니다.)

가장 간단한 코드와 마찬가지로 SVD (내장형)를 사용합니다. adjugate는 adj (xy) = adj (y) adj (x)가있는 반 동형 성입니다. x의 SVD는 u * s * v '= x, s 대각선, u 및 v 모두의 단위 행렬 u, s, v의 집합입니다. adj (x) = adj (u * s * v ') = adj (v') adj (s) adj (u). 가역 행렬의 경우, adjugate는 역행렬의 결정 시간에 해당합니다. 단위 행렬의 경우, 이것은 공역 전치입니다. adj (x) = det (v ') v adj (s) det (u) u'= det (v '* u) v adj (s) u'. 대각 행렬 s의 보간은 계산하기가 상대적으로 쉽다 - 대각선으로부터의 각 엔트리는 0이고, 대각선상의 각 엔트리는 다른 것의 곱이다.

+1

내가 원했던 것은 매트릭스와 det (x) * inv (x)를 보완하는 것이 해결책이었습니다. –

관련 문제