Ошибка при нахождении точки минимума методом дихотомии

Я пытался реализовать алгоритм дихотомии, представленный на блоксхеме ниже: введите сюда описание изображениясхеме ниже:

Чтобы удостовериться, что программа работает как надо, я воспользовался сервисом сайта маth.semestr.ru и сравнил результаты вычислений на нем при f(x) = 3*x-x^2-1, при a = -1, b = 5, шаге приращения и точности 0.1(приняв за истину, что на сайте реализовали алгоритм правильно) и моей программы выяснилось, что в моей реализации по какой-то причине неверно вычисляется результат. Код программы:

// See https://aka.ms/new-console-template for more information
DichotomyMethod(-1, 5, 0.1, 0.1, -1); 

double F(double x)
{
    return 3 * x - Math.Pow(x, 2) - 1;

}
void DichotomyMethod(double a, double b, double e, double h, int c)
{   //a, b: концы отрезка, где происходит поиск точки экстремума
    //e: точность 
    //h: шаг приращения 
    //c: константа. При поиске минимума 1, максимума -1. 

    double fm, x, f1, f2;
    while (Math.Abs(b - a) > e)
    {
        x = (a + b) / 2;
        f1 = F(x - h);
        f2 = F(x + h);
        if (c * f1 < c * f2)
        {
            b = x;
        }
        else
        {
            a = x;
        }
    }
    x = (b + a) / 2;
    fm = F(x);
    Console.WriteLine("x = " + x + "F(x) = " + F(x)); 
}

Ответы (0 шт):