MATLAB에서 linsolve와 mldivide의 차이점은 무엇입니까?


10

matlab에서 linsolvemldivide 는 모두 결정, 과소 결정 및 불확실한 경우 모두 선형 방정식 시스템을 푸는 데 사용됩니다.

그들의 문서를 읽었을 때, 그들 사이에 어떤 차이점이 있는지 궁금했습니다. 그들은 세 가지 경우에 거의 동일한 행렬 분해 및 삼각 알고리즘 알고리즘을 사용하고 있습니까?

A에 opts 속성이있는 경우 linsolve는 mldivide보다 빠릅니다. linsolve는 A에 지정된 속성이 있는지 확인하기위한 테스트를 수행하지 않기 때문입니다.

mldivide가 동일한 테스트를 수행하여 A에 특수 속성이 있는지 확인합니까? 아니면 mldivide는 특별한 속성이없는 일반적인 경우로 취급합니까?

감사!

답변:


16

둘 다 선형 시스템을 해결하기위한 직접 솔버입니다 (반복 솔버와 반대).

mldivide엑스=mldivide

mldivide제곱 행렬의 경우 : A가 대칭이고 실제 양의 대각선 요소가있는 경우 MATLAB은 C 레 스키 인수 분해를 시도합니다. Cholesky 분해가 실패하면 MATLAB은 대칭적이고 무기한 분해를 수행합니다. A가 상위 Hessenberg이면 MATLAB은 가우스 제거를 사용하여 시스템을 삼각 행렬로 줄입니다. A가 정사각형이지만 치환 된 삼각, 대칭 및 양의 한정된 값이거나 Hessenberg가 아닌 경우 MATLAB은 부분 피벗과 함께 LU 분해를 사용하여 일반 삼각 분해를 수행합니다.

linsolve 정사각 행렬의 경우 : 부분 피벗을 사용한 LU 분해

mldividelinsolve직사각형 행렬에 대한 : QR 인수 분해

linsolveopts

opts.POSDEF = true; linsolve(A,b,opts)

엑스opts

경우 특정 기준을 충족, linsolve그리고 mldivide같은 인수 분해 공정을 활용 않습니다. 예를 들어, 특정 특성을 만족 하는 조밀 한 양의 한정 시스템의 경우, 또는 과도하게 결정된 시스템이 있고 최소 제곱 피팅을 수행합니다.

또한 기호 계산linsolve 도 수행 할 수 있습니다 . 이것은 솔루션 수가 무한한 작은 시스템을 가지고있을 때 편리합니다. 상징적으로 해결할 수 있습니다. 변수가 상징적으로 선언되지 않은, 그러나, 그리고 당신에게 같은 경고 메시지를 줄 것 "매트릭스 정밀 작업에 단수입니다."linsolvemldividemldividelinsolve

마지막으로 다음 행렬과 같은 희소 시스템을 linsolve지원하지 않습니다 (파란색 점은 0이 아닌 항목을 의미 함). 하지만 견고 스파 스 시스템을 처리 할 수있는 크기는 200K에서 200K 중일 때. mldivide드문 예

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.