/** * Compute the generalised eigenvalues, L, of the problem A x = L B x. * The returned eigenvalues are not ordered. * * @param A symmetric Matrix A; only the upper triangle is used. * @param B symmetric Matrix B; only the upper triangle is used. * @return the eigenvalues L. */ public static DenseVector symmetricGeneralisedEigenvalues(DenseMatrix A, DenseMatrix B) { if (!A.isSquare() || !B.isSquare()) throw new IllegalArgumentException("Input matrices must be square"); DenseVector W = new DenseVector(A.numRows()); sygvd(1, "N", "U", A.copy(), B.copy(), W); return W; }
/** * Solve the general problem A x = L B x. * The returned eigenvalues are not ordered. * * @param A symmetric matrix A * @param B symmetric matrix B * @return The eigenvectors x and eigenvalues L. */ public static IndependentPair<DenseMatrix, DenseVector> symmetricGeneralisedEigenvectors(DenseMatrix A, DenseMatrix B) { if (!A.isSquare() || !B.isSquare()) throw new IllegalArgumentException("Input matrices must be square"); DenseMatrix vecs = A.copy(); DenseVector W = new DenseVector(A.numRows()); sygvd(1, "V", "U", vecs, B.copy(), W); return new IndependentPair<DenseMatrix, DenseVector>(vecs, W); }
public Matrix divide(double f) { DenseMatrix ret = matrix.copy(); ret.scale(1.0 / f); Matrix result = new MTJDenseDoubleMatrix2D(ret); MapMatrix<String, Object> a = getMetaData(); if (a != null) { result.setMetaData(a.clone()); } return result; }
public Matrix copy() { Matrix m = new MTJDenseDoubleMatrix2D(matrix.copy()); if (getMetaData() != null) { m.setMetaData(getMetaData().clone()); } return m; }
public Matrix times(double f) { DenseMatrix ret = matrix.copy(); ret.scale(f); Matrix result = new MTJDenseDoubleMatrix2D(ret); MapMatrix<String, Object> a = getMetaData(); if (a != null) { result.setMetaData(a.clone()); } return result; }
public Matrix divide(double f) { DenseMatrix ret = matrix.copy(); ret.scale(1.0 / f); Matrix result = new MTJDenseDoubleMatrix2D(ret); MapMatrix<String, Object> a = getMetaData(); if (a != null) { result.setMetaData(a.clone()); } return result; }
public Matrix times(double f) { DenseMatrix ret = matrix.copy(); ret.scale(f); Matrix result = new MTJDenseDoubleMatrix2D(ret); MapMatrix<String, Object> a = getMetaData(); if (a != null) { result.setMetaData(a.clone()); } return result; }
public Matrix copy() { Matrix m = new MTJDenseDoubleMatrix2D(matrix.copy()); if (getMetaData() != null) { m.setMetaData(getMetaData().clone()); } return m; }
public Matrix plus(Matrix m2) { if (m2 instanceof MTJDenseDoubleMatrix2D) { DenseMatrix ret = matrix.copy(); ret.add(((MTJDenseDoubleMatrix2D) m2).getWrappedObject()); Matrix result = new MTJDenseDoubleMatrix2D(ret); MapMatrix<String, Object> a = getMetaData(); if (a != null) { result.setMetaData(a.clone()); } return result; } else { return super.plus(m2); } }
public Matrix plus(Matrix m2) { if (m2 instanceof MTJDenseDoubleMatrix2D) { DenseMatrix ret = matrix.copy(); ret.add(((MTJDenseDoubleMatrix2D) m2).getWrappedObject()); Matrix result = new MTJDenseDoubleMatrix2D(ret); MapMatrix<String, Object> a = getMetaData(); if (a != null) { result.setMetaData(a.clone()); } return result; } else { return super.plus(m2); } }
public MTJDenseDoubleMatrix2D(Matrix m) { super(m.getRowCount(), m.getColumnCount()); if (m instanceof MTJDenseDoubleMatrix2D) { this.matrix = ((MTJDenseDoubleMatrix2D) m).matrix.copy(); } else { this.matrix = new DenseMatrix(m.toDoubleArray()); } if (m.getMetaData() != null) { setMetaData(m.getMetaData().clone()); } }
public MTJDenseDoubleMatrix2D(Matrix m) { super(m.getRowCount(), m.getColumnCount()); if (m instanceof MTJDenseDoubleMatrix2D) { this.matrix = ((MTJDenseDoubleMatrix2D) m).matrix.copy(); } else { this.matrix = new DenseMatrix(m.toDoubleArray()); } if (m.getMetaData() != null) { setMetaData(m.getMetaData().clone()); } }
public double getDouble(long... coordinates) { if (inv == null) { DenseMatrix A = new MTJDenseDoubleMatrix2D(getSource()).getWrappedObject(); DenseMatrix I = Matrices.identity((int) getSource().getColumnCount()); DenseMatrix AI = I.copy(); inv = new MTJDenseDoubleMatrix2D((DenseMatrix) A.solve(I, AI)); } return inv.getAsDouble(coordinates); }
public double getDouble(long... coordinates) { if (inv == null) { DenseMatrix A = new MTJDenseDoubleMatrix2D(getSource()).getWrappedObject(); DenseMatrix I = Matrices.identity((int) getSource().getColumnCount()); DenseMatrix AI = I.copy(); inv = new MTJDenseDoubleMatrix2D((DenseMatrix) A.solve(I, AI)); } return inv.getAsDouble(coordinates); }
DenseMatrix CwInverse = I.copy(); System.err.println("CwInverse : \n" + Cw.solve(I, CwInverse));