Exemple #1
0
        /// <summary>
        /// Конструктор по умолчанию
        /// </summary>
        public Form1()
        {
            InitializeComponent();

            this.FormBorderStyle = FormBorderStyle.FixedSingle;

            this.Axis();
            this.Plot(F, Color.Red);

            double e = 0.001
            , e2     = 0.01
            , L      = 1.0 / (4.0 * e) + 1;

            var result = MathStrategy.UniformSearchByBiryukov(F, xmin, xmax, L, e, e2);

            MessageBox.Show($"e={e}, e2={e2}\nМетода равномерного перебора поиска глобального минимума для эпсилон-липшицевых функций:\nh={result.h.ToString("F6")}, x={result.x.ToString("F6")}, F={result.F.ToString("F6")}, n={result.n}, t={result.time}\n{result}");
        }
        public void OneDimensionF1(double a, double b, double e, double e2)
        {
            // Рассматриваемая функция
            double F(double x)
            => Math.Abs(x) + Math.Sqrt(Math.Abs(Math.Sin(x)));

            // ожидаемый результат
            double fMin = 0;

            // полученное решение
            var result = MathStrategy.UniformSearchByBiryukov(
                F,
                a, b,       // [a;b]
                L(e),       // L=L(e)=1/(4e)
                e, e2);     // e, e*

            // Проверка прохождения теста
            (result.F - fMin).Should().BeLessOrEqualTo(e2);
        }