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)); }
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)); }