/** * Returns the largest absolute value */ protected double max() { double max = 0; for (MatrixEntry e : this) max = Math.max(Math.abs(e.get()), max); return max; }
/** * Computes the 1 norm */ protected double norm1() { double[] rowSum = new double[numRows]; for (MatrixEntry e : this) rowSum[e.row()] += Math.abs(e.get()); return max(rowSum); }
/** * Computes the infinity norm */ protected double normInf() { double[] columnSum = new double[numColumns]; for (MatrixEntry e : this) columnSum[e.column()] += Math.abs(e.get()); return max(columnSum); }
public Matrix scale(double alpha) { if (alpha == 1) return this; else if (alpha == 0) return zero(); for (MatrixEntry e : this) e.set(alpha * e.get()); return this; }
public ArpackSym(Matrix matrix) { if (!matrix.isSquare()) throw new IllegalArgumentException("matrix must be square"); if (EXPENSIVE_CHECKS) for (MatrixEntry entry : matrix) { if (entry.get() != matrix.get(entry.column(), entry.row())) throw new IllegalArgumentException( "matrix must be symmetric"); } this.matrix = matrix; }
@Override void copy(Matrix A) { for (MatrixEntry e : A) set(e.row(), e.column(), e.get()); }
@Override public Matrix scale(double alpha) { if (alpha == 0) zero(); else if (alpha != 1) for (MatrixEntry e : this) set(e.row(), e.column(), e.get() * alpha); return this; }
public Matrix add(double alpha, Matrix B) { checkSize(B); if (alpha != 0) for (MatrixEntry e : B) add(e.row(), e.column(), alpha * e.get()); return this; }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() > e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() < e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() < e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() >= e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() <= e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() < e.column()) set(e.row(), e.column(), e.get()); }
public Vector transMultAdd(double alpha, Vector x, Vector y) { checkTransMultAdd(x, y); if (alpha != 0) for (MatrixEntry e : this) y.add(e.column(), alpha * e.get() * x.get(e.row())); return y; }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() <= e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() <= e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (e.row() >= e.column()) set(e.row(), e.column(), e.get()); }
@Override void copy(Matrix A) { for (MatrixEntry e : A) if (inBand(e.row(), e.column()) && e.row() != e.column()) set(e.row(), e.column(), e.get()); }