Beispiel #1
0
        public Microsoft.Research.Oslo.Vector Population(double t, Microsoft.Research.Oslo.Vector yv)
        {
            double[] y = yv;

            var a1 = 0.2d; var a2 = 0.15d; var b1 = 0.3d; var b2 = 0.2d;

            return(new Microsoft.Research.Oslo.Vector(
                       y[0] * (a1 - b1 * y[1]), y[1] * (b2 * y[0] - a2)
                       ));
        }
        private void initObs(OneDemExample calc)
        {
            pr  = calc;
            v0  = pr.Rebuild(pr.TimeSynch);
            sol = Ode.RK45(pr.TimeSynch, v0, pr.f, pr.dt).WithStepRx(0.01, out controller);
            controller.Pause();

            sol.ObserveOnDispatcher().Subscribe(sp => {
                vm.SolPointList.Update(sp);
                slider.Maximum = (double)(vm.SolPointList.Value.Count > 0 ? vm.SolPointList.Value.Count : 0);
            });
        }
        private void initObs(RobotDynamics calc)
        {
            pr = calc;
            v0 = pr.Rebuild(pr.TimeSynch);
            var dt  = 0.0001;
            var sol = Ode.RK45(pr.TimeSynch, v0, pr.f, dt).WithStepRx(0.001, out controller).StartWith(new SolPoint(pr.TimeSynch, v0)).Publish();

            controller.Pause();

            sol.ObserveOnDispatcher().Subscribe(sp => {
                vm.SolPointList.Update(sp);
                slider.Maximum = (double)(vm.SolPointList.Value.Count > 0 ? vm.SolPointList.Value.Count : 0);
            });
            sol.Connect();
        }
        private void initObs(Sph2D calc)
        {
            pr = calc;
            v0 = pr.Rebuild(pr.TimeSynch);
            //var dt = 0.0000001;
            var dt = 5 * 10E-6;

            sol = Ode.RK45(pr.TimeSynch, v0, pr.f, dt).WithStepRx(dt * 10, out controller);//.StartWith(new SolPoint(pr.TimeSynch,v0));
            controller.Pause();

            sol.ObserveOnDispatcher().Subscribe(sp => {
                vm.SolPointList.Update(sp);
                slider.Maximum = (double)(vm.SolPointList.Value.Count > 0 ? vm.SolPointList.Value.Count : 0);
            });
        }
Beispiel #5
0
        public Microsoft.Research.Oslo.Vector PopulationWithControl(double t, Microsoft.Research.Oslo.Vector yv)
        {
            double[] y = yv;

            var a1 = 0.2d; var a2 = 0.15d; var beta1 = 0.3d; var beta2 = 0.2d;
            var b1 = 0.78d; var b2 = 1 - b1;

            var c1 = 0.19d; var c2 = 1 - c1;
            var val = -y[2] * b1 * y[1] - y[3] * b2 * y[1] - c2;
            var sgn = (double)val / (Math.Sqrt(0.1d + val * val));
            var u   = sgn >= 0.0d ? 0.013 * sgn : 0.0d;

            return(new Microsoft.Research.Oslo.Vector(
                       y[0] * (a1 - beta1 * y[1]) - b1 * u * y[1], y[1] * (beta2 * y[0] - a2) - b2 * u * y[1],
                       -y[2] * a1 + y[2] * beta1 * y[1] - y[3] * y[1] * beta2 + c1,
                       y[2] * y[0] * beta1 + y[2] * b1 * u - y[3] * beta2 * y[0] + y[3] * a2 + y[3] * b2 * u));
        }
Beispiel #6
0
        private void initObs(Sph2D calc)
        {
            pr = calc;
            v0 = pr.Rebuild(pr.TimeSynch);
            //var dt = 0.0000001;
            var dt = 1000 * 1E-6;

            SPH2D_Ver3.dt = dt;
            sol           = Ode.RK45(pr.TimeSynch, v0, pr.f, dt).WithStepRx(dt * 10, out controller).StartWith(new SolPoint(pr.TimeSynch, v0));
            //sol = SPH2D_Ver3.CoolIntegration(calc as Sph2D_improoveIntegr).WithStepRx(dt * 100,out controller).StartWith(new SolPoint(pr.TimeSynch,v0));
            controller.Pause();

            sol.ObserveOnDispatcher().Subscribe(sp => {
                vm.SolPointList.Update(sp);
                slider.Maximum = (double)(vm.SolPointList.Value.Count > 0 ? vm.SolPointList.Value.Count : 0);
            });
        }