private void buttonNewtonsMethod_Click(object sender, EventArgs e) { double epsilon; if (!double.TryParse(textBoxEpsilonMultidimentional.Text, out epsilon)) { MessageBox.Show("Неверное значение ε!"); return; } int error; double[] variables; if (!TryGetMultidimentionalPoint(out variables, out error)) { MessageBox.Show($"Неверное значение переменной в строке {error}!"); return; } MatrixNamespace.Matrix x_0 = new MatrixNamespace.Matrix(variables.Count(), variables); Optimizer opt = new Optimizer(parser); Tuple <MatrixNamespace.Matrix, double> result; try { result = opt.NewtonsMethod(x_0, epsilon); } catch (MethodDivergencyException ex) { MessageBox.Show(ex.Message); return; } textBoxMultidimentionalX.Text = $"{ result.Item1:F5}"; textBoxMultidimentionalFx.Text = $"{ result.Item2:F5}"; }
private void buttonSingledimantionalNewtonsMethod_Click(object sender, EventArgs e) { double x, epsilon; if (!double.TryParse(textBoxNewtonEpsilon.Text, out epsilon)) { MessageBox.Show("Неверное значение ε!"); return; } if (!double.TryParse(textBoxNewtonsX.Text, out x)) { MessageBox.Show("Неверное значение x_0!"); return; } if (!CheckRange()) { return; } BuildGraph(parser.Evaluate, true, a, b, epsilon, 5); MatrixNamespace.Matrix x_0 = new MatrixNamespace.Matrix(1, 5); x_0[0] = x; Optimizer opt = new Optimizer(parser); var result = opt.NewtonsMethod(x_0, epsilon); DrawPoint(result.Item1[0], result.Item2); textBoxMin.Text = $"{ result.Item1[0]:F5}"; textBoxFmin.Text = $"{ result.Item2:F5}"; }
private void buttonPenaltyMethod_Click(object sender, EventArgs e) { int error; double[] variables; if (!TryGetMultidimentionalPoint(out variables, out error)) { MessageBox.Show($"Неверное значение переменной в строке {error}!"); return; } MatrixNamespace.Matrix x_0 = new MatrixNamespace.Matrix(variables.Count(), variables); double epsilon; if (!double.TryParse(textBoxEpsilonMultidimentional.Text, out epsilon)) { MessageBox.Show("Неверное значение ε!"); return; } double c; if (!double.TryParse(textBoxC.Text, out c)) { MessageBox.Show("Неверное значение c!"); return; } FunctionParser penaltyFunc; try { penaltyFunc = new FunctionParser(textBoxPenaltyFunc.Text); } catch (Exception) { MessageBox.Show("Не удалось преобразовать строку в функцию, проверьте ввод."); return; } Optimizer opt = new Optimizer(parser); Tuple <MatrixNamespace.Matrix, double> result; try { result = opt.PenaltyMethod(x_0, penaltyFunc, epsilon, c); } catch (MethodDivergencyException ex) { MessageBox.Show(ex.Message); return; } textBoxMultidimentionalX.Text = $"{ result.Item1:F5}"; textBoxMultidimentionalFx.Text = $"{ result.Item2:F5}"; }