Example usage for org.apache.commons.math3.linear FieldLUDecomposition getDeterminant

List of usage examples for org.apache.commons.math3.linear FieldLUDecomposition getDeterminant

Introduction

In this page you can find the example usage for org.apache.commons.math3.linear FieldLUDecomposition getDeterminant.

Prototype

public T getDeterminant() 

Source Link

Document

Return the determinant of the matrix.

Usage

From source file:org.rhwlab.BHCnotused.GaussianGIWPrior.java

public void init() {
    int n = data.size();
    int d = m.getDimension();
    Dfp rP = r.add(n);/*from   www. j  ava2  s  .  c om*/
    //        System.out.printf("rP=%s\n",rP.toString());
    double nuP = nu + n;
    //        System.out.printf("nuP=%e\n", nuP);
    FieldMatrix C = new Array2DRowFieldMatrix(field, d, d);
    for (int row = 0; row < C.getRowDimension(); ++row) {
        for (int col = 0; col < C.getColumnDimension(); ++col) {
            C.setEntry(row, col, field.getZero());
        }
    }
    FieldVector X = new ArrayFieldVector(field, d); // a vector of zeros

    for (FieldVector v : data) {
        X = X.add(v);
        FieldMatrix v2 = v.outerProduct(v);
        C = C.add(v2);
    }
    FieldVector mP = (m.mapMultiply(r).add(X)).mapDivide(r.add(n));
    FieldMatrix Sp = C.add(S);

    FieldMatrix rmmP = mP.outerProduct(mP).scalarMultiply(rP);
    Sp = Sp.add(rmm).subtract(rmmP);

    FieldLUDecomposition ed = new FieldLUDecomposition(Sp);
    Dfp det = (Dfp) ed.getDeterminant();

    Dfp detSp = det.pow(field.newDfp(nuP / 2.0));

    Dfp gamma = field.getOne();

    Dfp gammaP = field.getOne();

    for (int i = 1; i <= d; ++i) {
        gamma = gamma.multiply(Gamma.gamma((nu + 1 - i) / 2.0));
        gammaP = gammaP.multiply(Gamma.gamma((nuP + 1 - i) / 2.0));
    }

    Dfp t1 = field.getPi().pow(-n * d / 2.0);
    Dfp t2 = r.divide(rP).pow(d / 2.0);
    Dfp t3 = detS.divide(detSp);

    Dfp t4 = gammaP.divide(gamma);
    Dfp t34 = t3.multiply(t4);
    /*        
            System.out.printf("detSp=%s\n", detSp.toString());
            System.out.printf("det=%s\n", det.toString());
            System.out.printf("gamma=%s\n", gamma.toString());
            System.out.printf("gammaP=%s\n", gammaP.toString());        
            System.out.printf("t1=%s\n", t1.toString());  
            System.out.printf("t2=%s\n", t2.toString());
            System.out.printf("t3=%s\n", t3.toString());
            System.out.printf("t4=%s\n", t4.toString());
    */
    likelihood = t2.multiply(t34).multiply(t1);
    double realLike = likelihood.getReal();
    //       System.out.printf("Likelihood=%e\n", realLike);
    int uhfd = 0;
}

From source file:org.rhwlab.BHCnotused.GaussianGIWPrior.java

static void setParameters(double n, double beta, Dfp[] mu, double s) {
    GaussianGIWPrior.nu = n;/*from w w w . ja v a  2 s .  c  om*/
    GaussianGIWPrior.S = new Array2DRowFieldMatrix(field, mu.length, mu.length);
    for (int i = 0; i < mu.length; ++i) {
        S.setEntry(i, i, field.newDfp(s));
    }
    GaussianGIWPrior.r = field.newDfp(beta);
    GaussianGIWPrior.m = new ArrayFieldVector(field, mu);

    //        EigenDecomposition ed = new EigenDecomposition(S);
    FieldLUDecomposition ed = new FieldLUDecomposition(S);
    detS = ((Dfp) ed.getDeterminant());
    System.out.printf("detS=%s\n", detS.toString());
    detS = detS.pow(nu / 2.0);
    System.out.printf("detSnu=%s\n", detS.toString());
    rmm = m.outerProduct(m).scalarMultiply(field.newDfp(r));
}