public static void Main()
Console.WriteLine("Введите функцию одной переменной f(x):");
string function = Console.ReadLine();
Console.WriteLine("Введите начальную точку поиска:");
double start = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите конечную точку поиска:");
double end = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите шаг поиска:");
double step = Convert.ToDouble(Console.ReadLine());
double minValue = double.MaxValue;
for (double x = start; x <= end; x += step)
double currentValue = EvaluateFunction(function, x);
if (currentValue < minValue)
Console.WriteLine("Минимальное значение функции f(x) = " + minValue + " при x = " + minPoint);
public static double EvaluateFunction(string function, double x)
Expression e = new Expression(function);
var result = e.Evaluate();
if (result is int || result is uint || result is long || result is ulong || result is double)
return Convert.ToDouble(result);
else if (result is decimal)
return Convert.ToDouble((decimal)result);
throw new InvalidOperationException("Неподдерживаемый тип результата вычисления функции.");
Console.WriteLine("Ошибка при вычислении функции: " + ex.Message);