Pesquisa ternária
Precisamos de pesquisa ternária para encontrar o máximo ou mínimo de uma função unimodal no segmento 
[l, r]. Uma função é unimodal quando possui um extremo em um segmento.
A busca pelos valores máximos de uma função é frequentemente utilizada para problemas de otimização. Por exemplo, precisamos encontrar o ângulo máximo possível de um triângulo retângulo, no qual a área será maior.  Para fazer isso, vamos percorrer os ângulos de 
0 a 
90, e neste segmento procuramos uma área que primeiro aumentará e depois diminuirá, ou seja, a função será unimodal.
 
Como funciona
O princípio de operação é semelhante à pesquisa binária, mas podemos ter um caso ao dividir o segmento ao meio, quando o meio do segmento cai exatamente no extremo e & nbsp; não obteremos um resultado claro.
Portanto, para evitar tal caso, é necessário dividir o segmento não em duas partes, mas em três, e descartamos a parte em que não há extremo, etc., até que os limites convirjam para o resultado.
duplo f (duplo hipo, duplo alfa) {
    alfa = (alfa *M_PI)/180;
    retorno 0,5 * hipo * hipo * cos(alfa) * sin(alfa);
}
int principal() {
    duplo l = 0;
    duplo r = 90;
    EPS duplo = 1e-6;
    dupla hipo = 100;
    enquanto (r - l >=EPS) {
        duplo m1 = l + (r - l) / 3;
        duplo m2 = r - (r - l) / 3;
        if (f(hipo, m1) < f(hipo, m2)) {
            l=m1;
        }
        outro {
            r=m2;
        }
    }
    
    fora<< ((l + r) / 2);
    retorna 0;
}
A pesquisa ternária pode ser modificada usando  método da seção áurea, o que aumenta a taxa de convergência em cerca de 2 vezes.
 
Fontes
1)  pesquisa ternária e proporção áurea
2)  pesquisa ternária