Тернарный поиск с использованием золотого сечения для поиска минимума выпуклой вниз функции
double gts(double l, double r, double eps) {
final double phi = (1 + Math.sqrt(5.0)) / 2;
final double resphi = 2 - phi;
double x1 = l + resphi * (r - l);
double x2 = r - resphi * (r - l);
double f1 = f(x1);
double f2 = f(x2);
do {
if (f1 < f2) {
r = x2;
x2 = x1;
f2 = f1;
x1 = l + resphi * (r - l);
f1 = f(x1);
} else {
l = x1;
x1 = x2;
f1 = f2;
x2 = r - resphi * (r - l);
f2 = f(x2);
}
} while (Math.abs(r - l) > eps);
return (x1 + x2) / 2
}
Комментариев нет:
Отправить комментарий