예제 #1
0
        // Відділення коренів на відрізки
        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);
            }
        }
예제 #2
0
        // Кнопка для розв'язання рівняння
        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 = "Нет корней.";
            }
        }