use of org.ojalgo.random.Normal in project ojAlgo by optimatika.
the class TridiagonalizeCase method testRandomBigComplexPrimitive.
@Test
@Tag("unstable")
public void testRandomBigComplexPrimitive() {
BasicMatrix tmpSymmetricRandoml = PrimitiveMatrix.FACTORY.makeFilled(9, 9, new Normal());
tmpSymmetricRandoml = tmpSymmetricRandoml.add(tmpSymmetricRandoml.transpose());
final MatrixStore<BigDecimal> tmpBigA = BigDenseStore.FACTORY.copy(tmpSymmetricRandoml);
final MatrixStore<ComplexNumber> tmpComplexA = ComplexDenseStore.FACTORY.copy(tmpSymmetricRandoml);
final MatrixStore<Double> tmpPrimitiveA = PrimitiveDenseStore.FACTORY.copy(tmpSymmetricRandoml);
final Tridiagonal<BigDecimal> tmpBigDecomp = Tridiagonal.BIG.make();
final Tridiagonal<ComplexNumber> tmpComplexDecomp = Tridiagonal.COMPLEX.make();
final Tridiagonal<Double> tmpPrimitiveDecomp = Tridiagonal.PRIMITIVE.make();
tmpBigDecomp.decompose(tmpBigA);
tmpComplexDecomp.decompose(tmpComplexA);
tmpPrimitiveDecomp.decompose(tmpPrimitiveA);
TestUtils.assertEquals(tmpBigA, tmpBigDecomp, new NumberContext(7, 14));
TestUtils.assertEquals(tmpComplexA, tmpComplexDecomp, new NumberContext(7, 14));
TestUtils.assertEquals(tmpPrimitiveA, tmpPrimitiveDecomp, new NumberContext(7, 14));
if (MatrixDecompositionTests.DEBUG) {
BasicLogger.debug("Big Q", tmpBigDecomp.getQ());
BasicLogger.debug("Complex Q", tmpComplexDecomp.getQ());
BasicLogger.debug("Primitive Q", tmpPrimitiveDecomp.getQ());
BasicLogger.debug("Big D", tmpBigDecomp.getD());
BasicLogger.debug("Complex D", tmpComplexDecomp.getD());
BasicLogger.debug("Primitive D", tmpPrimitiveDecomp.getD());
}
TestUtils.assertEquals(tmpPrimitiveDecomp.getD(), PrimitiveDenseStore.FACTORY.copy(tmpBigDecomp.getD()), new NumberContext(7, 14));
// TODO JUnitUtils.assertEquals(tmpPrimitiveDecomp.getD(), PrimitiveDenseStore.FACTORY.copy(tmpComplexDecomp.getD()), JUnitUtils.EQUALS);
TestUtils.assertEquals(tmpPrimitiveDecomp.getQ(), PrimitiveDenseStore.FACTORY.copy(tmpBigDecomp.getQ()), new NumberContext(7, 14));
// TODO JUnitUtils.assertEquals(tmpPrimitiveDecomp.getQ(), PrimitiveDenseStore.FACTORY.copy(tmpComplexDecomp.getQ()), JUnitUtils.EQUALS);
}
use of org.ojalgo.random.Normal in project ojAlgo by optimatika.
the class P20050827Case method getProblematic.
/**
* @return A fat, 3x5, matrix with complex valued elements.
*/
public static ComplexMatrix getProblematic() {
final Normal tmpRand = new Normal(0.0, 9.9);
ComplexNumber tmpNmbr;
final int tmpRowDim = 3;
final int tmpColDim = 5;
final Array2D<ComplexNumber> tmpArray = Array2D.COMPLEX.makeZero(tmpRowDim, tmpColDim);
for (int i = 0; i < tmpRowDim; i++) {
for (int j = 0; j < tmpColDim; j++) {
tmpNmbr = ComplexNumber.makePolar(tmpRand.doubleValue(), tmpRand.doubleValue()).multiply(ComplexNumber.ONE);
tmpArray.set(i, j, tmpNmbr);
}
}
return ComplexMatrix.FACTORY.copy(tmpArray).enforce(DEFINITION);
}
use of org.ojalgo.random.Normal in project ojAlgo by optimatika.
the class GaussianProcessTest method testTutorial.
@Test
public void testTutorial() {
final GaussianField.Covariance<Double> tmpCovar = new GaussianField.Covariance<Double>() {
public void calibrate(final Collection<ComparableToDouble<Double>> observations, final Mean<Double> mean) {
}
public double invoke(final Double anArg1, final Double anArg2) {
return this.invoke(anArg1.doubleValue(), anArg2.doubleValue());
}
double invoke(final double anArg1, final double anArg2) {
final double tmpSF = 1.27;
final double tmpSN = 0.3;
final double tmpL = 1.0;
double retVal = tmpSF * tmpSF * PrimitiveFunction.EXP.invoke(-PrimitiveFunction.POW.invoke(anArg1 - anArg2, TWO) / (TWO * tmpL * tmpL));
if (anArg1 == anArg2) {
retVal += tmpSN * tmpSN;
}
return retVal;
}
};
final GaussianProcess tmpProc = new GaussianProcess(tmpCovar);
tmpProc.addObservation(-1.5, -1.6);
tmpProc.addObservation(-1.0, -1.1);
tmpProc.addObservation(-0.75, -0.4);
tmpProc.addObservation(-0.4, 0.1);
tmpProc.addObservation(-0.25, 0.5);
tmpProc.addObservation(0.0, 0.8);
final PrimitiveDenseStore tmpExpected = PrimitiveDenseStore.FACTORY.rows(new double[][] { { 1.7029, 1.423379254178694, 1.2174807940480699, 0.8807634427271873, 0.7384394292014367, 0.5236319646022823 }, { 1.423379254178694, 1.7029, 1.5632762838868954, 1.3472073239852407, 1.2174807940480699, 0.9782733010505065 }, { 1.2174807940480699, 1.5632762838868954, 1.7029, 1.5170744874003474, 1.423379254178694, 1.2174807940480699 }, { 0.8807634427271873, 1.3472073239852407, 1.5170744874003474, 1.7029, 1.5948565596534579, 1.4888943550870049 }, { 0.7384394292014367, 1.2174807940480699, 1.423379254178694, 1.5948565596534579, 1.7029, 1.5632762838868954 }, { 0.5236319646022823, 0.9782733010505065, 1.2174807940480699, 1.4888943550870049, 1.5632762838868954, 1.7029 } });
TestUtils.assertEquals(tmpExpected, tmpProc.getCovariances(), new NumberContext(8, 2));
final Normal tmpDistr = tmpProc.getDistribution(0.2);
TestUtils.assertEquals("Mean", 0.911277527445648, tmpDistr.getExpected(), 0.005);
TestUtils.assertEquals("Variance", 0.20604504349662636, tmpDistr.getVariance(), 0.005);
}
Aggregations