norm
및 임의의 데이터
A = randn(2000,2000);
tic;
n1 = norm(A)
toc;
와이 예제는 하나의 대칭 행렬 A'*A
의 (최대) 고유 값 (또는 A*A'
을 찾아 eigs
을 시도 할 수 있습니다
n1 = 89.298
Elapsed time is 2.16777 seconds.
제공 그것을 을 경우 A
직사각형의 경우는 더 작음). 그것은 Lanczos iteration 방법을 사용합니다.
tic;
B = A'*A; % symmetric positive-definite. B = A*A' if it is smaller
n2 = sqrt(eigs(B, 1)),
toc
는 출력 : 당신이 norm
또는 eigs
및 A
좋은 특성 (제대로 분리 특이 값)가 당신의 매트릭스를 사용하지 않을 경우
n2 = 89.298
Elapsed time is 0.311942 seconds.
것은, 당신이 그것을 대략적인 시도 할 수 있습니다 power iteration 방법은
tic;
B = A'*A; % or B = A*A' if it is smaller
x = B(:,1); % example of starting point, x will have the largest eigenvector
x = x/norm(x);
for i = 1:200
y = B*x;
y = y/norm(y);
% norm(x - y); % <- residual, you can try to use it to stop iteration
x = y;
end;
n3 = sqrt(mean(B*x./x)) % translate eigenvalue of B to singular value of A
toc
같은 임의의 매트릭스 (되지 특히 양호한 특성)에 대한 012 범정확한 해결책 :
n3 = 89.420
Elapsed time is 0.428032 seconds.
's (0,0)'는 유효하지 않은 MATLAB 구문입니다. 이 코드를 실행 했습니까? – Adriaan
'norm (A, 2) '의 문제점은 무엇입니까? 일반적으로, Matlab에 내장 함수가있는 경우, 특히 대수 행렬 –
에 대해 가장 빨리 수행 할 수 있지만 대용량 행렬의 경우에는 좋지 않습니다. – user3086871