Nas últimas semanas, só se fala de inteligência artificial, agentes, prompts, MCPs... Os executivos acalentam há décadas o sonho de colocar os programadores no olho na rua e delegar escrita de software à secretária, e esse povo realmente acha que "agora vai".
Mas o grande lance para um prompt de IA funcionar bem, é que você deve saber especificar muito bem o que deseja, expressando-se de forma clara e inequívoca. Você deve orientar o agente de IA a navegar seu projeto, e faz isso simplesmente escrevendo texto em linguagem natural, usando Markdown.
Há décadas tentamos forçar os programadores a escrever documentação, e agora temos o argumento perfeito para torcer o braço deles. Tudo tem um lado bom!
E essa história de especificar bem um problema, e deixar a IA fazer o resto, me lembrou de como os matemáticos deduziram a fórmula da catenária, quase em seguida à invenção do cálculo no final do século XVII.
O cálculo era a "IA" da época, um método quase milagroso para modelar e prever fenômenos físicos, e que (na época) ninguém sabia direito como funcionava, apenas viam que aparentemente funcionava. O pré-requisito é modelar o problema corretamente.
Este é interessante justamente pela descrição do problema, que não é nada do outro mundo, no fundo é Dinâmica do ensino médio, porém muito bem utilizada.
Catenária é a curva formada por um cabo, corda ou corrente suspensa por duas extremidades. De varais a linhas de alta tensão, catenárias estão por toda parte.
Qual a função matemática que traça essa mesma curva, se é que existe uma?
A curva parece uma parábola, de fato os engenheiros usam aproximação parabólica em muitas aplicações práticas, mas não é exatamente uma parábola. Por muitos séculos sua fórmula foi um mistério.
Para modelar o problema, considere que o cabo é como uma corrente de bicicleta, formada por inúmeros elos ou segmentos, rígidos e pequenos. (A propósito, a palavra "catenária" vem do latim "cadena", que significa justamente "corrente".)
Considere um segmento na parte mais baixa da catenária. Temos três forças atuando sobre ele:
T0 = tensão puxando o segmento para a esquerda T = tensão puxando o segmento para a direita e para cima P = peso do segmento, puxando para baixo
Uma vez que o segmento está parado no lugar, a soma vetorial destas três forças tem de ser igual a zero. Para lidar apenas com números em vez de vetores, precisamos considerar separadamente os componentes horizontais (eixo X) e verticais (eixo Y) das forças.
As forças de tensão de um cabo atuam sempre na direção longitudinal do cabo. Presumimos que T0 é a tensão no ponto mais baixo, onde o próximo segmento à esquerda ainda está perfeitamente horizontal, portanto
T0x = T0 T0y = zero
No outro lado, o próximo segmento à direita não está mais na horizontal, ele puxa um pouco para cima, então T deve ser decomposto pelo ângulo Θ desse próximo segmento:
Tx = T.cos(Θ) Ty = T.sin(Θ)
Se a soma vetorial é zero, as somas das forças horizontais e verticais também devem ser zero. Ora, as únicas forças horizontais sobre o segmento em questão são T0 e Tx, logo,
T0 = Tx = T.cos(Θ)
Isto nos permite afirmar desde já que a componente horizontal da tensão do cabo é igual em qualquer ponto da catenária, e ela é ditada pela distância entre os suportes do cabo.
Por outro lado, P e Ty são as únicas forças verticais atuando sobre o segmento (o que também significa que seu peso é sustentado por apenas um lado). Portanto,
P = Ty = T.sin(Θ)
Uma pequena manipulação trigonométrica:
P = T.sin(Θ) P = T.cos(Θ).tan(Θ) pois tan(Θ) = sin(Θ)/cos(Θ) P = T0.tan(Θ) pois T0 = T.cos(Θ)
O peso P do segmento é o produto da aceleração da gravidade (g) pela massa específica do cabo µ (em quilos por metro, se fizermos uso de unidades SI) e pelo comprimento do segmento (s):
µ.g.s = T0.tan(Θ)
Aqui vamos entrar com o primeiro truque de cálculo propriamente dito. A tangente do ângulo de subida de uma função é simplesmente a derivada da função. Se f(x) é a função da catenária, que estamos tentando (re)descobrir,
µ.g.s = T0.f'(x)
Na demonstração clássica da fórmula, as constantes µ, g e T0 são reunidas num único fator k, que descreve a catenária como uma razão entre o peso e a tensão do cabo:
k = µ.g / T0 f'(x) = k.s
Temos aqui uma primeira equação diferencial, que diz algo sobre a catenária: a derivada (e portanto o ângulo de subida) é proporcional ao comprimento do cabo em cada segmento.
Porém, temos duas incógnitas: a função f(x), e o valor de "s". Sabemos que o comprimento do segmento é ditado por f(x), mas como prosseguir?
Aqui entramos com um segundo truque de cálculo. O "comprimento do arco", ou seja, o comprimento da linha descrita por uma função, é uma integral com a seguinte fórmula:
s = ∫√(1+f'(x)²) dx
Essa integral é basicamente a aplicação do teorema de Pitágoras a cada segmento microscópico de uma curva, somando todas as pequenas hipotenusas para achar o comprimento total.
Para calcular esta integral, precisaríamos definir os valores de x onde o segmento de cabo começa e termina. Mas não queremos fazer isto, então tomamos a derivada do comprimento de arco:
s'(x) = √(1+f'(x)²)
Para unir as duas equações, aumentamos o grau da primeira, e fazemos a troca:
f'(x) = k.s f''(x) = k.s'(x) f''(x) = k.√(1+f'(x)²) fazendo z(x) = f'(x), z'(x) = k.√(1+z(x)²)
Agora temos uma equação diferencial de primeiro grau e com uma única incógnita, que se pode resolver com as regras do cálculo. A derivação completa pode ser encontrada aqui e a função que procuramos é
f(x) = cosh(kx) / k
Mas, na minha opinião, a parte interessante não é a derivação. O filé é a modelagem do problema, começando do basicão, com forças e tensões, até chegar numa equação diferencial que a "IA do século XVII" pode resolver mecanicamente.
Ponte suspensa é o que o nome diz que é. O corpo da ponte é sustentado por estais verticais, que estão ancorados numa catenária. Quem realmente sustenta tudo são os palanques da catenária.
Em geral, o corpo da ponte é suspenso por cabos verticais, dispostos regularmente no sentido horizontal. A curva descrita pelo cabo de sustentação desse tipo de ponte não é uma catenária. É uma parábola.
Isso acontece porque (desprezando-se o peso próprio do cabo de sustentação) o peso suportado pelo cabo não depende da curva f(x); depende apenas do comprimento horizontal, ou seja, x.
Retomando o raciocínio anterior a partir das equações
f'(x) = k.s f''(x) = k.s'(x)
No caso da ponte suspensa, "s" é apenas o comprimento horizontal do segmento de ponte, sustentada pelo respectivo segmento de cabo. Portanto, s(x)=x e s'(x)=1, o que nos dá
f''(x) = k.s'(x) f''(x) = k pois s'(x)=1
A solução é uma função f(x) quadrática, que descreve uma parábola.
Cálculo das variações é um "resolvedor" ainda mais poderoso. Ele permite encontrar a função que minimiza uma certa equação diferencial, ou seja, produz o menor valor possível, mas ainda sendo uma função bem-comportada.
Para ser honesto, é algo que eu sei mais "para que serve" do que "como funciona". Mas é interessante saber que existe. Novamente, é um dispositivo muito poderoso, mas depende de uma boa modelagem do problema. Precisamos expressar matematicamente o que desejamos minimizar.
Por exemplo: uma reta é mesmo o caminho mais curto entre dois pontos? O cálculo das variações prova que sim. Como vimos antes, existe a função de "comprimento de arco", uma integral que calcula o comprimento da linha desenhada por uma função f(x):
Dados dois pontos (x0,y0) e (x1,y1), s(x0,x1) = ∫√(1+f'(x)²) dx
Desejamos achar a função f(x) que torne o valor s(x0,x1) o menor possível. O resultado é uma função linear na forma
y = a.x + b
e aí só nos resta determinar "a" e "b", que devem preencher as seguintes condições de contorno f(x0)=y0 e f(x1)=y1.
A fórmula da catenária também pode ser encontrada pelo cálculo das variações. Neste caso o problema é modelado da seguinte forma:
a) temos um comprimento fixo "l" de cabo. Portanto, o comprimento de arco da função f(x) que estamos procurando deve ser igual a "l":
l = ∫√(1+f'(x)²) dx = uma constante arbitrária
b) a catenária é a curva em que o cabo possui, no cômputo geral, o menor potencial gravitacional possível. Esse potencial é calculável pela seguinte integral:
potencial = ∫ f(x) √(1+f'(x)²) dx
que é muito semelhante à fórmula do comprimento de arco, apenas multiplicamos cada pequeno segmento de cabo pela sua altura do solo, dada simplesmente por f(x).
Agora, "basta" utilizar o cálculo das variações para minimizar a função potencial.