Тернарный поиск с использованием золотого сечения для поиска минимума выпуклой вниз функции
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 }
Комментариев нет:
Отправить комментарий