/** * Computes the "cost" for the parameters given. * * cost = (1/N) Sum (f(x;p) - y)^2 */ private double cost(DMatrixRMaj param, DMatrixRMaj X, DMatrixRMaj Y) { func.compute(param, X, temp0); double error = SpecializedOps_DDRM.diffNormF(temp0, Y); return(error * error / (double)X.numRows); }
public static double quality(DMatrixRMaj orig, DMatrixRMaj U, DMatrixRMaj W, DMatrixRMaj Vt) { // foundA = U*W*Vt DMatrixRMaj UW = new DMatrixRMaj(U.numRows, W.numCols); CommonOps_DDRM.mult(U, W, UW); DMatrixRMaj foundA = new DMatrixRMaj(UW.numRows, Vt.numCols); CommonOps_DDRM.mult(UW, Vt, foundA); double normA = NormOps_DDRM.normF(foundA); return(SpecializedOps_DDRM.diffNormF(orig, foundA) / normA); }