이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
null
행렬의 영공간
설명
예제
행렬의 영공간
null
함수를 사용하여 행렬의 영공간에 대한 정규 직교 기저 벡터와 유리 기저 벡터를 계산합니다. 행렬의 영공간은 을 충족하는 벡터 를 포함합니다.
1로 구성된 3×3 행렬을 만듭니다. 이 행렬은 특이값 중 2개가 0인 랭크 부족 행렬입니다.
A = ones(3)
A = 3×3
1 1 1
1 1 1
1 1 1
A
의 영공간에 대한 정규 직교 기저를 계산합니다. 반올림 오차 내에서 임을 확인합니다.
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
이제 영공간에 대한 유리 기저를 계산합니다. 임을 확인합니다.
x2 = null(A,"rational")
x2 = 3×2
-1 -1
1 0
0 1
norm(A*x2)
ans = 0
x1
과 x2
는 유사하지만 서로 다르게 정규화되었습니다. 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
부족 결정 연립방정식의 일반해
부족 결정 시스템의 특수해 하나를 구한 다음 모든 해의 일반 형태를 구합니다.
부족 결정 선형 시스템 에는 방정식보다 미지수가 더 많습니다. 부족 결정 시스템은 해가 무수히 많을 수도 있고 없을 수도 있습니다. 해가 무수히 많을 경우, 모든 해가 하나의 직선 위에 존재합니다. 이 직선 위의 점은 영공간 벡터의 선형 결합으로 구할 수 있습니다.
2×4 계수 행렬을 만들고 백슬래시를 사용하여 가 1로 구성된 벡터인 방정식 를 풉니다. 백슬래시는 문제의 최소제곱해를 계산합니다.
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
부족 결정 시스템에 대한 완전한 일반해는 와 같은 형태를 같습니다. 여기서
은 의 영공간입니다.
는 적절한 길이를 갖는 임의의 벡터입니다.
은 백슬래시로 계산한 해입니다.
A
의 영공간을 계산하고 그 결과를 사용하여 연립방정식의 다른 해를 생성합니다. 새 해가 반올림 오차 내에서 를 충족하는지 확인합니다.
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 = 2.8908e-14
입력 인수
A
— 입력 행렬
행렬
입력 행렬입니다.
데이터형: single
| double
복소수 지원 여부: 예
tol
— 특이값 허용오차
스칼라
특이값 허용오차로, 실수 숫자형 스칼라로 지정됩니다. 허용오차보다 작은 A
의 특이값은 0으로 처리되어 null
이 반환하는 영공간 벡터의 개수에 영향을 줍니다. 디폴트 허용오차는 max(size(A)) * eps(norm(A))
입니다.
출력 인수
Z
— 영공간 기저 벡터
행렬
영공간 기저 벡터로, 행렬의 열로 반환됩니다. 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
로 계산합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
생성된 코드는 MATLAB®과 다른 기저를 반환할 수 있습니다.
코드 생성 시 유리 기저 옵션(두 번째 입력값)은 지원되지 않습니다.
코드 생성 시 이 함수에 대해 희소 행렬 입력값은 지원되지 않습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
구문
Z = null(A,"rational")
은 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
구문
Z = null(A,"rational")
은 지원되지 않습니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2022a: 허용오차 지정
tol
인수를 사용하여 영공간을 구성하는 데 사용되는 특이값에 대한 허용오차 임계값을 지정합니다. 허용오차보다 작은 입력 행렬의 특이값은 0으로 처리됩니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)