List of usage examples for org.apache.commons.math3.linear FieldLUDecomposition getDeterminant
public T getDeterminant()
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)); }