public StochasticManifoldPoint Apply(IManifoldPoint point, double time)
        {
            var productPoint = (ProductManifold.Point)point;

            var answerFactors    = new List <IManifoldPoint>(_factors.Count);
            var answerCovariance = new SymmetricMatrix(_stateSpace.Dimension);

            for (int i = 0; i < _factors.Count; i++)
            {
                var stochasticFactor = _factors[i].Apply(productPoint.Factors[i], time);

                answerFactors.Add(stochasticFactor.Expectation);
                answerCovariance.SetSubmatrix(_stateSpace.CoordinateIndex(i), stochasticFactor.Covariance);
            }

            return(new StochasticManifoldPoint(new ProductManifold.Point(answerFactors.AsReadOnlyList()), answerCovariance));
        }
예제 #2
0
 public static int FiberCoordinateIndex(ProductManifold stateSpace)
 {
     return(stateSpace.CoordinateIndex((int)ManifoldProductOrder.Fiber));
 }
예제 #3
0
 public static int BaseCoordinateIndex(ProductManifold stateSpace)
 {
     return(stateSpace.CoordinateIndex((int)ManifoldProductOrder.Base));
 }