/// <summary> /// Test bisection method. /// </summary> private static void TestBisec() { PrintMessage("Test Bisec method:\n\n", ConsoleColor.Green); Console.WriteLine("Find root of equation Sin(x) = 0," + $" on the segment [{Left}, {Right}]:" + Environment.NewLine); // Types of functions. Function[] funcsArr = { Math.Sin, SinX, delegate(double x) { return(Math.Sin(x)); }, x => Math.Sin(x) }; // Types of messages. string[] messages = { "Finding a root using a library function: ", "Finding a root using a static method explicitly defined in the program: ", "Finding a root using an anonymous method: ", "Finding a root using a lambda expression: " }; // Test. for (var i = 0; i < 4; i++) { PrintMessage(messages[i]); PrintMessage($"x = {NumMeth.Bisec(Left, Right, EpsX, EpsY, funcsArr[i])}\n", ConsoleColor.Yellow); } Console.WriteLine(); }
static void Main(string[] args) { try { double a, b, epsX, epsY; Console.Write("Введите левую грвницу интервала: "); double.TryParse(Console.ReadLine(), out a); Console.Write("Введите правую грвницу интервала: "); double.TryParse(Console.ReadLine(), out b); Console.Write("Введите точность по абсциссе: "); double.TryParse(Console.ReadLine(), out epsX); Console.Write("Введите точность по ординате: "); double.TryParse(Console.ReadLine(), out epsY); Console.WriteLine($"Корень функции: {NumMeth.Bisec(a, b, epsX, epsY, Math.Log)}"); Console.WriteLine($"Корень функции: {NumMeth.Bisec(a, b, epsX, epsY, Log)}"); Console.WriteLine($"Корень функции: {NumMeth.Bisec(a, b, epsX, epsY, delegate (double x) { return Math.Log(x); })}"); Console.WriteLine($"Корень функции: {NumMeth.Bisec(a, b, epsX, epsY, x => Math.Log(x))}"); Console.WriteLine($"Минимум функции cos(x): {NumMeth.Optimum_1(x => Math.Cos(x), 3, 6, 0.001, 0.001)}"); Console.WriteLine($"Минимум функции x*(x*x-2)-5: {NumMeth.Optimum_1(x => x * (x * x - 2) - 5, 0, 1, 0.001, 0.001)}"); Console.WriteLine($"Минимум функции -Sin(x)-Sin(3*x)/3 : {NumMeth.Optimum_1(x => -Math.Sin(x) - Math.Sin(3 * x) / 3, 0, 1, 0.001, 0.001)}"); } catch (Exception e) { Console.WriteLine(e.Message); } }