function minvar2, a, eval, evec, residual, matrix=m ;+ ;NAME: minvar2 ;PURPOSE: ; Find the direction of minimum variance for an array of vectors. ;CALLING: normal = minvar(vec_array, eval, evec, residual) ;INPUTS: vec_array: an array(N,3) ;OPTIONAL: eval: a named parameter returning eigenvalues of vec_array ; evec: a named parameter returning eigenvectors of vec_array ; normal is evec(*,0) ; residual: a named parameter returning the residual from the ; eigenvalue/vector equation ;KEYWORD PARAMETERS: none ;OUTPUTS: normal, the minimum variance direction of array ;OPTIONAL OUTPUTS: none ;LAST MODIFICATION: @(#)minvar.pro 1.1 96/12/06 ;CREATED BY: Received from Ti Phan. (FVM) ;- dim = dimen(a) n = dim(0) d = fltarr(3,3,n) for i=0l,n-1 do begin d(*,*,i) = transpose(a(i,*))#a(i,*) endfor sum1 = 0 sum2 = 0 for i=0l,n-1 do begin sum1 = sum1+d(*,*,i) sum2 = sum2+a(i,*) endfor sum1 = sum1/float(n) sum2 = sum2/float(n) m = sum1 - transpose(sum2)#sum2 eval = eigenql(m,eigenvect=evec,residual=residual) ;ratio = float(eval(1))/float(eval(0)) ;if ratio lt 1.5 then print,'ratio too small', float(eval), ratio return,evec[*,2] end