% 6.581 PS3 Qsn3 % estatic_svd.m numSrcCharges = 75; numDestCharges = 25; sepX = logspace(-2,5, 100); separation = zeros(size(sepX,2),3); separation(:,1) = sepX'; for iter=1:length(sepX) N = 20; % produce a list of source charge points and destination charge points srcCharges = rand(numSrcCharges,3); destCharges = [rand(numDestCharges,1) + sepX(iter), rand(numDestCharges,1), rand(numDestCharges,1)]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % a.) students fill in the interaction matrix % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for i=1:numSrcCharges for j=1:numDestCharges A(i,j) = ; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % b.) decompose A into eigenvalues and eigenvectors using svd command % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % c.) create rank one, two, k approximations to A. % % use sort command to extract eigenvalues with largest magnitudes and % % corresponding eigenvectors % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% r1A = ; r2A = ; r8A = ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % d.) take a random charge vector and see how good the low rank % % approximation is % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% q = rand(numDestCharges,1); r1error(iter) = ; r2error(iter) = ; r8error(iter) = ; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % e.) plot errors as a function of separation distance % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%