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