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)); }
public static int FiberCoordinateIndex(ProductManifold stateSpace) { return(stateSpace.CoordinateIndex((int)ManifoldProductOrder.Fiber)); }
public static int BaseCoordinateIndex(ProductManifold stateSpace) { return(stateSpace.CoordinateIndex((int)ManifoldProductOrder.Base)); }