Search in sources :

Example 6 with Normal

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);
}
Also used : BasicMatrix(org.ojalgo.matrix.BasicMatrix) NumberContext(org.ojalgo.type.context.NumberContext) ComplexNumber(org.ojalgo.scalar.ComplexNumber) Normal(org.ojalgo.random.Normal) BigDecimal(java.math.BigDecimal) Test(org.junit.jupiter.api.Test) Tag(org.junit.jupiter.api.Tag)

Example 7 with Normal

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);
}
Also used : ComplexNumber(org.ojalgo.scalar.ComplexNumber) Normal(org.ojalgo.random.Normal)

Example 8 with Normal

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);
}
Also used : Mean(org.ojalgo.random.process.GaussianField.Mean) Collection(java.util.Collection) NumberContext(org.ojalgo.type.context.NumberContext) Normal(org.ojalgo.random.Normal) ComparableToDouble(org.ojalgo.type.keyvalue.ComparableToDouble) PrimitiveDenseStore(org.ojalgo.matrix.store.PrimitiveDenseStore) Test(org.junit.jupiter.api.Test)

Aggregations

Normal (org.ojalgo.random.Normal)8 Test (org.junit.jupiter.api.Test)5 Tag (org.junit.jupiter.api.Tag)3 PrimitiveDenseStore (org.ojalgo.matrix.store.PrimitiveDenseStore)2 ComplexNumber (org.ojalgo.scalar.ComplexNumber)2 NumberContext (org.ojalgo.type.context.NumberContext)2 BigDecimal (java.math.BigDecimal)1 Collection (java.util.Collection)1 RecoverableCondition (org.ojalgo.RecoverableCondition)1 Primitive64Array (org.ojalgo.array.Primitive64Array)1 BasicMatrix (org.ojalgo.matrix.BasicMatrix)1 LogNormal (org.ojalgo.random.LogNormal)1 Normal1D (org.ojalgo.random.Normal1D)1 SampleSet (org.ojalgo.random.SampleSet)1 Mean (org.ojalgo.random.process.GaussianField.Mean)1 ComparableToDouble (org.ojalgo.type.keyvalue.ComparableToDouble)1