public static void applyMethod(double eps)
        {
            List <double> coeffs = new List <double>()
            {
                -55, 119, 280, -634, -209, 514, 131, 3
            };

            List <double> coeffsA = decreaseCoeffs(coeffs);
            List <double> coeffsB = new List <double>(new double[coeffs.Count]);

            int n = coeffs.Count - 1, p = 0;

            while (!stopCriterion(coeffsA, coeffsB, eps))
            {
                p++;
                for (int k = 0; k <= n; k++)
                {
                    double sum = 0;
                    for (int j = 1; j <= Math.Min(k, n - k); j++)
                    {
                        sum += Math.Pow(-1, j) * coeffsA[k - j] * coeffsA[k + j];
                    }

                    coeffsB[k] = Math.Pow(coeffsA[k], 2) + 2 * sum;
                }

                coeffsA = decreaseCoeffs(coeffsB);
            }

            List <double> roots = new List <double>(new double[coeffs.Count - 1]);
            double        root = 0;

            for (int i = 1; i < coeffsA.Count; i++)
            {
                root = Math.Pow(coeffsA[i] / coeffsA[i - 1], Math.Pow(2, -p));

                if (Math.Abs(Variant.polynom(root)) < Math.Abs(Variant.polynom(-root)))
                {
                    roots[i - 1] = root;
                }
                else
                {
                    roots[i - 1] = -root;
                }
            }

            foreach (var r in roots)
            {
                Console.WriteLine("For: " + r + ".");
                double a = r - 0.1;
                double b = r + 0.1;
                SimpleIterationMethod.applyMethod(Variant.polynom, a, b, eps);
                Console.WriteLine("");
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            int userInput;

            Console.WriteLine("Choose what you want:\n" +
                              "0. Exit.\n" +
                              "1. First equation in Horde Method.\n" +
                              "2. Second equation in Steffensen Method.\n" +
                              "3. Second equation in Simple Iterations Method.\n" +
                              "4. Output the roots of the algebraic equation by the Lobachevsky method (clarifying - SIM)");
            int.TryParse(Console.ReadLine(), out userInput);

            Console.WriteLine("Enter epsilon or leave empty [ by default eps = 10^(-7) ]:");
            string epsInput = Console.ReadLine();
            double eps = string.IsNullOrEmpty(epsInput) ? Math.Pow(10, -7) : Convert.ToDouble(epsInput);
            double a, b;

            while (userInput != 0)
            {
                switch (userInput)
                {
                case 0:
                    Console.Clear();
                    Console.WriteLine("Have a nice day! :)");
                    Environment.Exit(0);
                    break;

                case 1:
                    Console.Clear();

                    Console.WriteLine("Enter interval start:");
                    a = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.GetCultureInfo("en-US"));
                    Console.WriteLine("Enter interval end:");
                    b = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.GetCultureInfo("en-US"));

                    if (!Auxiliary.isInputForFuncValid(Variant.f1, a, b))
                    {
                        break;
                    }
                    HordeMethod.applyMethod(Variant.f1, eps, a, b);
                    break;

                case 2:
                    Console.Clear();

                    Console.WriteLine("Enter interval start:");
                    a = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.GetCultureInfo("en-US"));
                    Console.WriteLine("Enter interval end:");
                    b = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.GetCultureInfo("en-US"));

                    if (!Auxiliary.isInputForFuncValid(Variant.f2, a, b))
                    {
                        break;
                    }
                    NewtonMethod.applyMethod(Variant.f2, a, b, eps);
                    break;

                case 3:
                    Console.Clear();

                    Console.WriteLine("Enter interval start:");
                    a = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.GetCultureInfo("en-US"));
                    Console.WriteLine("Enter interval end:");
                    b = Convert.ToDouble(Console.ReadLine(), System.Globalization.CultureInfo.GetCultureInfo("en-US"));
                    if (!Auxiliary.isInputForFuncValid(Variant.f2, a, b))
                    {
                        break;
                    }
                    SimpleIterationMethod.applyMethod(Variant.f2, a, b, eps);

                    break;

                case 4:
                    Console.Clear();
                    LobachevskyMethod.applyMethod(eps);
                    break;

                default:
                    Console.Clear();
                    Console.WriteLine("Enter correct number of action!");
                    int.TryParse(Console.ReadLine(), out userInput);
                    break;
                }

                Console.WriteLine("\n---------------------------------------------------->>>>>\n" +
                                  "Choose what you want:\n" +
                                  "0. Exit.\n" +
                                  "1. First equation in Horde Method.\n" +
                                  "2. Second equation in Steffensen's Method.\n" +
                                  "3. Second equation in Simple Iterations Method.\n" +
                                  "4. Output the roots of the algebraic equation by the Lobachevsky method.");
                int.TryParse(Console.ReadLine(), out userInput);
            }
        }