Esempio n. 1
0
        //calculates the optimization nodes and generates the related node selector
        private NodeSelector GenerateSelector(OptimizationOptions options)
        {
            List <Vector2D> rightNodes  = new List <Vector2D>(options.RightIntervals);
            Vector2D        currentNode = initialCondition;

            for (int i = 0; i < options.RightIntervals; i++)
            {
                for (int j = 0; j < options.RightIntervalsSpan; j++)
                {
                    currentNode = Iteration(currentNode, discretizer.CalculateRightStep(currentNode));
                }
                rightNodes.Add(currentNode);
            }

            List <Vector2D> leftNodes = new List <Vector2D>(options.LeftIntervals);

            currentNode = initialCondition;
            for (int i = 0; i < options.LeftIntervals; i++)
            {
                for (int j = 0; j < options.LeftIntervalsSpan; j++)
                {
                    currentNode = Iteration(currentNode, discretizer.CalculateLeftStep(currentNode));
                }
                leftNodes.Add(currentNode);
            }

            return(options.SelectorGenerator(initialCondition, rightNodes, leftNodes));
        }
Esempio n. 2
0
 private HeunSolver(ODEFunction function, Vector2D initialCondition, IDiscretizer discretizer, OptimizationOptions options, int maxIterations = DEFAULT_MAX_ITERATIONS) :
     base(function, initialCondition, discretizer, options, maxIterations)
 {
 }
Esempio n. 3
0
 public static Function MakeSolution(ODEFunction argument, Vector2D initialCondition, OptimizationOptions options, int maxIterations = DEFAULT_MAX_ITERATIONS)
 {
     return(new HeunSolver(argument, initialCondition, new UniformDiscretizer(DEFAULT_DISCRETIZER_STEP), options, maxIterations).Solve);
 }
Esempio n. 4
0
 public static Function MakeSolution(ODEFunction argument, Vector2D initialCondition, IDiscretizer discretizer, OptimizationOptions options, int maxIterations = DEFAULT_MAX_ITERATIONS)
 {
     return(new HeunSolver(argument, initialCondition, discretizer, options, maxIterations).Solve);
 }
Esempio n. 5
0
 public static Function RungeKuttaSolve(this ODEFunction argument, Vector2D initialCondition, OptimizationOptions options, int maxIterations = StandardODESolver.DEFAULT_MAX_ITERATIONS)
 {
     return(RungeKuttaSolver.MakeSolution(argument, initialCondition, options, maxIterations));
 }
Esempio n. 6
0
 public static Function HeunSolve(this ODEFunction argument, Vector2D initialCondition, IDiscretizer discretizer, OptimizationOptions options, int maxIterations = StandardODESolver.DEFAULT_MAX_ITERATIONS)
 {
     return(HeunSolver.MakeSolution(argument, initialCondition, discretizer, options, maxIterations));
 }
Esempio n. 7
0
 protected StandardODESolver(ODEFunction function, Vector2D initialCondition, IDiscretizer discretizer, OptimizationOptions options, int maxIterations = DEFAULT_MAX_ITERATIONS) :
     this(function, initialCondition, discretizer, maxIterations)
 {
     nodeSelector = GenerateSelector(options);
 }