М31, лучше опишите алгоритм. Я понимаю вот это:
double K=0.1;
do
{
d=b-a;
c=(a+b)/2;
d1=K*(b-a)/2;
x1=c-d1; x2=c+d1;
y1=f(x1); y2=f(x2);
if (y1<y2) {
b=x2;
}
if (y1>y2) {
a=x1;
}
if (y1==y2) {
a=x1; b=x2;
};
}
while (d>=epsilon);
так:
"повторяем следующий набор действий до тех пор, пока длина отрезка не стала меньше Эпсилон:
- выбираем 2 точки, равноотстоящие от центра интервала на расстояние, равное 0,05 длины интервала
- если значение в первой точке меньше, чем во второй - в качестве интервала на следующей итерации выбираем расстояние от начала интервала до второй точки
- если значение в 1 точке больше - выбираем интервал от 1 точки до конца интервала
- если значения равны, на следующей итерации интервал берём от 1 до 2 точки.
Мне кажется, максимум, на что способен данный алгоритм - нахождение локального минимума функции... Он был разработан своими силами, или это интерпретация одного из алгоритмов вычислительной математики?