Site menu Dinâmica, IA e o cálculo

Dinâmica, IA e o cálculo

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.

O problema da catenária

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.

Figura 1: Croqui de uma catenária: um cabo suspenso por dois palanques.

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".)

Figura 2: Modelando uma catenária como uma corrente com inúmeros elos pequenos.

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

Figura 3: Forças atuando sobre um segmento da catenária. Assumimos que o segmento está na parte mais baixa do cabo, para que T0 seja horizontal.

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.

Figura 4: Forças atuando sobre um segmento da catenária, com o desmembramento da tensão T em componentes vertical e horizontal. T0 já é puramente horizontal e P é puramente vertical.

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.

Pontes suspensas

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.

Figura 5: Croqui de ponte suspensa. O grosso do peso sustentado pela catenária é a massa da ponte embaixo. Do ponto de vista da catenária, no ponto B os estais estão mais espaçados que no ponto A.

Figura 6: Ponte Hercílio Luz, exemplo de ponte suspensa. Fonte: Wikipedia

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

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.