eigの速度
MATLABでeigの速度がどの程度なのか少し気になっていたので,
適当に時間を計測してみた.
% eigの時間測定 clear all; nLoop = 10; sizeM = 2.^(5:12); nSizeM = numel(sizeM); times = zeros(nSizeM, nLoop); for iSizeM = 1:nSizeM disp(sizeM(iSizeM)); for iLoop = 1:nLoop m = rand(sizeM(iSizeM)); m = (m + m.')/2; tic; [a,b] = eig(m); t=toc; times(iSizeM, iLoop) = t; end % loop end % size % 出力 figure(1);loglog(mean(times,2));
このグラフよりオーダはO(x^a).
結論
遅い.行列サイズは極力小さくしましょう.