문제

나는 몇 곳에서 읽었습니다 (문서 와이 블로그 게시물에서 : http://blogs.mathworks.com/loren/2007/05/16/purpose-ofinv/ ) matlab에서 Inv의 사용은 느리고 부정확하기 때문에 권장되지 않습니다.

나는이 부정확성의 이유를 찾으려고 노력하고 있습니다. 현재 Google은 흥미로운 결과를주지 않았으므로 여기 누군가가 나를 안내 할 수 있다고 생각했습니다.

감사 !

도움이 되었습니까?

해결책

내가 언급 한 부정확성은 Matlab의 구현이 아니라 Metery Inv와 관련이 있습니다. 이러한 방법은 일반적으로 해당 시스템의 조건 수를 제곱하는 것이 필요하지 않기 때문에 방정식 시스템을 해결하기 위해 QR, LU 또는 기타 방법을 사용해야합니다. Inv를 사용하려면 일반적으로 원래 시스템의 조건 수를 제곱하여 정확도를 잃는 작업이 필요합니다.

-로든

다른 팁

Loren의 블로그의 요점은 Matlab의 inv 함수는 매트릭스 역전 계산의 다른 수치 구현보다 특히 느리거나 부정확합니다. 오히려 대부분의 경우 역 자체가 필요하지 않으며 다른 방법으로 진행할 수 있습니다 (예 : 선형 시스템을 사용하여 \ - 백 슬래시 연산자 - 역을 계산하지 않고).

inv() 확실히 더 느립니다 \ 여러 오른쪽 벡터가 없다면 해결할 수 있습니다. 그러나 부정확성에 관한 Mathworks의 조언은 수치 선형 대수 결과에서 지나치게 보수적 인 바운드 때문입니다. 다시 말해, inv() 부정확하지 않습니다. 링크는 더 자세히 설명합니다. http://arxiv.org/abs/1201.6035

널리 사용되는 몇몇 교과서는 독자가 벡터 B에 계산 된 역 Inv (A)를 곱함으로써 방정식 AX = B의 선형 시스템을 해결하는 것이 부정확하다고 믿게한다. 수치 분석 및 수치 선형 대수에 관한 거의 모든 교과서는 이것이 정확한지 아닌지를 나타내지 않고 계산 된 반전을 사용하지 않는 것을 조언합니다. 실제로, 역수 계산 방법에 대한 합리적인 가정하에, x = inv (a)*b는 최고의 역전적인 솔버가 계산 한 솔루션만큼 정확합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top