Main Content

null

행렬의 영공간

설명

예제

Z = null(A)A의 영공간에 대한 정규 직교 기저를 반환합니다.

예제

Z = null(A,tol)은 허용오차도 지정합니다. tol보다 작은 A의 특이값은 0으로 처리되어 Z의 열 개수에 영향을 줄 수 있습니다.

예제

Z = null(A,"rational")A의 영공간에 대한, 일반적으로 정규 직교하지 않는 유리(rational) 기저를 반환합니다. A가 작은 정수 요소를 가진 작은 행렬이면 Z의 요소는 작은 정수의 비가 됩니다. 이 방법은 null(A)보다 수치적 정확도가 떨어집니다.

예제

모두 축소

null 함수를 사용하여 행렬의 영공간에 대한 정규 직교 기저 벡터와 유리 기저 벡터를 계산합니다. 행렬의 영공간은 Ax=0을 충족하는 벡터 x를 포함합니다.

1로 구성된 3×3 행렬을 만듭니다. 이 행렬은 특이값 중 2개가 0인 랭크 부족 행렬입니다.

A = ones(3)
A = 3×3

     1     1     1
     1     1     1
     1     1     1

A의 영공간에 대한 정규 직교 기저를 계산합니다. 반올림 오차 내에서 Ax1=0임을 확인합니다.

x1 = null(A)
x1 = 3×2

    0.8165   -0.0000
   -0.4082   -0.7071
   -0.4082    0.7071

norm(A*x1)
ans = 4.2999e-16

이제 영공간에 대한 유리 기저를 계산합니다. Ax2=0임을 확인합니다.

x2 = null(A,"rational")
x2 = 3×2

    -1    -1
     1     0
     0     1

norm(A*x2)
ans = 0

x1x2는 유사하지만 서로 다르게 정규화되었습니다. x1'*x1은 단위 행렬이지만 x2'*x2는 아닙니다.

x1'*x1
ans = 2×2

    1.0000   -0.0000
   -0.0000    1.0000

x2'*x2
ans = 2×2

     2     1
     1     2

직교성은 종종 수치 계산의 정확도를 위해 반드시 필요합니다. 따라서 "rational" 옵션은 출력값을 더 읽기 쉽게 만들면 유용한 작은 정수 행렬에 대해 작업할 때만 사용해야 합니다.

행렬의 특이값이 작은 경우, 0으로 처리되는 특이값을 변경하도록 허용오차를 지정합니다.

7×7 힐베르트 행렬을 생성합니다. 이 행렬은 완전 랭크이지만 일부 작은 특이값을 가집니다.

H = hilb(7)
H = 7×7

    1.0000    0.5000    0.3333    0.2500    0.2000    0.1667    0.1429
    0.5000    0.3333    0.2500    0.2000    0.1667    0.1429    0.1250
    0.3333    0.2500    0.2000    0.1667    0.1429    0.1250    0.1111
    0.2500    0.2000    0.1667    0.1429    0.1250    0.1111    0.1000
    0.2000    0.1667    0.1429    0.1250    0.1111    0.1000    0.0909
    0.1667    0.1429    0.1250    0.1111    0.1000    0.0909    0.0833
    0.1429    0.1250    0.1111    0.1000    0.0909    0.0833    0.0769

s = svd(H)
s = 7×1

    1.6609
    0.2719
    0.0213
    0.0010
    0.0000
    0.0000
    0.0000

H의 영공간을 계산합니다. H가 완전 랭크이므로 Z가 비어 있습니다.

Z = null(H)
Z =

  7x0 empty double matrix

이제 영공간을 다시 계산하되 허용오차를 1e-4로 지정합니다. 이 허용오차로 인해 null이 3개의 특이값을 0으로 처리하므로 영공간이 더 이상 비어 있지 않습니다.

Ztol = null(H,1e-4)
Ztol = 7×3

    0.0160   -0.0025    0.0002
   -0.2279    0.0618   -0.0098
    0.6288   -0.3487    0.0952
   -0.2004    0.6447   -0.3713
   -0.4970   -0.1744    0.6825
   -0.1849   -0.5436   -0.5910
    0.4808    0.3647    0.1944

지정된 허용오차와 비교했을 때 H*Ztol이 무시할 수 있는 요소를 갖는지 확인합니다.

norm(H*Ztol)
ans = 2.9386e-05

부족 결정 시스템의 특수해 하나를 구한 다음 모든 해의 일반 형태를 구합니다.

부족 결정 선형 시스템 Ax=b에는 방정식보다 미지수가 더 많습니다. 부족 결정 시스템은 해가 무수히 많을 수도 있고 없을 수도 있습니다. 해가 무수히 많을 경우, 모든 해가 하나의 직선 위에 존재합니다. 이 직선 위의 점은 영공간 벡터의 일차 결합으로 구할 수 있습니다.

2×4 계수 행렬을 만들고 백슬래시를 사용하여 b가 1로 구성된 벡터인 방정식 Ax0=b를 풉니다. 백슬래시는 문제의 최소제곱해를 계산합니다.

A = [1 8 15 67; 7 14 16 3]
A = 2×4

     1     8    15    67
     7    14    16     3

b = ones(2,1);
x0 = A\b
x0 = 4×1

         0
         0
    0.0623
    0.0010

부족 결정 시스템에 대한 완전한 일반해는 x=x0+Ny와 같은 형태를 같습니다. 여기서

  • NA의 영공간입니다.

  • y는 적절한 길이를 갖는 임의의 벡터입니다.

  • x0은 백슬래시로 계산한 해입니다.

A의 영공간을 계산하고 그 결과를 사용하여 연립방정식의 다른 해를 생성합니다. 새 해가 반올림 오차 내에서 Ax=b를 충족하는지 확인합니다.

N = null(A)
N = 4×2

   -0.2977   -0.8970
   -0.6397    0.4397
    0.7044    0.0157
   -0.0769   -0.0426

x = x0 + N*[1; -2]
x = 4×1

    1.4963
   -1.5192
    0.7354
    0.0093

norm(A*x-b)
ans = 1.8510e-14

입력 인수

모두 축소

입력 행렬입니다.

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

특이값 허용오차로, 실수 숫자형 스칼라로 지정됩니다. 허용오차보다 작은 A의 특이값은 0으로 처리되어 null이 반환하는 영공간 벡터의 개수에 영향을 줍니다. 디폴트 허용오차는 max(size(A)) * eps(norm(A))입니다.

출력 인수

모두 축소

영공간 기저 벡터로, 행렬의 열로 반환됩니다. Z는 다음 속성을 충족합니다.

  • A*Z는 무시할 수 있는 요소를 갖습니다.

  • size(Z,2)A의 영공간의 차원에 대한 추정값입니다.

rank(A)(또는 rank(A,tol))가 size(A,2)와 같으면 Z는 비어 있습니다.

알고리즘

null(A)A = U*S*V'를 충족하는 행렬 A의 특이값 분해를 계산합니다. 0인 특이값(허용오차 범위 내)에 대응하는 V의 열들이 영공간에 대한 정규 직교 기저 벡터 집합을 구성합니다.

영공간 null(A,"rational")의 유리 기저는 A의 기약행 사다리꼴에서 얻습니다. 기약행 사다리꼴은 rref로 계산합니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| | |