Java Code Examples for cern.colt.matrix.linalg.EigenvalueDecomposition#getRealEigenvalues()
The following examples show how to use
cern.colt.matrix.linalg.EigenvalueDecomposition#getRealEigenvalues() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: PZTFactorizer.java From RankSys with Mozilla Public License 2.0 | 6 votes |
private static DoubleMatrix2D getGt(final DenseDoubleMatrix2D p, final DenseDoubleMatrix2D q, double lambda) { final int K = p.columns(); DenseDoubleMatrix2D A1 = new DenseDoubleMatrix2D(K, K); q.zMult(q, A1, 1.0, 0.0, true, false); for (int k = 0; k < K; k++) { A1.setQuick(k, k, lambda + A1.getQuick(k, k)); } EigenvalueDecomposition eig = new EigenvalueDecomposition(A1); DoubleMatrix1D d = eig.getRealEigenvalues(); DoubleMatrix2D gt = eig.getV(); for (int k = 0; k < K; k++) { double a = sqrt(d.get(k)); gt.viewColumn(k).assign(x -> a * x); } return gt; }
Example 2
Source File: EPolyPC.java From OSPREY3 with GNU General Public License v2.0 | 5 votes |
public EPolyPC( EPoly template, int fullOrder, int PCOrder, double PCFac) { //set up the principal component basis and the DOF information //coeffs will be added later //since we will be using this EPolyPC object when performing the fitting super(template.numDOFs,template.DOFmax,template.DOFmin,template.center, template.minE,null,fullOrder,template.DOFNames); //get the coordinate transformation into the eigenbasis of the template's Hessian //so we can use the high-eigenvalue directions as our principcal components DoubleMatrix2D hess = SeriesFitter.getHessian(template.coeffs,numDOFs,false); EigenvalueDecomposition edec = new EigenvalueDecomposition(hess); DoubleMatrix1D eigVals = edec.getRealEigenvalues(); DoubleMatrix2D eigVecs = edec.getV();//The columns of eigVec are the eigenvectors invAxisCoeffs = eigVecs;//axisCoeffs' inverse is its transpose, since it's orthogonal axisCoeffs = Algebra.DEFAULT.transpose(eigVecs); this.fullOrder = fullOrder; this.PCOrder = PCOrder; //Now figure out what PC's to use //Let's try the criterion to use all PCs //whose eigenvalues' absolute values are within a factor of PCFac //of the biggest double maxEigVal = 0; for(int n=0; n<numDOFs; n++) maxEigVal = Math.max( Math.abs(eigVals.get(n)), maxEigVal ); isPC = new boolean[numDOFs]; for(int n=0; n<numDOFs; n++){ if( Math.abs(eigVals.get(n)) >= maxEigVal*PCFac ) isPC[n] = true; } }