コード例 #1
0
        public void TestRandomizeEpsilonIsApplied()
        {
            int             count     = 1000;
            double          epsFactor = 0.2;
            double          maxAbs    = 1.0;
            Vector <double> vec       = new DenseVector(count);

            for (int i = 0; i < count; i++)
            {
                vec[i] = MathHelper.RandomExceptZero(maxAbs, epsFactor);
            }

            double min = vec.AbsoluteMinimum();
            double max = vec.AbsoluteMaximum();

            Assert.IsTrue(min >= epsFactor * maxAbs);
            Assert.IsTrue(max <= maxAbs);
        }
コード例 #2
0
        public static Tuple <int, int, double> DenseMatrixAbsoluteMinimumPosition(DenseMatrix dm)
        {
            if (dm == null)
            {
                return(new Tuple <int, int, double>(0, 0, 0.0d));
            }

            List <Tuple <int, double> > rowMinValues = new List <Tuple <int, double> >();

            var rowEnum = dm.EnumerateRowsIndexed();

            foreach (Tuple <int, Vector <double> > curRow in rowEnum)
            {
                DenseVector curDV = (DenseVector)curRow.Item2;
                rowMinValues.Add(new Tuple <int, double>(curDV.AbsoluteMinimumIndex(), curDV.AbsoluteMinimum()));
            }

            double      minValue    = rowMinValues.Min(tpl => tpl.Item2);
            int         minValueRow = rowMinValues.FindIndex(tpl => tpl.Item2 == minValue);
            DenseVector minRow      = (DenseVector)dm.Row(minValueRow);



            return(new Tuple <int, int, double>(minValueRow, minRow.AbsoluteMinimumIndex(), minValue));
        }