Пример #1
0
        private static double BisectExhaustMass(double deltaVelocity, Func <double, double> dryMassFunc, double exhaustVelocity, double minFuelMass, double maxFuelMass, double deltaVelocityTolerance = 0.1, int maxIterations = 100)
        {
            var fuelMassRange = maxFuelMass - minFuelMass;

            var optimumBurnedFuelRatio = Bisector.Find(
                deltaVelocity,
                deltaVelocityTolerance,
                ratio =>
            {
                var burnedFuelMass = minFuelMass + fuelMassRange * ratio;

                // Check how fast we can get with this amount of fuel burned
                var dryMass             = dryMassFunc(burnedFuelMass);
                var deltaVelocityBudget = Physics.GetDeltaVelocityBudget(dryMass, burnedFuelMass, exhaustVelocity);

                return(deltaVelocityBudget);
            }, maxIterations);

            return(minFuelMass + optimumBurnedFuelRatio * fuelMassRange);
        }
Пример #2
0
 public TestBisector()
 {
     bi = new Bisector(new Bisector.FunctionDelegate(TestFunctions.xMinusLogXMinusTwo));
 }