private boolean judgeConverge (int color) {
        Matrix[] lambdaMat = lambda.getMatrix();
        Matrix[] diagMat = diag.getMatrix();
        Matrix[] residueMat = residue.getMatrix();

        double diff = reshapedProductUVBaseMat[color].times(diagMat[color]).plus(residueMat[color]).minus(stackedToOneColMat[color]).norm2()/stackedToOneColMat[color].norm2();

        // test
        // if (color == 0) {
        //     // System.out.println(iter[color]);
        //     // System.out.println(diff);
        //     System.out.println(residueMat[color].norm1());
        // }

        if (diff < tolerance) {
            System.out.println("Color: "+color);
            System.out.println("iterating times = "+iter[color]);
            System.out.println("Norm2Diff = "+diff);
            System.out.println("Norm1 = "+residueMat[color].norm1()+"\n\n");

            return true;
        }
        else {
            return false;
        }
    }