이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

mldivide, \

x에 대한 선형 연립방정식 Ax = B의 해 구하기

설명

예제

x = A\B는 선형 연립방정식 A*x = B의 해를 구합니다. 행렬 AB의 행 개수는 동일해야 합니다. A가 준특이 행렬(badly scaled)이거나 유사 특이 행렬(Nearly Singular)이면 MATLAB®에서 경고 메시지가 표시되지만, 계산은 이에 관계없이 수행됩니다.

  • A가 스칼라인 경우 A\BA.\B와 동일합니다.

  • A가 정사각 nxn 행렬이고 Bn개 행을 갖는 행렬이면, x = A\B는 방정식 A*x = B의 해가 존재하는 경우 그 해가 됩니다.

  • Am ~= n인 직사각 mxn 행렬이고 Bm개 행을 갖는 행렬이면, A\B는 연립방정식 A*x= B에 대한 최소제곱해(Least-squares Solution)를 반환합니다.

x = mldivide(A,B)x = A\B를 실행하는 또 다른 방법이지만 거의 사용되지 않습니다. 이 표현식은 클래스에 대한 연산자 오버로드를 지원합니다.

예제

모두 축소

간단한 선형 연립방정식 A*x = B를 풉니다.

A = magic(3);
B = [15; 15; 15];
x = A\B
x = 3×1

    1.0000
    1.0000
    1.0000

특이 행렬 A가 있는 선형 연립방정식 A*x = b를 풉니다.

A = magic(4);
b = [34; 34; 34; 34];
x = A\b
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =  1.306145e-17.
x = 4×1

    1.5000
    2.5000
   -0.5000
    0.5000

rcond0eps 사이이면 MATLAB®에서 유사 특이 행렬(Nearly Singular) 경고가 발생하지만, 계산은 계속 진행됩니다. 조건이 나쁜 행렬을 사용하는 경우에는 잔차 (b-A*x)가 상대적으로 작더라도 신뢰할 수 없는 해가 반환될 수 있습니다. 이 특정 예에서는 잔차의 노름이 0이므로, rcond가 작더라도 엄밀해를 구할 수 있습니다.

rcond0이면 특이 행렬 경고가 나타납니다.

A = [1 0; 0 0];
b = [1; 1];
x = A\b
Warning: Matrix is singular to working precision.
x = 2×1

     1
   Inf

이 경우, 0으로 나누기를 수행하면 Inf 및/또는 NaN을 사용한 계산이 수행되므로 계산 결과를 신뢰할 수 없게 됩니다.

선형 연립방정식 A*x = b를 풉니다.

A = [1 2 0; 0 4 3];
b = [8; 18];
x = A\b
x = 3×1

         0
    4.0000
    0.6667

희소 행렬을 사용하여 간단한 선형 연립방정식을 풉니다.

행렬 방정식 A*x = B가 있다고 가정해 보겠습니다.

A = sparse([0 2 0 1 0; 4 -1 -1 0 0; 0 0 0 3 -6; -2 0 0 0 2; 0 0 4 2 0]);
B = sparse([8; -1; -18; 8; 20]);
x = A\B
x = 
   (1,1)       1.0000
   (2,1)       2.0000
   (3,1)       3.0000
   (4,1)       4.0000
   (5,1)       5.0000

입력 인수

모두 축소

계수 행렬로, 벡터, 비희소 행렬, 희소 행렬 중 하나로 지정됩니다. Am개 행을 갖는 경우 Bm개 행을 가져야 합니다.

데이터형: single | double | logical
복소수 지원 여부:

우변으로, 벡터, 비희소 행렬, 희소 행렬 중 하나로 지정됩니다. Bm개 행을 갖는 경우 Am개 행을 가져야 합니다.

데이터형: single | double | logical
복소수 지원 여부:

출력 인수

모두 축소

벡터, 비희소 행렬, 희소 행렬 중 하나가 해로 반환됩니다. Amxn 행렬이고 Bmxp 행렬인 경우 xnxp 행렬이 됩니다(p==1인 경우 포함).

A가 비희소 저장 형식을 갖는 경우 x도 비희소 저장 형식을 갖습니다. A가 희소 행렬인 경우 xB와 동일한 저장 형식을 갖습니다.

  • 연산자 /\는 등식 B/A = (A'\B')'의 관계에 있습니다.

  • A가 정사각 행렬인 경우 A\B는 대략적으로 inv(A)*B와 같지만 MATLAB에서는 A\B를 이와 다르게 더욱 견고한 방식으로 처리합니다.

  • A의 랭크가 A의 열 개수보다 작은 경우, x = A\B가 반드시 최소 노름 해가 되지는 않습니다. x = lsqminnorm(A,B) 또는 x = pinv(A)*B를 사용하여 최소 노름 최소제곱해를 계산할 수 있습니다.

알고리즘

모두 축소

선형 시스템을 풀 때 mldivide를 다양하게 활용할 수 있는 것은 적절한 솔버에 디스패치하여 문제의 대칭성을 활용할 수 있는 기능 덕분입니다. 이 접근 방식은 계산 시간을 최소화하는 것이 목적입니다. 이 함수는 가장 먼저 비희소(Full)("조밀"이라고도 함) 형식 입력 배열과 희소 형식 입력 배열을 구분합니다.

비희소 형식 입력값에 대한 알고리즘

아래에 나와 있는 플로우 차트에서는 입력값 AB비희소 형식인 경우의 알고리즘 경로를 보여줍니다.

희소 형식 입력값에 대한 알고리즘

A가 비희소 행렬이고 B가 희소 행렬인 경우, mldivideB를 비희소 행렬로 변환하고 비희소 형식 알고리즘 경로(위에 나와 있음)를 사용하여 비희소 저장 형식으로 해를 계산합니다. A가 희소 행렬인 경우, 해 x의 저장 형식은 B의 저장 형식과 같으며, mldivide는 아래 나와 있는 것처럼 희소 형식 입력값에 대한 알고리즘 경로를 따릅니다.

확장 기능

R2006a 이전에 개발됨