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(""); } }
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); } }