public static StochasticManifoldPoint Apply(this IStochasticProcess process, StochasticManifoldPoint stochasticPoint, double time)
        {
            var diff       = process.ExpectationDifferential(stochasticPoint.Expectation, time);
            var prediction = process.Apply(stochasticPoint.Expectation, time);

            return(new StochasticManifoldPoint(prediction.Expectation, stochasticPoint.Covariance.Conjugate(diff) + prediction.Covariance));
        }
예제 #2
0
        public OSquareMatrix ExpectationDifferential(IManifoldPoint point, double time)
        {
            var state = new State(point);

            var basePoint = _baseProcess.Apply(state.BasePoint, time);

            var baseDifferential  = _baseProcess.ExpectationDifferential(state.BasePoint, time);
            var mixedDifferential = MixedDifferential(state, basePoint.Expectation, baseDifferential, time);
            var fiberDifferential = FiberDifferential(state, basePoint.Expectation, time);

            var answer = new SquareMatrix(_stateSpace.Dimension);

            answer.SetSubmatrix(0, 0, baseDifferential);
            answer.SetSubmatrix(_baseProcess.StateSpace.Dimension, 0, mixedDifferential);
            answer.SetSubmatrix(_baseProcess.StateSpace.Dimension, _baseProcess.StateSpace.Dimension, fiberDifferential);

            return(answer);
        }
 public OMatrix ExpectationDifferential(IManifoldPoint point)
 {
     return(_process.ExpectationDifferential(point, _time));
 }