// Відділення коренів на відрізки public static string RootSegments(int[] odds, ref bool flag_answer) { string result = ""; double a = -10000; while (a < 10000) // дивимося відрізки від -10000 до 10000 із кроком 0.2 { if (Equation.EquationFunction(odds, a) * Equation.EquationFunction(odds, a + 0.2) < 0) // якщо на кінцях відрізка знак значення функціїї розрізняється { result += $"[{Math.Round(a, 5)}, {Math.Round(a + 0.2, 5)}]\n"; // вивести цей відрізок flag_answer = true; // корінь існує } a += 0.2; } if (flag_answer == false) { return("Нет корней."); } else { return(result); } }
// Кнопка для розв'язання рівняння private void Calculate_Click(object sender, RoutedEventArgs e) { odds = new int[number]; for (int i = 0; i < number; i++) { try { odds[i] = Convert.ToInt32(oddBoxes[i].Text); } catch { MessageBox.Show("Некорректно введены данные!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } double a = -10000; while (a < 10000) { if (Equation.EquationFunction(odds, a) * Equation.EquationFunction(odds, a + 0.2) < 0) { flag_answer = true; } a += 0.2; } if (flag_answer) { double num1 = 0, num2 = 0; if (choice == 1) { try { num1 = Convert.ToDouble(input1.Text); num2 = Convert.ToDouble(input1_Copy.Text); } catch { MessageBox.Show("Некорректно введены данные!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } answerBox.Text = Equation.HalfDivide(num1, num2, odds); } else if (choice == 2) { try { num1 = Convert.ToDouble(input1.Text); } catch { MessageBox.Show("Некорректно введены данные!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } answerBox.Text = Equation.Newton(num1, odds); } else if (choice == 3) { try { num1 = Convert.ToDouble(input1.Text); num2 = Convert.ToDouble(input1_Copy.Text); } catch { MessageBox.Show("Некорректно введены данные!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } answerBox.Text = Equation.Secant(num1, num2, odds); } } else { answerBox.Text = "Нет корней."; } }