Introduç˜ao `a Optimizaç˜ao Dinâmica
Transcrição
Introduç˜ao `a Optimizaç˜ao Dinâmica
Introdução à Optimização Dinâmica Delfim F. M. Torres http://www.mat.ua.pt/delfim Novembro de 2005 “If you don’t do the best with what you have happened to have got, you will never do the best with what you should have had.” —Rutherford Aris Conteúdo 1 Optimização em espaços de dimensão finita 1 1.1 Funções escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Funções vectoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Restrições de igualdade e o método dos multiplicadores de Lagrange . . . . . 8 1.4 Restrições de desigualdade e o Teorema de Karush-Kuhn-Tucker . . . . . . . 15 1.5 Programação Dinâmica em tempo discreto . . . . . . . . . . . . . . . . . . . . 18 1.5.1 Problema de percurso . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.5.2 Problema de investimento . . . . . . . . . . . . . . . . . . . . . . . . . 25 2 Cálculo das Variações 35 2.1 Formulação de alguns problemas variacionais . . . . . . . . . . . . . . . . . . 35 2.2 Problema fundamental e as equações necessárias de Euler-Lagrange . . . . . . 37 2.3 O método de Ritz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.4 Extensões do problema fundamental . . . . . . . . . . . . . . . . . . . . . . . 49 2.4.1 Caso vectorial: n variáveis dependentes, n ≥ 1 . . . . . . . . . . . . . 49 2.4.2 Problemas com derivadas de ordem superior . . . . . . . . . . . . . . . 52 2.5 Problemas isoperimétricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.6 Condições necessárias de ordem superior . . . . . . . . . . . . . . . . . . . . . 61 2.7 Condição suficiente de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3 Controlo Óptimo 69 3.1 Formulação do problema e sua relação com o Cálculo das Variações . . . . . . 69 3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes . . . . . . . . . 74 3.3 Condição suficiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 i ii CONTEÚDO 3.4 Programação Dinâmica em tempo contı́nuo . . . . . . . . . . . . . . . . . . . 83 3.5 Princı́pio do Máximo de Pontryagin . . . . . . . . . . . . . . . . . . . . . . . 86 3.6 Problema de Newton da Resistência mı́nima . . . . . . . . . . . . . . . . . . . 92 3.7 Outros formatos para o problema de Controlo Óptimo . . . . . . . . . . . . . 100 3.7.1 O problema de Bolza do controlo óptimo 100 3.7.2 Problemas isoperimétricos do Controlo Óptimo e optimização paramétrica103 3.7.3 O problema de tempo mı́nimo . . . . . . . . . . . . . . . . . . . . . . . 105 Leis de Conservação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 3.8.1 Método de Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 3.8.2 Método de Noether . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 3.8.3 Exemplos: leis de conservação em Controlo Óptimo . . . . . . . . . . 112 3.8.4 Exemplos: leis de conservação no Cálculo das Variações . . . . . . . . 125 3.8 . . . . . . . . . . . . . . . . 4 Um problema da Economia 135 4.1 O problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 4.2 Determinação da extremal via Cálculo das Variações . . . . . . . . . . . . . . 137 4.3 Determinação da extremal via Controlo Óptimo . . . . . . . . . . . . . . . . . 138 4.4 Determinação da extremal via Programação Dinâmica . . . . . . . . . . . . . 141 4.5 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Apêndices 145 A Exemplo da componente teórica dos exames 145 B Exemplo da componente prática dos exames 147 C Matemática elementar em Maple 155 D Computação Algébrica em Maple: Programação Dinâmica 251 D.1 Problema de percurso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 D.2 Problema de investimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 E Computação Algébrica em Maple: Cálculo das Variações 255 CONTEÚDO iii F Computação Algébrica em Maple: Controlo Óptimo 257 Bibliografia 261 Índice Remissivo 265 Capı́tulo 1 Optimização em espaços de dimensão finita Existem pelo menos três razões para se resolverem problemas de optimização. A primeira é pragmática: é natural o Homem procurar a melhor maneira de utilizar os seus recursos, sendo por isso frequentes os problemas de optimização na Economia, na Engenharia e na Gestão de Processos. A segunda razão vem das propriedades do mundo que habitamos: muitas das leis da natureza são explicadas por princı́pios de extremalidade. Finalmente, a terceira razão é a curiosidade humana e o desejo de compreender. Todas estas razões encontram-se bem patentes na História da Matemática e do Homem. Neste curso estamos essencialmente interessados na minimização (ou maximização) de funcionais. A noção de funcional (função cujos argumentos residem num espaço de dimensão infinita) generaliza a de função (argumentos num espaço de dimensão finita). Começamos, por isso, por tratar o caso mais simples referente à minimização de funções. Como veremos, os resultados obtidos em espaços Euclidianos serão úteis na abordagem posterior aos problemas de minimização de funcionais, que constitui o âmago do nosso estudo. Assumiremos sempre, ao longo destas notas, a continuidade e diferenciabilidade necessárias para que as formulações dos problemas, resultados e argumentos usados, façam sentido. Começamos com o caso de funções de uma única variável real. 1.1 Funções escalares Definição 1. A função f (x) tem um mı́nimo local em x0 se existir uma vizinhança (x0 − d, x0 + d) na qual f (x) ≥ f (x0 ). Dizemos que x0 é ponto de mı́nimo global de f (x) em [a, b] se f (x) ≥ f (x0 ) para todo o x ∈ [a, b]. 1 2 Optimização em espaços de dimensão finita Teorema 2 (Condição Necessária – caso escalar; Teorema de Fermat). Se uma função continuamente diferenciável f (x) tem mı́nimo local em x0 , então f ′ (x0 ) = 0 . (1.1) Como comentário histórico, salientamos que Fermat não conhecia o conceito de derivada. No entanto, numa sua carta de 1638 (na altura as revistas cientı́ficas, tal como as conhecemos hoje, não existiam e a correspondência cientı́fica era feita por intermédio de cartas) Fermat explicou a ideia da “parte linear principal de uma função”, escrevendo que ela devia ser zero. O conceito de derivada foi introduzido mais tarde por Newton e Leibniz. O Teorema 2 é uma condição necessária, mas não suficiente. Por exemplo, x = 0 não é minimizante nem maximizante (não é ponto de mı́nimo nem de máximo) da função f (x) = x3 , mas f ′ (0) = 0. Exemplo 3 (Aplicação do Teorema de Fermat ao problema de Euclides). Euclides, nos seus “Elementos” (século IV a.C.), dá-nos a solução para um problema geométrico interessante. Este é um exemplo de um problema de optimização que não foi motivado por nenhuma aplicação e que não explica nenhum fenómeno da natureza. Euclides foi apenas movido pela sua imaginação e curiosidade. O problema de Euclides pode ser formulado da seguinte maneira: Inscrever o paralelogramo ADEF de área máxima num triângulo dado ABC. Seja a = AC; x = AF = DE; H a altura do triângulo ABC dado; e h a altura de DBE. Com estas notações, tem-se x a = h H. A área do paralelogramo é dada por x(H − h) = H a x(a − x). O problema reduz-se então a encontrar o máximo da função f (x) = x(a − x), 0 < x < a. Existe um único ponto crı́tico: f ′ (x̃) = 0 ⇔ x̃ = a2 . Resulta claro que x̃ é maximizante: f (x̃ + x) = a a2 +x −x = − x2 = f (x̃) − x2 . 2 2 4 a Concluı́mos que F é o ponto médio do segmento AC. O mı́nimo global em [a, b] pode ser atingido num ponto de mı́nimo local. Esta não é, contudo, a única possibilidade: existem dois pontos, a e b, onde (1.1) pode não ser satisfeita, mas onde o mı́nimo global pode ocorrer. Algoritmo 4 (encontrar o minimizante global de uma função real de valor real). • Input: função continuamente diferenciável f (x); intervalo [a, b]. • Output: ponto(s) de mı́nimo global. 1.1 Funções escalares 3 1. Encontrar todos os pontos crı́ticos, i.e., determinar todos os xk para os quais f ′ (xk ) = 0. 2. Calcular f (a), f (b) e f (xk ), para todos os xk encontrados no ponto anterior. Escolher o(s) ponto(s) que conduzem ao menor valor da função. O Teorema de Fermat é uma condição necessária de primeira ordem. As seguintes condições para extremos de funções de uma variável decorrem do Teorema de Taylor. Teorema 5 (Condição necessária de ordem n). Se uma função f (·) tem mı́nimo (máximo) no ponto x̃ e é n vezes diferenciável neste ponto com f ′ (x̃) = · · · = f (n−1) (x̃) = 0, n ≥ 2, então f (n) (x̃) = 0 se n é ı́mpar; e f (n) (x̃) ≥ 0 (respectivamente f (n) (x̃) ≤ 0) se n é par. Demonstração. Seja x̃ ponto de mı́nimo local com f ′ (x̃) = · · · = f (n−1) (x̃) = 0. O desenvolvi- mento em série de Taylor de f (·) numa vizinhança Vε (x̃) = {x : |x − x̃| < ε} de x̃ permite-nos então escrever: 0 ≤ f (x) − f (x̃) = = com lim x→x̃ n X f k (x̃) k! k=1 f n (x̃) n! (x − x̃)k + rn (x, x̃) (1.2) (x − x̃)n + rn (x, x̃) , rn (x, x̃) = 0. (x − x̃)n (1.3) Temos de mostrar duas coisas: (1) que se n é ı́mpar então f n (x̃) = 0; (2) que se n é par então f n (x̃) ≥ 0. 1 1 1 Situação (1). (n ı́mpar) Denotemos (x − x̃)n por y: y n = x − x̃ ⇔ x = x̃ + y n , y n ∈] − ε, ε[. 1 A função Ψ(y) = f (x̃ + y n ) = f (x̃) + | {z } f n (x̃) n! y + Rn (y, x̃), com limy→0 Rn (y,x̃) y = 0, tem x mı́nimo local para y = 0: f (x̃) ≤ f (x) ⇔ Ψ(0) ≤ Ψ(y) . Como Ψ(·) é uma função diferenciável no ponto y = 0, Ψ′ (0) = condição necessária de primeira ordem f n (x̃) (Ψ′ (0) f n (x̃) n! , = 0) a conclusão desejada: = 0. obtemos da f n (x̃) n! =0⇒ Situação (2). (n par) Dividindo ambos os lados da desigualdade (1.2) por (x − x̃)n , x ∈ Vε (x̃), x 6= x̃, obtemos ((x − x̃)n > 0 pois estamos a supor n par): 0≤ f (n) (x̃) rn (x, x̃) f (x) − f (x̃) = + . (x − x̃)n n! (x − x̃)n Concluı́mos, de (1.3) e da continuidade da função f (n) (·), que f (n) (x̃) ≥ 0. 4 Optimização em espaços de dimensão finita Teorema 6 (Condição suficiente de ordem n). Seja n um inteiro maior ou igual que dois, f (·) uma função com derivadas contı́nuas num aberto I até à ordem n, e seja x̃ um ponto interior a I tal que f ′ (x̃) = 0. Suponhamos ainda que f (n) (x̃) é a primeira das sucessivas derivadas de f (·) que não se anula em x̃. Então: 1. Se n é ı́mpar, f (·) não tem máximo nem mı́nimo local em x̃; 2. Se n é par: (i) Se f (n) (x̃) > 0, então f (·) tem um mı́nimo local em x̃; (ii) Se f (n) (x̃) < 0, então f (·) tem um máximo local em x̃. Demonstração. Estamos a assumir que a função f : I −→ R, com I aberto, se anula no ponto x = x̃ até à derivada de ordem n − 1, inclusive, para n ≥ 2. Como as derivadas da função f (·) são contı́nuas em I até à ordem n, então f (·) admite desenvolvimento em série de Taylor, isto é, ∀x ∈ I, ∃c estritamente entre x̃ e x tal que: f (x) = f (x̃) + f (n) (c) (x − x̃)n n! Devido a f (n) ser contı́nua e não nula em x̃, ∃ε > 0 tal que f (n) (x) tem o sinal de f (n) (x̃), para qualquer x ∈ Iε (x̃) ⊂ I; assim f (n) (x) tem o mesmo sinal de f (n) (c). • Consideremos n par. Primeiro caso. Suponhamos f (n) (x̃) > 0. porque n é par, resulta que f (n) (c) n! Pelo que foi referido anteriormente, e n (x − x̃) > 0. Conclui-se que f (x) − f (x̃) ≥ 0, verificando-se a igualdade apenas para x = x̃. Isto significa que f (·) tem mı́nimo local em x̃. Segundo caso. Suponhamos, agora, que f (n) (x̃) < 0. Pelos motivos referidos anterif (n) (c) n! como no 1o ormente, resulta que a igualdade, tal (x − x̃)n < 0. Então, f (x) − f (x̃) ≤ 0, verificando-se caso, apenas para x = x̃. Logo f (·) tem máximo local em x̃. • Consideremos agora n ı́mpar. Como n é ı́mpar, a quantidade (x − x̃)n tem diferentes sinais consoante seja x < x̃ ou x > x̃. Tendo em conta que ε é suficientemente pequeno, por continuidade, a derivada de ordem n conserva em todo o ponto do intervalo Iε (x̃) o mesmo sinal que no ponto x̃. Resulta daı́ que f (x) − f (x̃) assume sinais diferentes conforme x esteja à esquerda ou à direita de x̃. Por exemplo, se f (n) (x̃) > 0, então f (x) < f (x̃) se x < x̃ e f (x) > f (x̃) 1.1 Funções escalares 5 se x > x̃ (de modo semelhante para f (n) (x̃) < 0). Por este motivo, a função f (·) não tem, neste caso, extremo em x = x̃. Vamos agora considerar um exemplo que ilustra bem a utilidade do Teorema 6 na identificação dos pontos de extremo: existem três pontos crı́ticos, dois dos quais correspondem a extremantes locais (um deles é minimizante, o outro maximizante), enquanto o terceiro não é nem ponto de mı́nimo nem ponto de máximo (ponto sela). Exemplo 7. Consideremos a função f (x) = 1 7 7x − 12 x6 + 52 x5 . Existem três candidatos a mı́nimo ou máximo (pontos crı́ticos) dados pela condição necessária de primeira ordem f ′ (x) = 0 (Teorema 2): f ′ (x) = x6 − 3x5 + 2x4 f ′ (x) = 0 ⇔ x = 0 ∨ x = 1 ∨ x = 2 . Calculando as derivadas de ordem superior, ao longo de cada ponto crı́tico e até elas não se anularem, podemos, por intermédio do Teorema 6, estudar a natureza dos pontos crı́ticos: f ′′ (x) = 6x5 − 15x4 + 8x3 f ′′ (1) = −1 < 0 ⇒ 1 é ponto de máximo local da função f (·) f ′′ (2) = 16 > 0 ⇒ 2 é ponto de mı́nimo local da função f (·) f ′′′ (x) = 30x4 − 60x3 + 24x2 f (4) (x) = 120x3 − 180x2 + 48x f (5) (x) = 360x2 − 360x + 48 f ′′ (0) = f ′′′ (0) = f (4) (0) = 0 ∧ f (5) (0) = 48 ⇒ 0 não é ponto de extremo da função f (·) . Segue a análise do problema, feita no Sistema de Computação Algébrica Maple: > restart; > f:=1/7*x^7-3/6*x^6+2/5*x^5; f := 1/7 x7 − 1/2 x6 + 2/5 x5 > f1:=diff(f,x); f1 := x6 − 3 x5 + 2 x4 > sol:=solve(f1=0,x); sol := 0, 0, 0, 0, 2, 1 > f2:=diff(f1,x); f2 := 6 x5 − 15 x4 + 8 x3 > subs(x=1,f2); 6 Optimização em espaços de dimensão finita −1 > # Concluı́mos que para o ponto x=1 temos um máximo local > subs(x=2,f2); 16 > # Concluı́mos que para o ponto x=2 temos um mı́nimo local > subs(x=0,f2); 0 > f3:=diff(f2,x); f3 := 30 x4 − 60 x3 + 24 x2 > subs(x=0,f3); 0 > f4:=diff(f3,x); f4 := 120 x3 − 180 x2 + 48 x > subs(x=0,f4); 0 > f5:=diff(f4,x); f5 := 360 x2 − 360 x + 48 > subs(x=0,f5); 48 > # Concluı́mos que para o ponto x=0 n~ ao temos máximo nem mı́nimo local > plot(f,x=-0.7..2.1); x -0,5 0 0 -0,2 -0,4 -0,6 -0,8 0,5 1 1,5 2 1.2 Funções vectoriais 1.2 7 Funções vectoriais Consideremos agora funções de n variáveis, n ≥ 1. Escrevemos na mesma f (x), mas agora x ∈ Rn : f (x) = f (x1 , . . . , xn ). Definição 8. Dizemos que f (x) tem um ponto de mı́nimo global em x⋆ se a desigualdade f (x⋆ ) ≤ f (x⋆ + h) (1.4) for verificada para todo o h = (h1 , . . . , hn ) ∈ Rn . Dizemos que x⋆ é minimizante local ou ponto de mı́nimo local se existir ρ > 0 tal que (1.4) é satisfeita sempre que q khk = h21 + · · · + h2n < ρ . A seguinte condição necessária de optimalidade é uma generalização do Teorema 2 ao caso vectorial. Teorema 9 (Condição Necessária – caso vectorial). Se uma função continuamente diferenciável f (x), x ∈ Rn , tem mı́nimo local em x⋆ , então ∂f = 0 i = 1, . . . , n . ∂xi x=x⋆ (1.5) Demonstração. Se x⋆ é um ponto de mı́nimo local da função f (x), então f (x1 , x⋆2 , . . . , x⋆n ) é função de uma variável, x1, função esta que tem um mı́nimo local em x⋆1 . Resulta, pelo ∂f (x1 ,x⋆2 ,...,x⋆n ) = 0. De modo semelhante, concluı́mos que as restantes Teorema 2, que ∂x1 ⋆ x1 =x1 derivadas parciais de f são zero em x⋆ . O problema de encontrar o minimizante global de uma função real de várias variáveis num domı́nio fechado Ω é mais difı́cil do que o correspondente problema para funções de uma variável: (i) o conjunto de pontos que satisfazem (1.5) pode ter cardinalidade infinita para uma função de várias variáveis (para n > 1); (ii) a fronteira ∂Ω não é mais um conjunto finito (como {a, b}) e o problema de encontrar o mı́nimo em ∂Ω não é simples porque a estrutura de tal conjunto pode ser complicada. O algoritmo para encontrar o(s) ponto(s) de mı́nimo global de uma função f (x), x ∈ Rn , depende quer da estrutura da função quer da estrutura do domı́nio. Para simplificar o problema, evitando as dificuldades ligadas à fronteira, podemos considerar o problema de mı́nimo num domı́nio aberto. Fazemos precisamente isso no Cálculo das Variações: o espaço onde procuraremos minimizantes será um aberto. 8 Optimização em espaços de dimensão finita 1.3 Restrições de igualdade e o método dos multiplicadores de Lagrange Consideramos agora o problema de minimizar uma função f (x), x ∈ Rn , sujeita a re- strições gi (x) = 0 , x ∈ Rn , i = 1, . . . , m , m < n. (1.6) Se estivermos sob as condições do Teorema da Função Implı́cita, então é possı́vel exprimir as equações (1.6) na forma xk = ψk (x1 , . . . , xn−m ) , k = n − m + 1, . . . , n (1.7) e, deste modo, reduzir o problema de minimização com restrições a um problema sem restrições: substituindo (1.7) em f (x) obtemos um problema de minimização sem restrições com n − m incógnitas: f (x1 , . . . , xn−m , ψn−m+1 (x1 , . . . , xn−m ) , . . . , ψn (x1 , . . . , xn−m )) −→ min. No entanto, nem sempre é possı́vel aplicar o Teorema da Função Implı́cita (ver exemplos a seguir) e, mesmo quando tal é possı́vel, convém salientar que o Teorema da Função Implı́cita apenas assegura a existência de soluções (1.7), não nos dando um meio para as obter. Na prática, encontrar as expressões explı́citas (1.7) pode não ser possı́vel: no caso geral as restrições (1.6) são não-lineares e o método acima não é passı́vel de ser aplicado. Outro problema é que mesmo quando é possı́vel obter as expressões (1.7), o facto de g(x) ser suave para todos os valores de x não assegura a suavidade das funções ψk . Por exemplo, considere-se a seguinte função (n = 2, m = 1): g(x1 , x2 ) = x21 + x22 − 1. Neste caso a função g(·, ·) é de classe C ∞ , p mas g(x1 , x2 ) = 0 ⇔ x2 = ± 1 − x21 e ψ2 (x1 ) não é suave para x1 = ±1: ψ2′ (x1 ) = ∓ √ x1 2 . 1−x1 Podemos, no entanto, resolver o problema com restrições através de uma técnica muito ele- gante e útil, conhecida como método dos multiplicadores de Lagrange, que evita os problemas indicados. Este método baseia-se na introdução da chamada função de Lagrange, através da qual as m restrições g(x) são juntas à função f (x) através de multiplicadores λj , j = 1, . . . , m. Os xi , i = 1, . . . , n, e os λj , j = 1, . . . , m, são depois tratados como variáveis independentes, sem restrições. As condições necessárias resultantes formam um sistema de n + m equações, nas n + m incógnitas xi e λj . Proposição 10. Sejam f : Rn → R e g : Rn → Rm , n > m, duas funções continuamente diferenciáveis. Se x⋆ for minimizante local do problema f (x) −→ min , g(x) = 0 , 1.3 Restrições de igualdade e o método dos multiplicadores de Lagrange 9 e ∂g ∂f , rank [∇g(x), ∇f (x)] = ∂x ∂x T T ∂gm ∂f ∂g1 ,..., , = ∂x ∂x ∂x T ≤ rank∇g(x) , = ∂g1 ∂x1 .. . ∂gm ∂x1 ∂f ∂x1 ··· .. . ∂g1 ∂xn ··· ∂gm ∂xn ∂f ∂xn ··· .. . (1.8) então existem constantes λj , j = 1, . . . , m, tais que função de Lagrange L, L (x1 , . . . , xn , λ1 , . . . , λm ) = f (x) + m X λj gj (x) j=1 = f (x) + λ · g(x) , satisfaz ∂L ∂L ∂x , ∂λ = 0, i.e. ∇ (f (x⋆ ) + λ · g(x⋆ )) = 0 e g(x⋆ ) = 0: m ∂f (x⋆ ) X ∂gj (x⋆ ) λj + = 0, ∂xi ∂xi i = 1, . . . , n , (1.9) j=1 gj (x⋆ ) = 0 , j = 1, . . . , m . (1.10) Observação 11. Usamos o termo Inglês rank para a caracterı́stica de uma matriz, por ser essa também a designação do respectivo comando Maple (cf. a secção de matrizes do Apêndice C). Demonstração. A demonstração é simples: a condição (1.8) significa que ∇f é linearmente de- pendente do conjunto de vectores {∇gk , k = 1, . . . , m}, ou seja, existem constantes λ1 , . . . , λm P tais que ∇f = − m k=1 λk ∇gk . Exemplo 12 (n = 3, m = 2). Sejam f (x) = f (x1 , x2 , x3 ) = x23 2 − x1 x2 , g1 (x) = x21 + x2 − 1 e g2 (x) = x1 +x3 −1. O exercı́cio consiste então em determinar os pontos crı́ticos (os candidatos a mı́nimo ou máximo) do problema x23 − x1 x2 −→ extr , 2 x2 + x − 1 = 0 , 1 2 x + x − 1 = 0 , 1 3 onde extr significa minimizar ou maximizar. Começamos por notar que a hipótese (1.8) é satisfeita para todo o x ∈ R2 : ∇g(x) = [∇g1 (x), ∇g2 (x)]T = 2 x1 1 1 0 10 Optimização em espaços de dimensão finita que tem caracterı́stica 2 independentemente do valor x1 . A condição necessária dada pela Proposição 10 dá-nos um sistema de 5 equações a 5 incógnitas x1 , x2 , x3 , λ1 e λ2 : −x2 + 2λ1 x1 + λ2 = 0 , −x + λ1 = 0 , 1 x3 + λ2 = 0 , x21 + x2 − 1 = 0 , x + x − 1 = 0 . 1 3 Este sistema é facilmente resolvido em Maple: > f := (x[3]^2)/2 - x[1]*x[2]: > g[1] := x[1]^2 + x[2] - 1: > g[2] := x[1] + x[3] - 1: > L := f + lambda[1]*g[1]+lambda[2]*g[2]: > sistema := {seq(diff(L,x[i])=0,i=1..3),seq(diff(L,lambda[j])=0,j=1..2)}; −x2 + 2 λ1 x1 + λ2 = 0, −x1 + λ1 = 0, x3 + λ2 = 0, x1 2 + x2 − 1 = 0, x1 + x3 − 1 = 0 > pc := solve(sistema); {λ2 = −2, λ1 = −1, x2 = 0, x1 = −1, x3 = 2} , {λ2 = −1/3, λ1 = 2/3, x2 = 5/9, x1 = 2/3, x3 = 1/3} Temos então dois pontos crı́ticos: x⋆1 = (x1 , x2 , x3 , λ1 , λ2 ) = (−1, 0, 2, −1, −2) , 2 5 1 2 1 ⋆2 x = (x1 , x2 , x3 , λ1 , λ2 ) = . , , , ,− 3 9 3 3 3 A condição (1.8) não é conveniente em termos práticos, salvo no caso em que n = 2 e m = 1: f (x, y) −→ min , g(x, y) = 0 , (1.11) onde f, g : R2 → R são funções suaves (f , g ∈ C 1 ). A restrição g(x, y) = 0 define implicitamente uma curva γ ⊂ R2 . Se impusermos a condição ∇g(x, y) 6= 0, a curva γ é suave: está bem definido o vector tangente à curva em cada ponto. A curva γ pode ser representada parametricamente por uma função vectorial suave r(t) = (x(t), y(t)), t ∈ I ⊆ R, tal que r′ (t) 6= 0 ∀ t ∈ I. A condição necessária para f ter um mı́nimo local em γ dá-nos: ∂f ∂f d f (x(t), y(t)) = 0 ⇔ ẋ(t) + ẏ(t) = 0 . dt ∂x ∂y (1.12) 1.3 Restrições de igualdade e o método dos multiplicadores de Lagrange 11 Por outro lado, uma vez que g (x(t), y(t)) = 0 para todo o (x(t), y(t)) ∈ γ, temos também: ∂g ∂g d g (x(t), y(t)) = 0 ⇔ ẋ(t) + ẏ(t) = 0 , dt ∂x ∂y ∀t ∈ I . (1.13) A condição ∇g(x, y) 6= 0 implica que em todo o ponto da curva γ pelo menos uma das derivadas ∂g ∂x ou ∂g ∂y é não nula. Admitamos, sem perda de generalidade, que a equação (1.13) implica que ẏ(t) = − onde gx = ∂g ∂x e gy = ∂g ∂y , ∂g ∂y 6= 0. Então gx ẋ(t) , gy (1.14) e, consequentemente, (1.12) pode ser escrita como ẋ(t) (fx gy − fy gx ) = 0 . gy (1.15) Uma vez que r′ (t) = (ẋ(t), ẏ(t)) 6= 0, ẋ(t) e ẏ(t) não podem ser ambos nulos e, por (1.14), ẋ(t) 6= 0 (ẋ(t) = 0 ⇒ ẏ(t) = 0). A equação (1.15) implica então que ∂f ∂g ∂f ∂g − = 0 ⇔ ∇f × ∇g = 0 , ∂x ∂y ∂y ∂x (1.16) onde × denota o produto externo. Relembramos que dados dois vectores v e w de R2 |v × w| = |v||w| sin(φ) , onde φ representa o ângulo entre v e w. A equação (1.16) diz-nos então que ∇f é paralelo a ∇g (i.e., φ = 0 ⇒ sin(φ) = 0): existe uma constante −λ tal que ∇f = −λ∇g ⇔ ∇ (f + λg) = 0 . A constante λ é o multiplicador de Lagrange. Acabámos de demonstrar o seguinte resultado. Proposição 13. Sejam f : R2 → R e g : R2 → R duas funções continuamente diferenciáveis. Se (x⋆ , y ⋆ ) for minimizante local do problema f (x, y) −→ min , g(x, y) = 0 , e ∇g(x⋆ , y ⋆ ) 6= 0, então existe um número real λ tal que ∇L(x, y, λ) = 0 , onde a função de Lagrange L é definida por L(x, y, λ) = f (x, y) + λg(x, y). Observação 14. A condição (1.8) é a análoga da condição ∇g(x, y) 6= 0 da Proposição 13. De facto, se ∇g(x, y) = 0 então (1.8) só é satisfeita quando ∇f (x, y) = 0, ou seja, quando (x, y) é simultaneamente ponto crı́tico de f e g. Neste caso diz-se que (x, y) é minimizante anormal. 12 Optimização em espaços de dimensão finita O método dos multiplicadores de Lagrange, tal como formulado pela Proposição 13, falha se a condição ∇g 6= 0 não for satisfeita. Por outras palavras, a Proposição 13 falha quando o minimizante x⋆ é ponto crı́tico de g (quando ∇g(x⋆ ) = 0). O método dos multiplicadores de Lagrange pode, contudo, ser adaptado para cobrir estes casos. Vamos mostrar como, considerando n = 2 e m = 1. O resultado genérico sai como Corolário do Teorema de Karush-Kuhn-Tucker que demonstramos em §1.4. Quando (x, y) é minimizante local de (1.11) e ∇g(x, y) 6= 0, então existe um λ tal que ∇ (f (x, y) + λg(x, y)) = 0. Dizemos que (x, y) é um minimizante normal . Se, em contraste, (x, y) é minimizante local de (1.11) com ∇g(x, y) = 0, então a existência do multiplicador de Lagrange λ não é assegurada. Dizemos que (x, y) é um minimizante anormal . Exemplo 15 (minimizante anormal). Consideremos o seguinte problema: x2 − y 2 −→ min , x2 + y 2 = 0 . A restrição x2 + y 2 = 0 é apenas satisfeita por um ponto de R2 , pelo que o problema é trivial: quer se considere o problema de minimização quer o de maximização, a solução é sempre dada por (x, y) = (0, 0) (único ponto admissı́vel). Estamos perante um caso de minimizante anormal: ∇g(x, y) = [2x, 2y]T que se anula para (x, y) = (0, 0). Exemplo 16 (minimizante anormal). Consideremos o problema que se obtém trocando os papeis de f e g no Exemplo 15: x2 + y 2 −→ min , x2 − y 2 = 0 . Como x2 + y 2 ≥ 0 para todo o (x, y) ∈ R2 , é óbvio que (0, 0) é minimizante global. Também aqui (0, 0) é minimizante anormal: ∇g(x, y) = [2x, −2y]T que se anula em (0, 0). O fenómeno ilustrado pelos Exemplos 15 e 16 ocorre sempre que o minimizante (x, y) é simultaneamente ponto crı́tico de f (x, y) e g(x, y): sempre que ∇f (x, y) = 0 e ∇g(x, y) = 0. Para minimizantes anormais temos g(x, y) = 0 e ∇g(x, y) = 0, pelo que o Teorema da Função Implı́cita não pode ser invocado: não há garantia que a equação g(x, y) = 0 pode ser resolvida unicamente para x em termos de y ou para y em termos de x. Geometricamente, isto significa que o conjunto de soluções de g(x, y) = 0 não define necessariamente uma curva suave numa vizinhança de (x, y). Podemos, no entanto, adaptar a Proposição 13 (e a Proposição 10) para incluir o caso anormal, introduzindo um multiplicador adicional λ0 . Suponhamos que a função f tem um extremante local em (x, y) quando sujeita à restrição g = 0. Façamos L = λ0 f + λg. Se ∇g(x, y) 6= 0 então o problema é normal, pelo que podemos escolher λ0 = 1 e usar a Proposição 13: ∃ λ : ∇L = ∇ (f + λg) = 0. Suponhamos agora que o problema é 1.3 Restrições de igualdade e o método dos multiplicadores de Lagrange 13 anormal, i.e., g(x, y) = 0 ∧ ∇g(x, y) = 0. Então a condição ∇L(x, y) = 0 ⇔ λ0 ∇f + λ∇g = λ0 ∇f , pelo que ela é ainda verdadeira se escolhermos λ0 = 0. Em qualquer dos cenários (normal ou anormal) podemos sempre encontrar números λ0 e λ tais que ∇L = 0. Teorema 17 (método dos multiplicadores de Lagrange). Sejam f : Rn → R e g : Rn → Rm , n > m, duas funções continuamente diferenciáveis. Se x⋆ for minimizante local do problema f (x) −→ min , g(x) = 0 , então existem constantes λ0 e λ = (λ1 , . . . , λm ), não todas nulas, tais que ∇ (λ0 + λ · g(x)) = 0 . Observação 18. O facto de os multiplicadores não poderem ser todos nulos, (λ0 , λ) 6= 0, é crucial: sem esta condição o Teorema 17 era uma trivialidade e não terı́amos uma condição necessária útil. Em termos práticos, é conveniente estudar os casos normais e anormais separadamente: fazemos λ0 = 1 e determinamos os pontos crı́ticos normais; fazemos depois λ0 = 0 e determinamos os pontos crı́ticos anormais. Exemplo 19 (minimizante anormal). Consideramos o seguinte problema: x2 + y 2 −→ min , (y − 1)3 − x2 = 0 . Começamos por estudar o caso normal fazendo λ0 = 1: L = x2 + y 2 + λ (y − 1)3 − x2 . A condição necessária de optimalidade conduz-nos ao seguinte sistema de três equações a três incógnitas: 2x − 2λx = 0 , 2y + 3λ (y − 1)2 = 0 , (y − 1)3 − x2 = 0 . O sistema é impossı́vel. Da primeira equação ∂L ∂x = 0 resulta que x (1 − λ) = 0 ⇔ x = 0 ∨ λ = 1. Se x = 0 então vem da terceira equação que y = 1; mas y = 1 não satisfaz a segunda equação. Se λ = 1 a segunda equação toma a forma 2y + 3 (y − 1)2 = 0, que é uma equação impossı́vel em R. Concluı́mos que não existem minimizantes normais. O minimizante, a existir, será anormal. Estudemos então o caso anormal (λ0 = 0 e λ 6= 0): L = λ (y − 1)3 − x2 . Obtemos o sistema de três equações a três incógnitas −2λx = 0 , (1.17) 3λ (y − 1)2 = 0 , (y − 1)3 − x2 = 0 . 14 Optimização em espaços de dimensão finita A primeira equação implica x = 0; a segunda y = 1; valores este que verificam a restrição g(x, y) = 0 (satisfazem a terceira equação do sistema). Temos então que para λ 6= 0 o sistema (1.17) admite uma única solução: o ponto (x, y) = (0, 1). É possı́vel mostrar que o ponto crı́tico anormal (x, y) = (0, 1) é de facto minimizante do problema. A restrição g(x, y) = (y − 1)3 − x2 = 0 não define uma curva suave: > with(plots): > implicitplot((y-1)^3-x^2=0, x=-0.5..0.5, y=0..10, scaling=constrained); 1.6 1.5 1.4 y 1.3 1.2 1.1 –0.4 –0.2 0 0.2 0.4 x Graficamente é muito fácil de ver que (x, y) = (0, 1) é o ponto da curva definida pela equação (y − 1)3 − x2 = 0 que dá menor valor à função f (x, y) = x2 + y 2 . Exercı́cio 1. Usando o método dos multiplicadores de Lagrange (Teorema 17), determine os candidatos a extremante (candidatos a minimizante ou maximizante) para cada um dos seguintes problemas: (a) f (x1 , x2 , x3 ) = x31 + x32 + x33 −→ extr, sobre a esfera x21 + x22 + x23 = 4 (n = 3, m = 1). (b) f −→ extr, com f a mesma função que na alı́nea (a), mas agora não sob todos os pontos da esfera x21 + x22 + x23 = 4: apenas sobre aqueles pontos da esfera que pertencem simultaneamente ao plano x1 + x2 + x3 = 1 (n = 3, m = 2). Exercı́cio 2. Minimizar a função f (x1 , x2 ) = x21 + x22 quando sujeita à restrição x41 + x42 = 1. Exercı́cio 3. Determine os pontos crı́ticos de f (x1 , x2 ) onde f (x1 , x2 ) = (1 + a − bx1 − bx2 )2 + (b + x1 + ax2 − bx1 x2 )2 , a e b constantes. 1.4 Restrições de desigualdade e o Teorema de Karush-Kuhn-Tucker 1.4 15 Restrições de desigualdade e o Teorema de Karush-KuhnTucker Consideramos agora o seguinte problema de Programação Matemática em Rn : f (x) −→ min , gi (x) = 0 , i = 1, . . . , m , hj (x) ≤ 0 , j = 1, . . . , k , (1.18) onde f : Rn → R, gi : Rn → R, i = 1, . . . , m, e hj : Rn → R, j = 1, . . . , k, são continuamente diferenciáveis. Dizemos que o ponto x̃ ∈ Rn é minimizante local do problema (1.18) se existir ε > 0 tal que para todo o x que verifique as condições |x − x̃| < ε , gi (x) = 0 , i = 1, . . . , m , hj (x) ≤ 0 , j = 1, . . . , k , se tem f (x̃) ≤ f (x). Sejam λ0 ∈ R, λ = (λ1 , . . . , λm ) ∈ Rm , µ = (µ1 , . . . , µk ) ∈ Rk . A função de Lagrange para o problema (1.18) é definida por: L (x, λ0 , λ, µ) = λ0 f (x) + λ · g(x) + µ · h(x) . Teorema 20 (Teorema de Karush-Kuhn-Tucker). Se x̃ é um minimizante local de (1.18), então existem constantes reais λ0 ≥ 0, λi , i = 1, . . . , m e µj ≥ 0, j = 1, . . . , k, tais que: 1. ∇x L (x̃, λ0 , λ, µ) = 0; 2. µj hj = 0, j = 1, . . . , k (condições complementares); q P Pk 2 2 3. λ20 + m i=1 λi + j=1 µj = 1 (os multiplicadores não podem ser todos nulos). Demonstração. Seja γ < f (x̃) e F (x, γ) = Φ(x, γ) + |x − x̃|2 , com v u m k X X u Φ(x, γ) = t(f (x) − γ)2+ + gi (x)2 + (hj (x))2+ , i=1 j=1 onde usamos a notação a+ = max{a, 0}. É fácil de ver que Φ(x, γ) ≥ 0 para todo o x ∈ Rn . O Teorema de Weierstrass implica que F (x, γ) tem mı́nimo global num ponto xγ . Temos: |xγ − x̃|2 ≤ Φ(xγ , γ) + |xγ − x̃|2 = F (xγ , γ) ≤ F (x̃, γ) = f (x̃) − γ . (1.19) 16 Optimização em espaços de dimensão finita Se Φ(xγ , γ) = 0, então xγ verifica todas as restrições do problema (1.18) e f (xγ ) ≤ γ < f (x̃). Como x̃ é um minimizante local de (1.18), da desigualdade (1.19) obtemos Φ(xγ , γ) > 0 sempre que γ está suficientemente próximo de f (x̃). Uma vez que Φ(xγ , γ) > 0, a função F é diferenciável em ordem a x no ponto xγ e segue-se do Teorema 9 que ∇x F (xγ , γ) = 0 . (1.20) Fazendo λγ0 = (f (xγ ) − γ)+ , Φ(xγ , γ) λγi = gi (xγ ) , i = 1, . . . , m , Φ(xγ , γ) µγj = (hj (xγ ))+ , j = 1, . . . , k , Φ(xγ , γ) podemos reescrever (1.20) na seguinte forma equivalente: λγ0 ∇f (xγ ) + m X i=1 λγi ∇gi (xγ ) + k X j=1 µγj ∇hj (xγ ) + 2 (xγ − x̃) = 0 . (1.21) Resulta claro que λγ0 ≥ 0 , µγj ≥ 0 , j = 1, . . . , k , v u k m X X u γ γ 2 t(λ )2 + (µγj )2 = 1 . (λi ) + 0 i=1 (1.22) j=1 As conclusões pretendidas são obtidas passando ao limite quando γ → f (x̃). Sem perda de generalidade, λγ0 → λ0 , λγi → λi , µγj → µj . Da desigualdade (1.19) temos xγ → x̃. Se hj (x̃) < 0, então hj (x̃γ ) < 0, isto é, µγj = 0 para γ próximo de f (x̃). Passando ao limite em (1.21) e (1.22) chegamos ao resultado pretendido. Exemplo 21. Consideremos o seguinte problema: x21 + x22 + x23 −→ min , x1 + x2 + x3 = 3 , 2x1 − x2 + x3 ≤ 5 . A função de Lagrange é então dada por: L (x1 , x2 , x3 , λ0 , λ, µ) = λ0 x21 + x22 + x23 + λ (x1 + x2 + x3 − 3) + µ (2x1 − x2 + x3 − 5) . O Teorema 20 (Teorema de Karush-Kuhn-Tucker) dá-nos as condições necessárias: o gradiente da função de Lagrange é nulo, 2λ x + λ + 2µ = 0 , 0 1 2λ0 x2 + λ − µ = 0 , 2λ x + λ + µ = 0 ; 0 3 1.4 Restrições de desigualdade e o Teorema de Karush-Kuhn-Tucker 17 a condição complementar µ (2x1 − x2 + x3 − 5) = 0; não negatividade do multiplicador correspondente à desigualdade, µ ≥ 0; e a não trivialidade dos multiplicadores (os multiplicadores não podem ser todos nulos), λ20 + λ2 + µ2 6= 0. O problema não admite caso anormal: λ0 = 0 implica λ = µ = 0. Logo podemos escolher λ0 = 21 . Se µ = 0, então temos x1 = x2 = x3 = −λ. Da condição x1 + x2 + x3 = 3 encontramos x1 = x2 = x3 = 1. Consideremos agora o caso em que µ > 0. Então 2x1 − x2 + x3 − 5 = 0. Substituindo x1 = −λ − 2µ, x2 = −λ + µ e x3 = −λ − µ no sistema 2x − x + x = 5 , 1 2 3 x + x + x = 3 , 1 obtemos 2 3 −2λ − 6µ = 5 , −3λ − 2µ = 3 , 9 < 0, o que é uma contradição. Desde modo, o único ponto de onde tiramos que µ = − 14 crı́tico é (x1 , x2 , x3 ) = (1, 1, 1), com f (1, 1, 1) = 3. O Maple tem um package de Optimização que permite a resolução de problemas não lineares de Programação Matemática em Rn , como o nosso problema (1.18), através do comando NLPSolve. Para o nosso exemplo fazemos: > with(Optimization): > f := x1^2+x2^2+x3^2: > g := x1+x2+x3-3=0: > h := 2*x1-x2+x3 <= 5: > NLPSolve(f, {g, h}); [3., [x1 = 1., x2 = 1., x3 = 1.]] Exercı́cio 4. Determinar os pontos crı́ticos para o seguinte problema: x23 1 2 2 x1 + x2 + −→ extr , f (x1 , x2 , x3 ) = x3 + 2 10 x1 + x2 + x3 = r , xi ≥ 0 , i = 1, 2, 3 . Exercı́cio 5. Maximizar a função f (x1 , x2 , x3 ) = x1 x2 x3 quando sujeita às restrições 2x1 + 2x2 + 4x3 ≤ a e xi ≥ 0, i = 1, 2, 3. Exercı́cio 6. Maximizar a função f (x1 , x2 ) = 6x1 − 2x21 + 2x1 x2 − 2x22 quando sujeita às restrições x1 + 2x2 ≤ 2, 1 + x1 − x22 ≥ 0, x1 ≥ 0 e x2 ≥ 0. Exercı́cio 7. Encontrar os pontos de mı́nimo e máximo de f (x1 , x2 , x3 ) = x31 + x32 + x33 na região determinada pelas restrições x21 + x22 + x23 ≤ 4, x1 + x2 + x3 ≤ 1. 18 Optimização em espaços de dimensão finita 1.5 Programação Dinâmica em tempo discreto A Programação Dinâmica foi desenvolvida por Richard Bellman em meados dos anos cinquenta (século XX). A palavra Programação refere-se ao facto dos problemas a resolver exigirem planeamento, tomada de decisões, ponderação; Dinâmica pelo facto de tais decisões serem tomadas em várias etapas, tipicamente variando com o tempo. Vamos dedicar a nossa atenção a dois problemas tı́picos da Programação Dinâmica em tempo discreto: o problema de percurso (“Stagecoach Problem”) e o problema de investimento. De um modo muito simples, a ideia central consiste em dividir o problema em subproblemas. Começa-se por um desses sub-problemas e, sequencialmente, logo após se chegar à sua solução óptima (à melhor solução para esse problema), passa-se então ao sub-problema seguinte, encontrando-se também a sua solução óptima e assim sucessivamente. No final determina-se a solução óptima de um sub-problema que, com a informação dos sub-problemas anteriormente resolvidos, nos conduz à solução óptima do nosso problema inicial. Cada sub-problema corresponde, na linguagem da Programação Dinâmica, a uma etapa. No final de cada etapa é tomada uma decisão. Em tempo discreto, que tratamos nesta secção, as tomadas de decisão (os controlos) são feitos periodicamente, em cada etapa. No caso contı́nuo (Secção 3.4) as decisões (os controlos) são efectuadas ao longo do tempo (os controlos são funções). Dentro de cada etapa haverá um ou mais estados (no caso contı́nuo – ver Capı́tulo 3 – as variáveis de estado são funções). Existe um estado para cada possı́vel situação em cada etapa. Uma decisão (controlo) tem como função alterar o estado corrente, para um novo estado que dará inı́cio à próxima etapa. Pretendemos tomar a melhor decisão (descobrir os controlos óptimos). A escolha da melhor decisão para a resolução de um problema de programação dinâmica baseia-se no chamado Princı́pio de Optimalidade ou Princı́pio de Bellman: “o controlo óptimo tem a propriedade que, independentemente do estado inicial e das decisões já tomadas, as restantes decisões constituem a estratégia óptima em relação ao estado resultante das decisões anteriormente tomadas” [36, p. 5]. Neste curso ilustramos o Princı́pio de Bellman quer em tempo discreto, por intermédio do problema de percurso, do problema de investimento, e do problema de controlo óptimo discreto, quer em tempo contı́nuo (Secções 3.4 e 4.4). 1.5.1 Problema de percurso O problema de percurso é o exemplo por excelência da Programação Dinâmica. O objectivo é encontrar o percurso óptimo desde um ponto de origem até um ponto de destino, perante uma variedade de diferentes percursos possı́veis. Este problema é um dos mais utilizados quando se pretende ilustrar a técnica da Programação Dinâmica. Para maior facilidade de compreensão, consideramos uma situação concreta muito simples. A generalização do método 1.5 Programação Dinâmica em tempo discreto 19 da Programação Dinâmica para uma situação genérica é considerada no Apêndice D, onde implementamos, em Maple, o método da Programação Dinâmica para um problema arbitrário de percurso. Problema 22. Suponhamos que uma pessoa tem que se deslocar da cidade 1 (que designaremos por ponto 1) para a cidade 6 (que designaremos por ponto 6), tendo como único meio de transporte uma diligência alugada. Apesar de ter os pontos de partida e chegada definidos, a pessoa pode escolher as cidades intermédias por onde vai passar, de acordo com a figura 1.1. Ao percurso entre cada duas cidades está associado um custo de seguro de vida (obrigatório Figura 1.1: Um problema de percurso com o aluguer da diligência), expresso numa determinada unidade monetária (u.m.), igualmente representado no esquema 1.1. Verifica-se que quanto mais baixo for o custo do seguro de vida mais segura é a viagem. Qual será então o caminho mais seguro a tomar e qual a quantia do respectivo seguro de vida? Antes de principiarmos com a resolução do Problema 22 chamamos a atenção para uma condicionante imposta neste problema: nunca se pode passar de um ponto a outro a que esteja associado um número menor (o que implica que os pontos estão ordenados). Como vamos resolver este problema através da Programação Dinâmica, começamos por dividi-lo em sub-problemas através da divisão em etapas (isto é, associando a cada subproblema uma etapa). Em Programação Dinâmica é usual a resolução dos sub-problemas por retrocesso. Consideramos uma divisão em quatro etapas, conforme representado na figura 1.2. Seja: • i – a variável de etapa, que varia entre 1 e 4; • E(i) – o conjunto dos pontos existentes na etapa i (i ∈ {4, 3, 2, 1}); • c(i, j, k) – o custo do seguro de vida quando na etapa i, (i ∈ {4, 3, 2, 1}) se passa do ponto j (j ∈ E(i)) para o ponto k (k ∈ E(i + 1)); • s(i, j) – o elemento do conjunto dos pontos (da etapa i + 1), para onde se deve ir quando na etapa i (i ∈ {3, 2, 1}) se está no ponto j (j ∈ E(i)), de modo a que o custo da trajectória seja mı́nimo; 20 Optimização em espaços de dimensão finita Figura 1.2: Etapas para o problema de percurso da Fig. 1.1 ETAPA ESTADO i 4 3 PONTOS j 1 6 1 4 2 5 1 2 2 E(i) (em u.m.) E(4) = {6} c(4, 6, 6) = 0 E(3) = {4, 5} c(3, 5, 6) = 4 2 3 4 c(i, j, k), com k ∈ E(i − 1) 3 2 c(2, 2, 4) = 7 c(2, 2, 5) = 7 E(2) = {2, 3} 1 1 c(3, 4, 6) = 3 c(2, 3, 4) = 8 c(2, 3, 5) = 5 c(1, 1, 2) = 2 1 E(1) = {1} c(1, 1, 3) = 4 Tabela 1.1: Esquematização dos dados do Problema 22 • f (i, j, k) – o custo mı́nimo do seguro de vida quando a pessoa na etapa i (i ∈ {4, 3, 2, 1}) está no ponto j (j ∈ E(i)) e se pretende deslocar para um ponto k. Com as notações introduzidas, os dados do Problema 22 podem ser esquematizados como na Tabela 1.1. Primeiro sub-problema (etapa 4) Começamos então por resolver o sub-problema 1 (etapa 4). Dentro da etapa 4 temos apenas um estado a considerar: a pessoa encontra-se no ponto 6 (chegou ao seu destino). Neste caso particular, uma vez que a pessoa se encontra no ponto de chegada, não há decisões a tomar: o ponto de partida é o ponto de destino (ponto 6) e definimos a função de custo por f (4, 6, 6) = c(4, 6, 6) = 0 . (1.23) 1.5 Programação Dinâmica em tempo discreto 21 Segundo sub-problema (etapa 3) Comecemos por formular o sub-problema: supondo que a pessoa se encontra num dos pontos da etapa 3 (ponto 4 ou 5) e que quer percorrer o caminho associado a um custo mı́nimo de seguro de vida para chegar ao ponto destino 6 (único ponto da etapa 4), qual o percurso a seguir em cada caso e qual o custo mı́nimo de seguro de vida associado a esse percurso? Vamos então resolver este sub-problema. Temos E(3) = {4, 5}, isto é, na etapa 3 a pessoa pode encontrar-se num de dois pontos: no ponto 4 ou no ponto 5. Se a pessoa se encontra no ponto 4 existe um único percurso possı́vel para chegar ao ponto 6, ao qual está associado um custo de 3 u.m. (c(3, 4, 6) = 3). Este percurso corresponde então ao custo mı́nimo quando se parte com a diligência no ponto 4 e se pretende chegar ao ponto 6. Logo: f (3, 4, 6) = c(3, 4, 6) = 3 u.m. e s(3, 4) = 6. Se a pessoa se encontra no ponto 5, de modo semelhante, existe um único percurso para chegar ao ponto 6, percurso este que tem associado o custo c(3, 5, 6) = 4 u.m. O custo mı́nimo será: f (3, 5, 6) = c(3, 5, 6) = 4 u.m. e o ponto para onde se deverá ir é s(3, 5) = 6. Resumindo, quando a pessoa se encontra na etapa 3 o custo mı́nimo é dado pela função f (3, i, 6) = c(3, i, 6) , com i ∈ E(3) (1.24) s(3, i) = 6, ∀i ∈ E(3) . (1.25) e o próximo destino é Na etapa 3, independentemente do ponto onde estivermos, temos apenas um caminho para chegar ao ponto 6. Caso estejamos no ponto 4, o destino seguinte é o ponto 6 com um custo mı́nimo de 3 u.m.; se estivermos no ponto 5, teremos que pagar 4 u.m. para chegar ao destino. Terceiro sub-problema (etapa 2) O problema é agora: quando a pessoa se encontra na etapa 2, podendo estar no ponto 2 ou 3, qual o percurso óptimo correspondente ao custo mı́nimo que deverá seguir, e qual o valor do custo mı́nimo? Como E(2) = {2, 3}, na etapa 2 a pessoa pode estar num de dois pontos (ponto 2 ou ponto 3). Em ambos os casos podemos seguir dois percursos diferentes de modo a chegar ao ponto 6: o percurso que passa pelo ponto 4 ou o que passa pelo ponto 5. Em qualquer dos casos, nesta etapa n = 2 o custo da viagem obtém-se através da soma do custo do percurso entre o ponto actual i (i ∈ E(2)) e o próximo ponto j (j ∈ E(3)), com o custo mı́nimo de viagem da etapa n + 1 quando iniciada no já referido j: c(2, i, j) + f (3, j, 6) , para i ∈ E(2) e j ∈ E(3) . Como queremos o custo mı́nimo, então f (2, i, 6) = min {c(2, i, j) + f (3, j, 6)} , {j∈E(3)} i ∈ E(2) (1.26) 22 Optimização em espaços de dimensão finita e o ponto para onde devemos ir quando estamos no ponto i, i ∈ E(2), será dado por s(2, i) = k , se c(2, i, k) + f (3, k, 6) = f (2, i, 6) . (1.27) Obviamente, k ∈ E(3). Para i = 2, atendendo a que E(2) = {4, 5}, obtemos de (1.26) que f (2, 2, 6) = min {c(2, 2, j) + f (3, j, 6)} {j∈{4,5}} = min {c(2, 2, 4) + f (3, 4, 6), c(2, 2, 5) + f (3, 5, 6)} = min {7 + 3, 7 + 4} = min {10, 11} = 10 u.m. Como 4 ∈ {4, 5} = E(3) e c(2, 2, 4) + f (3, 4, 6) = 10 = f (2, 2, 6) , obtemos que o k da expressão (1.27) para i = 2 é 4: s(2, 2) = 4 . Se ponto 3 é o que corresponde à localização da pessoa (i = 3), E(3) = {4, 5}, e da expressão (1.26) vem f (2, 3, 6) = min {c(2, 3, j) + f (3, j, 6)} {j∈{4,5}} = min {c(2, 3, 4) + f (3, 4, 6), c(2, 3, 5) + f (3, 5, 6)} = min {8 + 3, 5 + 4} = min {11, 9} = 9 u.m. Obtemos então k = 5 da expressão (1.27): 5 ∈ {4, 5} = E(3), c(2, 3, 5) + f (3, 5, 6) = 9 = f (2, 3, 6) , isto é, s(2, 3) = 5. Estamos em condições de dar resposta ao sub-problema considerado: se, nesta segunda etapa, a pessoa estiver no ponto 2, então ela deve optar pelo percurso que passa pelo ponto 4 (s(2, 2) = 4) com destino ao ponto 6, pois este percurso está associado ao caminho de custo mı́nimo, com valor f (2, 2, 6) = 10 u.m. Se, pelo contrário, ela estiver na cidade 3, para obter o custo mı́nimo de f (2, 3, 6) = 9 u.m. ela deve optar por passar pelo ponto 5 (s(2, 3) = 5). Último sub-problema (etapa 1) e solução do Problema 22 Qual o percurso que uma pessoa localizada num ponto de E(1), com destino ao ponto 6, deve escolher, de modo a que o custo do seguro de vida associado a essa rota seja mı́nimo? Qual o custo mı́nimo do seguro de vida? 1.5 Programação Dinâmica em tempo discreto 23 ETAPA PONTO CUSTO MÍNIMO i j f (i, j, 6) (em u.m.) 4 6 f (4, 6, 6) = 0 4 f (3, 4, 6) = 3 s(3, 4) = 6 5 f (3, 5, 6) = 4 s(3, 5) = 6 2 f (2, 2, 6) = 10 s(2, 2) = 4 2 3 f (2, 3, 6) = 9 s(2, 3) = 5 1 1 f (1, 1, 6) = 12 s(1, 1) = 2 3 s(i, j) Tabela 1.2: Resultados obtidos nas 4 etapas; solução do Problema 22 Se a pessoa se encontra na etapa 1, tem obrigatoriamente que estar no ponto 1, pois este é o único ponto desta etapa: E(1) = {1}. Encontrar a resposta ao sub-problema é encontrar o valor das funções f (1, 1, 6) e s(1, 1): f (1, 1, 6) = = min {c(1, 1, j) + f (2, j, 6)} {j∈E(2)} min {c(1, 1, j) + f (2, j, 6)} {j∈{2,3}} = min {c(1, 1, 2) + f (2, 2, 6), c(1, 1, 3) + f (2, 3, 6)} = min {2 + 10, 4 + 9} = min {12, 13} = 12 u.m. ; para k = 2, c(1, 1, 2) + f (2, 2, 6) = 12 = f (1, 1, 6) , isto é, s(1, 1) = 2. Para mais facilmente compreendermos a resposta ao sub-problema, sintetizamos na Tabela 1.2 os dados obtidos nas 4 etapas. Através da análise da Tabela 1.2 concluı́mos que uma pessoa que esteja no ponto 1 e queira ir até ao ponto 6, pagando o mı́nimo possı́vel de seguro de vida deve, a partir do ponto 1, escolher o seguinte percurso: 2 (s(1, 1) = 2), 4 (s(2, 2) = 4) e, por fim, o ponto 6 (s(3, 4) = 6); pagando o mı́nimo de 12 unidades monetárias. Deste modo, dividindo o problema inicial em sub-problemas mais simples, acabámos por chegar a um último sub-problema de resolução também mais simples (pois é resolvido em função dos anteriores), que corresponde ao nosso problema inicial. A resposta ao Problema 22 é, então, a resposta ao sub-problema da etapa 1. Convém salientar que, se tivéssemos resolvido o exercı́cio por enumeração exaustiva, terı́amos construı́do um total de quatro caminhos completos (1 → 2 → 4 → 6; 1 → 2 → 5 → 6; 1 → 3 → 4 → 6; 1 → 3 → 5 → 6), calculado o custo de cada um e só depois escolhido, de entre todos, o de custo mı́nimo. Através da técnica da Programação Dinâmica, só construı́mos dois 24 Optimização em espaços de dimensão finita caminhos completos (1 → 2 → 4 → 6; 1 → 3 → 5 → 6) e obtivemos logo o de custo mı́nimo. Embora a diferença não pareça significativa, num exemplo com um número total de pontos tão reduzido, ela torna-se importantı́ssima quando o número de pontos aumenta. Se definirmos na etapa 4 a função custo mı́nimo como sendo nula, então, para as restantes etapas, podemos defini-la recursivamente. De acordo com as expressões (1.23)–(1.27), podemos definir a função recursiva de retrocesso, que se identifica com a melhor polı́tica de decisão (controlo óptimo) como: f (4, 6, 6) = 0 , f (i, j, 6) = min {k∈E(i+1)} {c(i, j, k) + f (i + 1, k, 6)}, i ∈ {3, 2, 1}, j ∈ E(i) . Esta função é trivialmente generalizada para um problema arbitrário, com n etapas, onde se pretende ir de um ponto inicial pi para um ponto final pf com “custo” óptimo (mı́nimo ou máximo): ( f (n, pf , pf ) = 0 , f (i, j, pf ) = extr{k∈E(i+1)} {c(i, j, k) + f (i + 1, k, pf )}, i ∈ {n − 1, . . . , 1}, j ∈ E(i) , onde extr significa min ou max, consoante se pretenda minimizar ou maximizar. No Apêndice D damos definições em Maple para a resolução de um qualquer problema de percurso. Por exemplo, para resolvermos o Problema 22 com o nosso programa Maple começamos por definir o problema: > custos := [[1,2,2],[1,3,4],[2,4,7],[2,5,7],[3,4,8],[3,5,5],[4,6,3],[5,6,4]]: > etapas := [[1],[2,3],[4,5],[6]]: > problema := [custos, min, etapas]: # segundo argumento = min ou max O custo mı́nimo é então obtido por intermédio da função custoOptimo > custoOptimo(problema); 12 enquanto o respectivo caminho é dado pela função solucaoOptima > solucaoOptima(problema); [1, 2, 4, 6] 1.5 Programação Dinâmica em tempo discreto 25 INVESTIMENTO meio 1 meio 2 meio 3 meio 4 m.u.m. JORNAL REVISTA TV RÁDIO 0 0 0 0 0 1 1.20 2.00 1.30 1.15 2 2.70 2.80 2.90 2.50 3 4.20 4.65 4.95 4.20 4 6.00 6.60 7.00 6.00 5 7.65 8.75 8.50 8.10 6 9.30 10.80 12.30 10.50 7 11.06 12.95 15.05 12.60 8 12.80 15.20 18.00 15.20 9 14.40 17.10 20.70 23.00 10 16.00 19.00 24.00 23.50 Tabela 1.3: Lucros obtidos pelo investimento nos diferentes meios publicitários 1.5.2 Problema de investimento O problema de investimento é um problema de distribuição. Este tipo de problemas envolvem a distribuição de recursos por actividades de modo a optimizar uma qualquer medida de efectividade. Existem vários tipos de problemas de distribuição, de acordo com a interpretação que dermos aos recursos que vamos distribuir, às actividades consideradas e à medida de efectividade que queremos optimizar. No caso particular do exemplo que vamos estudar, consideramos que o recurso disponı́vel é dinheiro (que será dado em milhares de unidades monetárias – m.u.m.); as actividades consideradas serão programas de investimento especı́ficos; e a medida de efectividade a optimizar corresponde à maximização do lucro total, daı́ ser designado por problema de investimento. Problema 23. Acabou de chegar ao mercado um novo produto e o fabricante está ansioso por determinar a quantidade que deve investir nos diversos meios publicitários, de modo a maximizar o seu lucro. Há quatro tipos de meios publicitários sob consideração do fabricante: jornal, revista, televisão e rádio. A Tabela 1.3 mostra o lucro esperado quando se investe em cada meio publicitário. É ainda de salientar que, por exemplo, um novo investimento de 10000 unidades monetárias num jornal, vai aumentar o lucro de 10000 para 16000, ou seja, proporciona um retorno de 60% no investimento. Pretende-se saber: 1. Se estiverem disponı́veis 10000 u.m. para publicidade, quanto deverá ser investido em cada meio publicitário de modo a maximizarmos o lucro total? 2. Se estiverem disponı́veis somente 5000 u.m., como é que estes devem ser distribuı́dos de 26 Optimização em espaços de dimensão finita modo a maximizarmos o lucro? Vamos resolver o Problema 23 pelo método da Programação Dinâmica. Para isso par- ticionamos o problema em 4 etapas, associando a cada uma delas um sub-problema. Na primeira etapa consideramos que só existe um meio publicitário, por exemplo, o jornal, e calculamos quanto deverá ser investido nesse meio, quando possuı́mos um investimento inicial de 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ou 10 m.u.m. Na segunda etapa alargaremos o número de meios publicitários para dois, o jornal e a revista, e calculamos quanto se deverá investir em ambos os meios quando se tem para aplicar as mesmas quantias referidas anteriormente. Seguindo este raciocı́nio, na etapa 3 teremos três meios publicitários (jornal, revista e tv) e na etapa 4 teremos os quatro meios publicitários (jornal, revista, tv e rádio) e um sub-problema idêntico ao problema inicial. Consideremos a seguinte notação: • i – variável de etapa (varia entre 1 e 4); • m – designa o meio publicitário que estamos a utilizar (m varia entre 1 e 4, correspon- dendo o meio publicitário 1 ao jornal; o meio publicitário 2 à revista; o meio publicitário 3 à tv; e o meio publicitário 4 ao rádio); • x – variável que designa a quantidade de dinheiro a investir, em milhares de unidades monetárias, m.u.m. (varia entre 0 e 10 m.u.m.); • p(m, x) – lucro que se obtém ao se investirem x m.u.m. no meio publicitário m, com m ∈ {1, 2, 3, 4} e x ∈ {0, 1, · · · , 10}; • l(i, x) – lucro máximo em m.u.m. na etapa i, quando se investem x m.u.m. nos meios publicitários existentes nessa etapa, onde i ∈ {1, 2, 3, 4} e x ∈ {0, 1, · · · , 10}; • q(m, x) – quantidade óptima (em m.u.m.) a investir no meio publicitário m, m ∈ {1, 2, 3, 4}, quando temos disponı́veis para investimento nos meios publicitários j, j ∈ {a ∈ N : a ≤ m}, x m.u.m. (x ∈ {0, 1, · · · , 10}). Notamos que as funções p(m, x), com m ∈ {1, 2, 3, 4}, são todas estritamente crescentes. Como queremos obter o lucro máximo, quanto maior for a quantidade investida maior será também o lucro obtido. Convém, então, investirmos todo o capital disponı́vel. Estamos a supor que quando investimos em mais do que um meio publicitário, o lucro que obtemos ao investir x no meio publicitário i é independente do lucro que obtemos ao investir y no meio publicitário j, i, j ∈ {1, 2, 3, 4}, com i 6= j e x, y ∈ {0, 1, · · · , 10} tal que 0 ≤ x + y ≤ 10. Primeiro sub-problema (etapa 1) O sub-problema consiste em considerar que o fabricante dispõe apenas de um meio publicitário disponı́vel (o jornal, que considerámos o meio publicitário 1), e que possui entre 0 a 1.5 Programação Dinâmica em tempo discreto 27 10 m.u.m. iniciais para aplicar totalmente no meio existente, ou seja, pode investir 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ou 10 m.u.m. Para cada quantidade inicial de m.u.m., que quantidade deve o fabricante investir no meio publicitário 1, de modo a que o seu lucro seja máximo? Consultando a Tabela 1.3, definimos a função p(1, x), que nos dá o lucro proveniente de investirmos x m.u.m., x ∈ {0, 1, · · · , 10}, no meio publicitário 1, do seguinte modo: p(1, 0) = 0, p(1, 1) = 1.20, p(1, 2) = 2.70, p(1, 3) = 4.20, p(1, 4) = 6.00, p(1, 5) = 7.65, p(1, 6) = 9.30, p(1, 7) = 11.06, p(1, 8) = 12.80, p(1, 9) = 14.40 e p(1, 10) = 16.00. Verificamos que esta função é crescente e sempre superior ao capital investido. Logo, de modo a obtermos o maior lucro possı́vel, devemos investir toda a quantidade que temos disponı́vel para tal. Vamos considerar 11 estados de acordo com a quantia inicial que temos para investir (de 0 a 10). A função que nos devolve o lucro máximo, que se obtém ao investirmos x m.u.m. (x ∈ {0, 1, · · · , 10}) no meio publicitário 1, é dada por: l(1, x) = max {p(1, y)} , {y=0,··· ,x} ∀x ∈ {0, 1, · · · , 10} . A função que nos dá a quantidade ideal a investir nos meios publicitários existentes na etapa 1 (isto é, no meio publicitário 1), quando temos x m.u.m. para tal, é definida por q(1, x) = y, com p(1, y) = l(1, x), y ∈ {0, · · · , x}. A Tabela 1.4 sintetiza os resultados desta etapa 1. Ela diz-nos que se o fabricante tiver uma quantia inteira x, entre 0 a 10 m.u.m., para investir exclusivamente no meio publicitário 1, então o melhor a fazer é investir a totalidade da quantia: deve investir q(1, x) = x m.u.m. para obter um lucro máximo de l(1, x) m.u.m. Segundo sub-problema (etapa 2) A questão que agora se coloca é a seguinte. Se o fabricante tiver uma quantia inteira para investir nos meios publicitários 1 e 2, entre 0 e 10 m.u.m., que quantia deve investir em cada um deles, de modo a obter o maior lucro possı́vel? A função p(2, x) devolve o lucro obtido quando se aplicam x m.u.m. no meio publicitário 2. É definida de acordo com os dados da Tabela 1.3 referentes a este meio, ou seja: p(2, 0) = 0, p(2, 1) = 2.00, p(2, 2) = 2.80, p(2, 3) = 4.65, p(2, 4) = 6.60, p(2, 5) = 8.75, p(2, 6) = 10.80, p(2, 7) = 12.95, p(2, 8) = 15.20, p(2, 9) = 17.10 e p(2, 10) = 19.00. Tal como já foi referido, uma vez que as funções p(1, x) e p(2, x) são estritamente crescentes para todo o x ∈ {0, 1, · · · , 10}, de modo a que o lucro seja máximo temos que investir, entre os dois meios publicitários, todo o capital disponı́vel para esse fim. Também sabemos que podemos ter uma quantia entre 0 e 10 para investir nestes dois meios publicitários e que, para cada valor a investir, poderemos ter uma (no caso em que temos somente 0 m.u.m.) ou mais hipóteses de distribuição. Pretendemos determinar para qual destas hipóteses o lucro é máximo, para cada um dos 11 casos de investimento. Para cada quantia a investir, x, l(2, x) é o maior lucro associado às diferentes distribuições que se podem fazer com x m.u.m. entre os meios 28 Optimização em espaços de dimensão finita ESTADO 1 2 x l(1, x) q(1, x) (m.u.m) (m.u.m) (m.u.m) 0 1 l(1, 0) = maxy=0 {p(1, y)} = max{p(1, 0)} = 0 l(1, 1) = max{y=0,1} {p(1, y)} = max{p(1, 0), p(1, 1)} q(1, 0) = 0 q(1, 1) = 1 = max{0, 1.20} = 1.20 3 2 l(1, 2) = max{y=0,1,2} {p(1, y)} = max{p(1, 0), p(1, 1), p(1, 2)} q(1, 2) = 2 = max{0, 1.20, 2.70} = 2.70 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 l(1, 3) = max{y=0,··· ,3} {p(1, y)} = 4.20 l(1, 4) = max{y=0,··· ,4} {p(1, y)} = 6.00 l(1, 5) = max{y=0,··· ,5} {p(1, y)} = 7.65 l(1, 6) = max{y=0,··· ,6} {p(1, y)} = 9.30 l(1, 7) = max{y=0,··· ,7} {p(1, y)} = 11.06 l(1, 8) = max{y=0,··· ,8} {p(1, y)} = 12.80 l(1, 9) = max{y=0,··· ,9} {p(1, y)} = 14.40 l(1, 10) = max{y=0,··· ,10} {p(1, y)} = 16.00 Tabela 1.4: Resultados da etapa 1 q(1, 3) = 3 q(1, 4) = 4 q(1, 5) = 5 q(1, 6) = 6 q(1, 7) = 7 q(1, 8) = 8 q(1, 9) = 9 q(1, 10) = 10 1.5 Programação Dinâmica em tempo discreto 29 publicitários 1 e 2. Como calcular esse lucro? Para um capital inicial de x, se a distribuição óptima corresponder a investir y m.u.m. no meio publicitário 1 e z m.u.m. no meio publicitário 2, y, z ∈ {0, 1, · · · , 10} e x = y + z, então o lucro do investimento é dado pela soma do lucro que se obtém ao investirmos y m.u.m. no meio publicitário 1 e z m.u.m. no meio publicitário 2. A distribuição óptima x = y + z (a que conduz ao lucro máximo) é obtida comparando todas as possı́veis distribuições dos x m.u.m. pelos dois meios publicitários. Uma vez que já sabemos o resultado óptimo da etapa 1, l(1, x), e já que temos a função de lucro associada ao meio publicitário 2, p(2, x), então o lucro máximo é obtido através da função: l(2, x) = max {p(2, y) + l(1, x − y)} , {y=0,··· ,x} 0 ≤ x ≤ 10 . A quantidade ideal a investir nos dois meios publicitários será: q(2, x) = y , y ∈ {0, 1, · · · , x}, e com p(2, y) + l(1, x − y) = l(2, x) , q(1, x − y) = x − y . Os resultados podem ser consultados na Tabela 1.5. A resposta ao sub-problema é então: se tivermos um valor x entre 0 a 10 m.u.m. para investir nos meios publicitários 1 (jornal) e 2 (revista), então devemos investir q(2, x) = y m.u.m. no meio publicitário 2 e q(1, x−y) = x−y m.u.m. no meio publicitário 1. O lucro máximo é dado por l(2, x) = max {p(2, y) + l(1, x − y)} , {y=0,··· ,x} de acordo com a Tabela 1.5. Terceiro sub-problema (etapa 3) Se existirem 3 meios publicitários (meio publicitário 1 o jornal, meio publicitário 2 a revista, meio publicitário 3 a tv), como deverá o fabricante distribuir entre eles uma quantia compreendida entre 0 a 10 m.u.m. de modo a que o lucro retirado desse investimento seja máximo? Este sub-problema resolve-se de modo semelhante ao sub-problema anterior (etapa 2). Consideramos a função p(3, x) que devolve o lucro obtido quando se investem x m.u.m. (x = 0, . . . , 10) no meio publicitário 3. De acordo com a Tabela 1.3 vem que p(3, 0) = 0, p(3, 1) = 1.30, p(3, 2) = 2.90, p(3, 3) = 4.95, p(3, 4) = 7.00, p(3, 5) = 8.50, p(3, 6) = 12.30, p(3, 7) = 15.05, p(3, 8) = 18.00, p(3, 9) = 20.70 e p(3, 10) = 24.00. O lucro máximo que se pode obter ao investir uma quantidade x ∈ {0, · · · 10} m.u.m. na etapa 3 é dado pela função l(3, x) = max {p(3, y) + l(2, x − y)} {y=0,··· ,x} 30 Optimização em espaços de dimensão finita ESTADO x (m.u.m) 1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 l(2, x) (m.u.m) l(2, 0) = max{y=0} {p(2, y) + l(1, 0 − y)} max{p(2, 0) + l(1, 0)} = max{0 + 0} = 0 l(2, 1) = max{y=0,1} {p(2, y) + l(1, 1 − y)} = max{p(2, 0) + l(1, 1), p(2, 1) + l(1, 0)} =max{1.20,2.00}=2.00 l(2, 2) = max{y=0,1,2} {p(2, y) + l(2, 1 − y)} = max{2.70, 3.20, 2.80} = 3.20 l(2, 3) = max{y=0,··· ,3} {p(2, y) + l(1, 1 − y)} = max{4.20, 4.70, 4.00, 4.65} = 4.70 l(2, 4) = max{y=0,··· ,4} {p(2, y) + l(1, 1 − y)} = max{6.00, 6.20, 5.50, 5.75, 6.60} = 6.60 l(2, 5) = max{y=0,··· ,5} {p(2, y) + l(1, 1 − y)} = max{7.65, 8.00, 7.00, 7.35, 7.80, 8.75} = 8.75 l(2, 6) = max{y=0,··· ,6} {p(2, y) + l(1, 1 − y)} = max{9.30, 9.65, 8.80, 8.85, 9.30, 9.95, 10.80} = 10.80 l(2, 7) = max{y=0,··· ,7} {p(2, y) + l(1, 1 − y)} = max{11.06, 11.30, 10.45, 10.65, 10.80, 11.45, 12.00, 12.95} = 12.95 l(2, 8) = max{y=0,··· ,8} {p(2, y) + l(1, 1 − y)} = max{12.80, 13.06, 12.10, 12.30, 12.60, 12.95, 13.50, 14.15, 15.20} = 15.20 l(2, 9) = max{y=0,··· ,9} {p(2, y) + l(1, 1 − y)} = max{14.40, 14.80, 13.86, 13.95, 14.25, 14.75, 15.00, 15.65, 16.40, 17.10} = 17.10 l(2, 10) = max{y=0,··· ,10} {p(2, y) + l(1, 1 − y)} = max{16.00, 16.40, 15.60, 15.71, 15.90, 16.40 16.80, 17.15, 17.90, 18.30, 19.00} = 19.00 Tabela 1.5: Resultados da etapa 2 q(2, x) (m.u.m) q(1, x − y) (m.u.m) q(2, 0) = 0 q(1, 0) = 0 q(2, 1) = 1 q(2, 2) = 1 q(2, 3) = 1 q(2, 4) = 4 q(2, 5) = 5 q(2, 6) = 6 q(2, 7) = 7 q(2, 8) = 8 q(2, 9) = 9 q(2, 10) = 10 q(1, 1 − 1) = q(1, 0) =0 q(1, 2 − 1) q(1, 1) =1 q(1, 3 − 1) q(1, 2) =2 q(1, 4 − 4) q(1, 0) =0 q(1, 5 − 5) q(1, 0) =0 q(1, 6 − 6) q(1, 0) =0 q(1, 7 − 7) q(1, 0) =0 q(1, 8 − 8) q(1, 0) =0 q(1, 9 − 9) q(1, 0) =0 q(1, 10 − 10) q(1, 0) =0 1.5 Programação Dinâmica em tempo discreto 31 e as quantidades óptimas, em m.u.m., para se investir nos diferentes meios publicitários são obtidas através das fórmulas: q(3, x) = y , com p(3, y) + l(2, x − y) = l(3, x) , y ∈ {0, · · · , x} , q(2, x − y) = z , com p(2, z) + l(1, x − y − z) = l(2, x − y) , z ∈ {0, · · · , x − y} , q(1, x − y − z) = x − y − z . Estes valores, para os 11 estados da etapa 3, estão representados na Tabela 1.6. De acordo com ela, quando o fabricante tem um valor entre 0 e 10 m.u.m. para investir entre os meios publicitários 1 (jornal), 2 (revista) e 3 (tv), então deve investir uma totalidade de 10 m.u.m. distribuı́dos do seguinte modo: no meio publicitário 3 deve investir q(3, x) m.u.m., no meio publicitário 2 q(2, x − y) m.u.m. e no meio publicitário 1 q(1, x − y − z) m.u.m., obtendo então o lucro máximo de l(3, x) = max{y=0,··· ,x} {p(3, y) + l(2, x − y)}. Último sub-problema (etapa 4) e solução do Problema 23 Nesta etapa há quatro tipos de meios publicitários (1 o jornal, 2 a revista, 3 a tv e 4 o rádio). Disponı́vel um capital inteiro entre 0 e 10 m.u.m., quanto se deve investir em cada um deles de modo a obtermos o maior lucro possı́vel? Tendo em atenção a Tabela 1.3, a função p(4, x), que nos dá o lucro obtido quando se investem x m.u.m. (x = 0, . . . , 10) no meio publicitário 4, fica definida por: p(4, 0) = 0, p(4, 1) = 1.15, p(4, 2) = 2.50, p(4, 3) = 4.20, p(4, 4) = 6.00, p(4, 5) = 8.10, p(4, 6) = 10.50, p(4, 7) = 12.60, p(4, 8) = 15.20, p(4, 9) = 23.00 e p(4, 10) = 23.50. A função l(4, x) = max {p(4, y) + l(3, x − y)} , {y=0,··· ,x} dá-nos o lucro máximo que se pode obter ao investir x m.u.m., x = 0, . . . , 10, nos diferentes meios publicitários considerados. As quantidades óptimas de investimento, em m.u.m., são obtidas do seguinte modo: q(4, x) = y , com p(4, y) + l(3, x − y) = l(4, x) , y ∈ {0, · · · , x} , q(3, x − y) = w , com p(3, w) + l(2, x − y − w) = l(3, x − y) , w ∈ {0, · · · , x − y} , q(2, x − y − w) = z , com p(2, z) + l(1, x − y − w − z) = l(2, x − y − w) , z ∈ {0, · · · , x − y − w} , q(1, x − y − w − z) = x − y − w − z . Tal como fizemos para as etapas anteriores, esquematizamos numa tabela (Tabela 1.7) o que acontece em cada um dos 11 possı́veis estados. Quando existem quatro meios publicitários e uma quantia para investimento entre 0 e 10 m.u.m., o lucro máximo é obtido da seguinte maneira: investindo q(4, x) m.u.m. no meio publicitário 4; q(3, x − y) m.u.m. no meio publicitário 3; q(2, x − y − w) m.u.m. no meio publicitário 2; e q(1, x − y − w − z) m.u.m. 32 Optimização em espaços de dimensão finita ESTADO x (m.u.m) 1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 l(3, x) (m.u.m) l(3, 0) = max{y=0} {p(3, y) + l(2, 0 − y)} = max{p(3, 0) + l(2, 0)} = max{0 + 0} = max{0} = 0 l(3, 1) = max{y=0,1} {p(3, y) + l(2, 1 − y)} = max{p(3, 0) + l(2, 1 − 0), p(3, 1)+ +l(2, 1 − 1)} = max{p(3, 0) + l(2, 1), p(3, 1)+ +l(2, 0)} = max{0 + 2.00, 1.30 + 0} = max{2.00, 1.30} = 2.00 l(3, 2) = max{y=0,1,2} {p(3, y) + l(2, 2 − y)} = max{p(3, 0) + l(2, 2 − 0), p(3, 1)+ +l(2, 2 − 1), p(3, 2) + l(2, 2 − 2)} = max{p(3, 0) + l(2, 2), p(3, 1) + l(2, 1), p(3, 2) + l(2, 0)} = max{3.20, 3.30, 2.90} = 3.30 l(3, 3) = max{y=0,··· ,3} {p(3, y) + l(2, 3 − y)} = max{4.70, 4.50, 4.90, 4.95} = 4.95 l(3, 4) = max{y=0,··· ,4} {p(3, y) + l(2, 4 − y)} = max{6.60, 6.00, 6.10, 6.95, 7.00} = 7.00 l(3, 5) = max{y=0,··· ,5} {p(3, y) + l(2, 5 − y)} = max{8.75, 7.90, 7.60, 8.15, 9.00, 8.50} = 9.00 l(3, 6) = max{y=0,··· ,6} {p(3, y) + l(2, 6 − y)} = max{10.80, 10.05, 9.50, 9.65, 10.20, 10.50, 12.30} = 12.30 l(3, 7) = max{y=0,··· ,7} {p(3, y) + l(2, 7 − y)} = max{12.95, 12.10, 11.65, 11.55, 11.70, 11.70, 14.30, 15.05} = 15.05 l(3, 8) = max{y=0,··· ,8} {p(3, y) + l(2, 8 − y)} = max{15.20, 14.25, 13.70, 13.70, 13.60, 13.20, 15.50, 17.05, 18.00} = 18.00 l(3, 9) = max{y=0,··· ,9} {p(3, y) + l(2, 9 − y)} = max{17.10, 16.50, 15.85, 15.75, 15.75, 15.10, 17.00, 18.25, 20.00, 20.70} = 20.70 l(3, 10) = max{y=0,··· ,10} {p(3, y)+ +l(2, 10 − y)} = max{19.00, 18.40, 18.10, 17.90, 17.80, 17.25, 18.90, 19.75, 21.20, 22.70, 24.00} = 24.00 Tabela 1.6: Resultados da etapa 3 q(3, x) (m.u.m) q(2,x-y) (m.u.m) q(1,x-y-z) (m.u.m) q(3, 0) =0 = q(2, 0) =0 q(1, 0) =0 q(3, 1) =0 = q(2, 1) =1 =q(1,0) =0 q(3, 2) =1 = q(2, 1) =1 = q(1, 0) =0 q(3, 3) =3 = q(2, 0) =0 q(1,0) =0 q(3, 4) =4 = q(2, 0) =0 q(1,0) =0 q(3, 5) =4 = q(2, 1) =1 q(1,0) =0 q(3, 6) =6 = q(2, 0) =0 q(1, 0) =0 q(3, 7) =7 = q(2, 0) =0 q(1, 0) =0 q(3, 8) =8 = q(2, 0) =0 q(1, 0) =0 q(3, 9) =9 = q(2, 0) =0 q(1,0) =0 q(3, 10) = 10 = q(2, 0) =0 q(1, 0) =0 1.5 Programação Dinâmica em tempo discreto ESTADO x (m.u.m) 1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 9 11 10 l(4, x) (m.u.m) l(4, 0) = max{y=0} {p(4, y) + l(3, 0 − y)} = max{p(4, 0) + l(3, 0)} = max{0 + 0} = max{0} = 0 l(4, 1) = max{y=0,1} {p(4, y) + l(3, 1 − y)} = max{p(4, 0) + l(3, 1), p(4, 1) + l(3, 0)} = max{2.00, 1.15} = 2.00 l(4, 2) = max{y=0,1,2} {p(4, y) + l(3, 2 − y)} = max{3.30, 3.15, 2.50} = 3.30 l(4, 3) = max{y=0,··· ,3} {p(4, y) + l(3, 3 − y)} = max{4.95, 4.45, 4.50, 4.20} = 4.95 l(4, 4) = max{y=0,··· ,4} {p(4, y) + l(3, 4 − y)} = max{7.00, 6.10, 5.80, 6.20, 6.00} = 7.00 l(4, 5) = max{y=0,··· ,5} {p(4, y) + l(3, 5 − y)} = max{9.00, 8.15, 7.45, 7.50, 8.00, 8.10} = 9.00 l(4, 6) = max{y=0,··· ,6} {p(4, y) + l(3, 6 − y)} = max{12.30, 10.15, 9.50, 9.15, 9.30, 10.10, 10.50} = 12.30 l(4, 7) = max{y=0,··· ,7} {p(4, y) + l(3, 7 − y)} = max{15.05, 13.45, 11.50, 11.20, 10.95, 11.40, 12.50, 12.60} = 15.05 l(4, 8) = max{y=0,··· ,8} {p(4, y) + l(3, 8 − y)} = max{18.00, 16.20, 14.80, 13.20, 13.00, 13.05, 13.80, 14.60, 15.20} = 18.00 l(4, 9) = max{y=0,··· ,9} {p(4, y) + l(3, 9 − y)} = max{20.70, 19.15, 17.55, 16.50, 15.00, 15.10, 15.45, 15.90, 17.20, 23.00} = 23.00 l(4, 10) = max{y=0,··· ,10} {p(4, y) + l(3, 10 − y)} = max{24.00, 21.85, 20.50, 19.25, 18.30, 17.10, 17.50, 17.55, 18.50, 25.00, 23.50} = 25.00 33 q(4, x) (m.u.m) q(3, x − y) (m.u.m) q(2, x − y − w) (m.u.m) q(1, x − y − w − z) (m.u.m) q(4, 0) =0 0 0 q(4, 1) =0 q(3, 0) =0 q(3, 1 − 0) = q(3, 1) =0 1 0 q(4, 2) =0 q(3, 2) =1 1 0 q(4, 3) =0 q(3, 3) =3 0 0 q(4, 4) =0 q(3, 4) =4 0 0 q(4, 5) =0 q(3, 5) =4 1 0 q(4, 6) =0 q(3, 6) =6 0 0 q(4, 7) =0 q(3, 7) =7 0 0 q(4, 8) =0 q(3, 8) =8 0 0 q(4, 9) =9 q(3, 0) =0 0 0 q(4, 10) =9 q(3, 1) =0 1 0 Tabela 1.7: Resultados da etapa 4 34 Optimização em espaços de dimensão finita no meio publicitário 1. O lucro máximo é de l(4, x) = max{y=0,··· ,x} {p(4, y) + l(3, x − y)}, x = 0, · · · , 10. Estamos agora aptos para responder às duas questões colocadas pelo Problema 23. Se estiverem disponı́veis 10 m.u.m. para investir nos quatro meios publicitários, de acordo com a Tabela 1.7 o fabricante deve investir 0 m.u.m. no jornal (meio publicitário 1); 1 m.u.m. na revista (meio publicitário 2); 0 m.u.m. na tv (meio publicitário 3); e 9 m.u.m. na rádio (meio publicitário 4). O lucro é de l(4, 10) = 25.00 m.u.m. Caso o fabricante só disponha de 5 m.u.m. para investir nos mesmos meios publicitários, deve investir 0 m.u.m. no jornal; 1 m.u.m. na revista; 4 m.u.m. na tv; e 0 m.u.m. na rádio. O lucro é então de l(4, 5) = 9.00 m.u.m. De um modo geral, quando temos x m.u.m. para investir, x ∈ {0, · · · , 10}, a função de lucro máximo é dada por ( l(1, x) = p(1, x) l(i, x) = max{y=0,··· ,x} {p(i, y) + l(i − 1, x − y)} , para i ∈ {2, 3, 4} e a quantidade óptima a investir no meio publicitário i, i ∈ {1, 2, 3, 4}, por q(1, x) = x , q(i, x) = y , com p(i, y) + l(i − 1, x − y) = l(i, x) , y ∈ {0, · · · , x} . No Apêndice D definimos em Maple as funções lucroMaximo e investimentoOptimo que permitem a resolução de um qualquer problema de investimento. Para o Problema 23 fazemos: > meio1 := [[0,1,0.00],[1,1,1.20],[2,1,2.70],[3,1,4.20],[4,1,6.00], > [5,1,7.65],[6,1,9.30],[7,1,11.06],[8,1,12.80],[9,1,14.40],[10,1,16.00]]: > meio2 := [[0,2,0.00],[1,2,2.00],[2,2,2.80],[3,2,4.65],[4,2,6.60], > [5,2,8.75],[6,2,10.80],[7,2,12.95],[8,2,15.20],[9,2,17.10],[10,2,19.00]]: > meio3 := [[0,3,0.00],[1,3,1.30],[2,3,2.90],[3,3,4.95],[4,3,7.00], > [5,3,8.50],[6,3,12.30],[7,3,15.05],[8,3,18.00],[9,3,20.70],[10,3,24.00]]: > meio4 := [[0,4,0.00],[1,4,1.15],[2,4,2.50],[3,4,4.20],[4,4,6.00],[5,4,8.10], > [6,4,10.50],[7,4,12.60],[8,4,15.20],[9,4,23.00],[10,4,23.50]]: > problema := [meio1,meio2,meio3,meio4]: > lucroMaximo(problema,5); > investimentoOptimo(problema,5); > lucroMaximo(problema,10); > investimentoOptimo(problema,10); 9.00 [0, 1, 4, 0] 25.00 [0, 1, 0, 9] Capı́tulo 2 Cálculo das Variações No Cálculo das Variações minimizamos funcionais do tipo integral. As funções integrandas dependem de funções desconhecidas e suas derivadas. Este tipo de problemas surgem naturalmente em Mecânica, Geometria, Electrodinâmica, Geologia, Biologia, Hidrodinâmica, etc. Começamos com a formulação de vários problemas clássicos. 2.1 Formulação de alguns problemas variacionais Os exemplos que se seguem são casos particulares do problema estudado em §2.2. Exemplo 24 (distância mı́nima entre dois pontos). Qual é a distância mais curta entre dois pontos do plano Euclideano? Sem perda de generalidade, colocamos um dos pontos na origem (0, 0), o outro em (a, 0). Consideremos o conjunto de todas as funções y(x), 0 ≤ x ≤ a, continuamente diferenciáveis e satisfazendo as condições y(0) = 0 = y(a). O objectivo é descobrir a função y(·) que tem o gráfico de comprimento mı́nimo: Z a Z ap 1 + y ′ (x)2 dx −→ min , J= ds = 0 0 y(0) = 0 , y(a) = 0 . Exemplo 25 (gráfico com superfı́cie de revolução mı́nima). Rodemos a porção da curva y(x) de (a, c) a (b, d) em torno do eixo dos y. Que função y(·) conduz à superfı́cie com área mı́nima? O objectivo é agora o de minimizar a área de superfı́cie: J= Z b 2πxds = 2π a Z b a y(a) = c , p x 1 + y ′ (x)2 dx −→ min , y(b) = d . Segue-se o problema que deu origem ao Cálculo das Variações. O nome braquistócrona 35 36 Cálculo das Variações vem do grego “braquis” (mı́nimo) e “tócrona” (tempo). Trata-se pois de um problema de tempo mı́nimo (minimizar tempo). Exemplo 26 (problema de braquistócrona). A questão foi proposta por John Bernoulli em 1696, através da publicação de um artigo intitulado “Um problema ao qual os matemáticos são chamados”. O problema foi colocado por palavras como se segue: Dados dois pontos A e B num plano vertical, determinar o caminho para que um corpo, sob a força única do seu próprio peso e na ausência de atrito, desça de A a B em tempo mı́nimo. A energia cinética 12 mv 2 do corpo de massa m que se encontra a deslizar é, em cada instante, igual à energia potencial perdida desde a posição inicial. Usando um sistema de coordenadas apropriado podemos considerar, sem perda de generalidade, A = (0, 0), B = (b, d) com b > 0 e d > 0, pelo que temos, em cada momento, mv 2 = mgy . 2 Concluı́mos que v= p 2gy . O tempo total T necessário para o corpo deslizar até à posição final (b, d) é dado por Z bp Z 1 + y ′ (x)2 ds p dx . = T = v 2gy(x) 0 O problema é então formulado matematicamente como se segue: Z bp 1 + y ′ (x)2 p T [y(·)] = dx −→ min , 2gy(x) 0 y(0) = 0 , y(b) = d . Seguem-se dois exemplos do Cálculo das variações que pertencem à famı́lia dos chamados problemas isoperimétricos (ver secção 2.5). Exemplo 27 (catenária). Se suspendermos um fio de comprimento γ entre dois pontos (−a, b) e (a, b), a > 0, b > 0, γ > 2a, que forma tomará o fio? Cada comprimento infinitesimal ds do fio contribui com ρgyds de energia potencial para a energia potencial total J do fio, Z a p Z a y 1 + y ′2 dx , yds = ρg J = ρg −a −a onde y = y(x) é a forma do fio suspenso, ρ a densidade do fio por unidade de comprimento e g a gravidade. O fio em repouso terá a forma y(x), −a ≤ x ≤ a, que minimiza a energia 2.2 Problema fundamental e as equações necessárias de Euler-Lagrange 37 potencial J, sem esquecer a restrição que a função y(·) deve ter o comprimento dado γ: Z a p J[y(·)] = ρg y(x) 1 + y ′2 (x)dx −→ min , Z a−a p 1 + y ′2 (x)dx = γ , −a y(−a) = b , y(a) = b . Exemplo 28 (problema de Dido). A história é-nos contada pelo poeta Romano Virgı́lio, em 814 a.C. Depois do marido ter sido morto, Dido fugiu para a África Mediterrânica. Aı́ ela comprou, de um rei ingénuo, todo o terreno que pudesse ser incluı́do pela pele de um boi. Depois de cortar a pele em tiras bem finas e amarrar as pontas umas às outras, ela encerrou uma parcela de terreno que veio a tornar-se a cidade-estado de Cartago. O “problema de Dido” pode ser colocado como se segue. Concedida uma porção da costa de África como fronteira, qual a maior área que pode ser incluı́da pelo perı́metro dado que permanece? Considerando-se a costa como um segmento de recta [a, b] e o interior da área como sendo circunscrito pelo gráfico da função y(·), y(x) ≥ 0 e y(a) = 0 = y(b), obtemos o seguinte problema: maximizar a área J= Z b y(x)dx a sujeita à restrição do perı́metro Z bp 1 + y ′ (x)2 dx = γ . a Os problemas isoperimétricos, exemplo dos quais é problema de Dido, são estudados em §2.5. Começamos com o estudo do problema básico do Cálculo das Variações. 2.2 Problema fundamental e as equações necessárias de EulerLagrange A funcional fundamental do Cálculo das Variações tem a forma Z b f (x, y(x), y ′ (x))dx . F [y(·)] = (2.1) a Neste momento não especificamos a classe de funções admissı́veis, assumindo simplesmente que as funções admitem derivadas contı́nuas, tantas vezes quantas as necessárias; nem especificaremos o que entendemos por vizinhança de uma função, para a qual determinada função é minimizante local. O problema será definido com rigor posteriormente. Vejamos se o problema de minimização da funcional (2.1) está bem colocado, i.e., se (pelo menos em casos particulares simples) existe solução única. O caso particular Z bp C[y(·)] = 1 + (y ′ (x))2 dx a 38 Cálculo das Variações da funcional (2.1) dá-nos o comprimento da curva do plano y = y(x) de (a, y(a)) a (b, y(b)) (Exemplo 24). Como sabemos, o minimizante é a recta: y(x) = kx + d. Sem condições de fronteira, i.e., sem especificarmos y(a) e y(b), k e d são constantes arbitrárias e a solução não é única. Claramente, não podemos impor mais do que duas restrições a y(·), porque y(x) = kx + d tem apenas duas constantes arbitrárias. Normalmente, são especificadas condições de fronteira y(a) = α, y(b) = β, mas o problema sem condições de fronteira (ou com apenas uma delas) também faz sentido. Para os problemas da Fı́sica-Matemática (pelo menos sob certas condições), a solução existe e é única. Neste curso assumimos sempre que os problemas admitem solução. Vamos considerar, por agora, o problema de minimizar a funcional (2.1) sem restrições adicionais e tentar resolvê-lo pelas técnicas elementares da Programação Matemática não-linear que vimos em §1. Para isso vamos discretizar a funcional numa função de várias variáveis. Este foi, essencialmente, o método originalmente usado por Euler para a obtenção da chamada condição necessária de Euler-Lagrange (condição de optimalidade essa primeiramente obtida por Euler e, mais tarde, novamente demonstrada por Lagrange, de modo mais rigoroso, por recurso “às variações” – vide §2.4). Teorema 29 (condição necessária de Euler-Lagrange e condições de transversalidade). Se y(·) : [a, b] → R for solução do problema de minimizar (2.1): Z b F [y(·)] = f (x, y(x), y ′ (x))dx −→ min ; a então y(·) satisfaz a equação de Euler-Lagrange ∂f d ∂f x, y(x), y ′ (x) = x, y(x), y ′ (x) ′ dx ∂y ∂y (2.2) e as condições de transversalidade ∂f ′ x, y(x), y (x) = 0, ∂y ′ x=a ∂f ′ x, y(x), y (x) = 0. ∂y ′ x=b (2.3) Demonstração. (seguindo Euler) Começamos por subdividir o intervalo [a, b] em n partições, cada uma de comprimento h = (b − a)/n. Sejam xi = a + ih, yi = y(xi ), i = 0, . . . , n. Então, y0 = y(a) e yn = y(b). Aproximando (2.1) pela soma de Riemann obtemos: Z b n−1 X f (xk , yk , y ′ (xk )) f (x, y(x), y ′ (x))dx ≈ h a ≈h k=0 n−1 X k=0 f yk+1 − yk xk , yk , h (2.4) =: Φ(y0 , . . . , yn ) . Uma vez que Φ(y0 , . . . , yn ) é uma função (e não uma funcional) de n + 1 variáveis independentes, temos a seguinte condição necessária (Teorema 9): ∂Φ(y0 , . . . , yn ) = 0, ∂yi i = 0, . . . , n . (2.5) 2.2 Problema fundamental e as equações necessárias de Euler-Lagrange 39 Usamos a notação usual para as derivadas parciais: fx = A derivada total df dt ∂f , ∂x fy = ∂f , ∂y fy′ = ∂f . ∂y ′ é dada por: d f x, y(x), y ′ (x) = fx x, y(x), y ′ (x) + fy x, y(x), y ′ (x) y ′ (x) + fy′ x, y(x), y ′ (x) y ′′ (x) . dt Analisando (2.4) vemos que a variável yi aparece na soma apenas uma vez, quando i = 0 ou i = n, duas vezes nos outros casos. Usando a regra da cadeia, a condição (2.5) toma a forma: 0 fy′ x0 , y0 , y1 −y ∂Φ y1 − y 0 y1 − y 0 d h h f x0 , y0 , =0⇔ =0 = 0 ⇔ fy x0 , y0 , − ∂y0 dy0 h h h y1 − y 0 y1 − y 0 = fy′ x0 , y0 , ; ⇔ h fy x0 , y0 , h h (2.6) fy′ xn−1 , yn−1 , yn −yh n−1 ∂Φ yn − yn−1 d h f xn−1 , yn−1 , =0⇔ =0 =0⇔ ∂yn dyn h h (2.7) yn − yn−1 ⇔ fy′ xn−1 , yn−1 , = 0; h d yi+1 − yi yi − yi−1 ∂Φ = 0 (i = 1, . . . , n − 1) ⇔ h + f xi , yi , =0 f xi−1 , yi−1 , ∂yi dyi h h 1 yi − yi−1 1 yi+1 − yi yi+1 − yi ⇔ fy′ xi−1 , yi−1 , + fy xi , yi , − fy′ xi , yi , =0 h h h h h fy′ xi , yi , yi+1h−yi − fy′ xi−1 , yi−1 , yi −yh i−1 yi+1 − yi = fy xi , yi , . ⇔ h h (2.8) Tomando o limite h → 0 obtemos de (2.6) e (2.7) as condições de transversalidade (2.3); de (2.8) a equação de Euler-Lagrange (2.2). Desenvolvendo a derivada total da equação de Euler-Lagrange fy − d ′ dx fy = 0 obtemos uma equação diferencial ordinária de segunda ordem: fy − fxy′ − fyy′ y ′ − fy′ y′ y ′′ = 0 . (2.9) Isto significa que não faz sentido, de um modo geral, impor mais do que duas condições de fronteira à solução do problema de minimizar a funcional fundamental do Cálculo das Variações (2.1). Como dissemos, normalmente são especificados valores para y(a) e y(b): y(a) = α , y(b) = β . (2.10) Se repetirmos o processo aplicado na demonstração do Teorema 29 ao problema com condições de fronteira (2.10), obtemos de novo a equação de Euler-Lagrange (2.2), enquanto as condições de transversalidade são substituı́das por (2.10). 40 Cálculo das Variações Exercı́cio 8. Mostrar, por intermédio do processo de discretização e posterior passagem ao limite, método este usado na demonstração do Teorema 29, que se considerarmos o problema de minimizar (2.1) com condições y(a) = 0, y ′ (a) = 0 (condições estas tı́picas para um problema de Cauchy envolvendo uma equação diferencial ordinária de segunda ordem), então surge uma restrição adicional à equação de Euler-Lagrange (2.2): fy′ x=b = 0. Notar que resolver (2.2) com três condições de fronteira (y(a) = 0, y ′ (a) = 0, e fy′ x=b = 0) é, de um modo geral, inconsistente. Definição 30. Às soluções das equações de Euler-Lagrange (2.2) chamamos extremais. Exemplo 31. O problema consiste em encontrar a extremal de Euler-Lagrange ỹ(·) associada à funcional F [y(·)] = quando sujeita às condições de fronteira Z 1 0 y 2 + y ′2 − 2y dx y(0) = 1 , y(1) = 0 . (2.11) Neste caso f (x, y, y ′ ) = y 2 + (y ′ )2 − 2y e obtemos: fy = 2y − 2, fy′ = 2y ′ . A equação de Euler-Lagrange toma a forma: d 2y ′ = 2y − 2 ⇔ y ′′ − y + 1 = 0 . dx (2.12) É muito fácil resolver a equação diferencial ordinária de coeficientes constantes (2.12) que, sujeita às condições (2.11), nos conduz à extremal ỹ(x) = 1 − ex − e−x . e − e−1 (2.13) Outra possibilidade é recorrer a um Sistema de Computação Algébrica, como seja o Maple: > eqEL := diff(y(x),x,x)-y(x)+1=0: > dsolve({eqEL,y(0)=1,y(1)=0},y(x)); −x e + y (x) = − e−1 −e1 ex e−1 −e1 +1 Convém realçar que a função ỹ(·) encontrada no Exemplo 31 é apenas uma extremal: um candidato a minimizante. Apenas uma análise suplementar pode determinar se as extremais são, ou não, soluções do problema. Exercı́cio 9. Mostre que a extremal de Euler-Lagrange ỹ(·) determinada no Exemplo 31 é minimizante para o problema aı́ considerado. Sugestão: qualquer função admissı́vel y(·) pode ser escrita na forma y(x) = ỹ(x) + ϕ(x), x ∈ [0, 1], com ϕ(0) = ϕ(1) = 0. Calcule F [(ỹ + ϕ)(·)] − F [ỹ(·)] e mostre que F [(ỹ + ϕ)(·)] − F [ỹ(·)] = Z 0 1 ϕ2 + (ϕ′ )2 dx ≥ 0 . 2.2 Problema fundamental e as equações necessárias de Euler-Lagrange 41 Certas formas particulares do Lagrangeano f (·, ·, ·) (a função integranda f é normalmente apelidada de Lagrangeano) conduzem a uma simplificação da equação de Euler-Lagrange (2.2). Por exemplo: (i) Se f não depende explicitamente de y, então fy′ = constante (em Mecânica este facto corresponde à conservação da quantidade de movimento). (ii) Se f depender apenas de y ′ e fy′ y′ 6= 0, então (cf. (2.9)) y(x) = c1 x + c2 . Exercı́cio 10. Mostre que quando o problema é autónomo, i.e., quando f não depende explicitamente da variável independente x, então f − fy′ y ′ = constante . (2.14) (Em Mecânica, (2.14) corresponde à conservação de energia. Como veremos mais tarde, a igualdade (2.14) corresponde à preservação do valor do Hamiltoniano ao longo das extremais.) Para a resolução de um problema do Cálculo das Variações, nomeadamente em aplicações (e.g. Fı́sica), começa-se por determinar as extremais (as soluções das equações de EulerLagrange). Vamos usar o Sistema de Computação Algébrica Maple para definir a função EL que, dado o Lagrangeano f , devolve a respectiva equação diferencial de Euler-Lagrange. > restart; > arg := x,y(x),diff(y(x),x): > EL := f -> diff(D[3](f)(arg),x)-D[2](f)(arg) = 0: Determinemos as extremais para os exemplos formulados em §2.1. Exemplo 32 (distância mı́nima entre dois pontos – cf. Exemplo 24). Definimos o Lagrangeano f em Maple por > f := (x,y,v) -> sqrt(1+v^2): A equação de Euler-Lagrange pode ser obtida por intermédio da nossa função EL > EL(f); d2 dx2 y(x) 2 d d ( dx y(x))2 ( dx 2 y(x)) q − =0 d d (1 + ( dx y(x))2 )(3/2) 1 + ( dx y(x))2 A extremal do problema da distância mı́nima entre dois pontos é, como esperado, o segmento de recta ligando os pontos. > dsolve(EL(f)); y(x) = C1 x + C2 42 Cálculo das Variações Exemplo 33 (gráfico com superfı́cie de revolução mı́nima – cf. Exemplo 25). As extremais são determinadas de modo semelhante ao que vimos no exemplo anterior. > f := (x,y,v) -> x*sqrt(1+v^2): > EL(f); 2 2 d d d d y(x))2 ( dx x ( dx x ( dx y(x) 2 y(x)) 2 y(x)) q dx q + − =0 d d d y(x))2 )(3/2) (1 + ( dx 1 + ( dx y(x))2 y(x))2 1 + ( dx dsolve(EL(f)); p p ln( C1 x + −1 + C1 2 x2 ) ln( C1 x + −1 + C1 2 x2 ) y(x) = + C2 , y(x) = − + C2 C1 C1 > As constantes C1 e C2 são determinadas por intermédio das condições de fronteira y(a) = c e y(b) = d. Exemplo 34 (problema de braquistócrona – cf. Exemplo 26). Definimos o Lagrangeano em Maple por > f := (x,y,v) -> sqrt(1+v^2)/sqrt(2*g*y): Neste caso a equação de Euler-Lagrange já possui uma certa complexidade. > EL(f); √ √ d2 √ √ √ d2 d d 2 y(x))2 2 ( dx y(x))2 2 g 1 1 ( dx 1 ( dx 1 ( dx %1 2 g 2 y(x)) 2 y(x)) p √ + =0 − √ − p 2 %1 g y(x) 2 4 %1 (g y(x))(3/2) 4 (g y(x))(3/2) %1(3/2) g y(x) d y(x))2 %1 := 1 + ( dx > simplify(EL(f)); √ d2 d 2 1 2 (2 ( dx 2 y(x)) y(x) + ( dx y(x)) + 1) p =0 d 4 (1 + ( dx y(x))2 )(3/2) y(x) g y(x) O Maple apenas consegue apresentar a solução implicitamente. > dsolve(EL(f)); C1 y(x) − √ 1 2 − %1 + C1 arctan √ − x − C2 = 0, 2 %1 C1 y(x) − √ 1 2 %1 − C1 arctan √ − x − C2 = 0 2 %1 %1 := −y(x)2 + y(x) C1 Também não é capaz de determinar a solução na forma paramétrica. > dsolve(EL(f),y(x),parametric); 2.3 O método de Ritz 43 C1 y(x) − √ 1 2 − %1 + C1 arctan √ − x − C2 = 0, 2 %1 C1 y(x) − √ 1 2 %1 − C1 arctan √ − x − C2 = 0 2 %1 %1 := −y(x)2 + y(x) C1 As extremais para o problema de braquistócrona podem ser, no entanto, determinadas na forma paramétrica se notarmos que o problema é autónomo e que, por conseguinte, é válido o primeiro integral (2.14). > ELautonomo := f -> f(arg) - D[3](f)(arg) * diff(y(x),x) = K: > ELautonomo(f); q √ √ d 2 d y(x))2 2 ( dx 1 1 + ( dx y(x)) 2 1 p =K − q 2 2 1 + ( d y(x))2 pg y(x) g y(x) dx > extr := dsolve(ELautonomo(f),y(x),parametric); extr := [y( T ) = x( T ) = 1 2 g K 2 (1 + T 2) , 1 − T − arctan( T ) − arctan( T ) T 2 + 2 C1 g K 2 + 2 C1 g K 2 T 2 ] 2 g K 2 (1 + T 2 ) As expressões matemáticas de x e y são dadas em termos do parâmetro T . A constante C1 é a segunda constante de integração. A extremal pode ser calculada numericamente dados valores concretos para a condição de fronteira y(b) = d. De um modo geral, a equação diferencial de Euler-Lagrange é uma equação não-linear, de segunda ordem, de difı́cil resolução analı́tica. Por isso, na prática, as extremais são muitas vezes encontradas, de maneira aproximada, por métodos numéricos. Vamos considerar um desses métodos aproximativos na próxima secção. 2.3 O método de Ritz Vamos agora considerar uma abordagem aproximativa ao problema fundamental do Cálculo das Variações: F [y(·)] = Z a 1 b f (x, y, y ′ )dx −→ min , y(·) ∈ Y := y(·) ∈ C ([a, b]; R) : y(a) = ya , y(b) = yb . (2.15) (2.16) 44 Cálculo das Variações Quando usámos o método de discretização de Euler para demonstrar as condições necessárias de optimalidade do Teorema 29, obtivemos a equação intermediária (2.8) que nos permite escrever um algoritmo variacional de diferenças finitas para a resolução da equação de EulerLagrange (2.2): d fy′ = 0 , y(a) = ya , y(b) = yb . dx Um tal algoritmo pertence à classe de métodos numéricos baseados na ideia de aproximar fy − as derivadas de y(x) por uma diferença finita; e a funcional integral por uma soma finita. Diferentes métodos desta classe diferem apenas na maneira como as funções e integrais são discretizados. Aqui estamos interessados num outro tipo de métodos para a minimização das funcionais do Cálculo das Variações: o método de Ritz . O método de Ritz pode ser usado para obter boas aproximações das soluções de problemas complexos, problemas esses que são difı́ceis, ou mesmo impossı́veis, de resolver analiticamente. A ideia é a de reduzir o problema de minimizar (2.15) no espaço (2.16) das funções continuamente diferenciáveis que satisfazem y(a) = ya e y(b) = yb , ao problema de minimizar a mesma funcional (2.15) num subespaço das funções (2.16), de dimensão finita, que podem aproximar a solução. Na prática, o bom funcionamento do método vai depender duma boa escolha desse subespaço. Procuramos então a solução do problema (2.15)-(2.16) na forma yn (x) = ϕ0 (x) + n X ck ϕk (x) , (2.17) k=1 onde ϕ0 (x) satisfaz as condições de fronteira y(a) = ya , y(b) = yb . Uma escolha comum é a função linear yb − y a bya − ayb , β= . (2.18) b−a b−a As restantes funções ϕk , k = 1, . . . , n, chamadas funções base, satisfazem condições de homoϕ0 (x) = αx + β , com α = geneidade: ϕk (a) = ϕk (b) = 0 , k = 1, . . . , n . (2.19) Os ck , k = 1, . . . , n, são constantes. Resulta claro que (2.18) e (2.19) fazem com que as funções yn (x) (2.17) satisfaçam as condições de fronteira y(a) = ya e y(b) = yb do problema. A função ỹn (·) que minimiza (2.15) no conjunto de todas as funções da forma (2.17), é chamada de n-ésima aproximação da solução pelo método de Ritz . Para fundamentar teoricamente o método de Ritz, exige-se que o sistema {ϕk (·)}∞ k=1 seja completo. Isso significa que dada uma função arbitrária g(·) ∈ C01 ([a, b]; R) (ver definição já a seguir) e ε > 0 arbitrariamente pequeno, é sempre possı́vel encontrar uma soma finita Pn k=1 ck ϕk (x) tal que n X ck ϕk (x) < ε . g(x) − k=1 2.3 O método de Ritz 45 Estamos a usar a norma usual no conjunto das funções continuamente diferenciáveis em [a, b]: kϕ(x)k = max |ϕ(x)| + max |ϕ′ (x)| . x∈[a,b] x∈[a,b] (2.20) O conjunto das funções reais continuamente diferenciáveis em [a, b], munido da norma (2.20), é denotado por C 1 ([a, b]; R). O subespaço das funções ϕ(·) satisfazendo ϕ(a) = ϕ(b) = 0 é denotado por C01 ([a, b]; R). O espaço C 1 ([a, b]; R) tem muitas propriedades importantes estudadas em Análise Funcional. Na verdade, a justificação rigorosa do método de Ritz exige as ferramentas da Análise Funcional. Aqui apenas usamos a notação conveniente. As funções base ϕk (·) mais usadas são os polinómios trigonométricos ou as funções do tipo (x−a)(x−b)Pk (x), com Pk (x) polinómios. Reparar que os factores (x−a) e (x−b) asseguram (2.19). O Teorema de Weierstrass do Cálculo afirma que qualquer função contı́nua f (x) em [a, b] pode ser aproximada uniformemente por um polinómio, com a precisão desejada. Por outras palavras, dado ε > 0, podemos sempre encontrar um polinómio Pn (x) de ordem n tal que max |f (x) − Pn (x)| < ε . x∈[a,b] Também é verdade que, com qualquer precisão desejada, podemos usar um polinómio para aproximar uniformemente a função f (x) conjuntamente com a sua derivada contı́nua. Dado ε > 0, começamos por aproximar a derivada f ′ (x) por um polinómio Qn (x): max |f ′ (x) − Qn (x)| < x∈[a,b] ε . b−a Rx O polinómio Pn (x) = f (a) + a Qn (t)dt, x ∈ [a, b], aproxima f (x): Z x Z x Z x ′ ′ f (t) − Qn (t) dt Qn (t)dt = f (t)dt − f (a) − |f (x) − Pn (x)| = f (a) + a a a Z x |f ′ (t) − Qn (t)|dt < ε . ≤ a De maneira semelhante, podemos mostrar que uma função n-vezes continuamente diferenciável em [a, b] pode ser aproximada, com qualquer grau de precisão, conjuntamente com todas as suas n derivadas, por um polinómio. Deste modo, o conjunto de monómios xk constitui um sistema completo de funções em C n ([a, b]; R), para qualquer n ∈ N. Como é bem conhecido, da teoria de Fourier, um segundo sistema completo de funções é {sin(kπx)}. O método de Ritz considera então o problema de minimizar a funcional Z b f (x, yn (x), yn′ (x))dx , a com yn (x) dado por (2.17): yn (x) = ϕ0 (x) + Pn k=1 ck ϕk (x). As incógnitas são os ck . Deste modo a funcional (2.15) reduziu-se a uma função Z b f x, yn (x), yn′ (x) dx , Φ(c1 , . . . , cn ) = a 46 Cálculo das Variações de n variáveis reais. Considerando a condição necessária de optimalidade dada pelo Teorema 9, ∂Φ (c1 , . . . , cn ) = 0 , ∂ck k = 1, . . . , n , e atendendo a que (usamos a notação c0 = 1) ∂Φ ∂ = ∂ck ∂ck Z b a f x, n X ci ϕi (x), ! ci ϕ′i (x) dx i=0 i=0 = n X Z b fy a x, n X ci ϕi (x), n X ! ci ϕ′i (x) ϕk (x)dx i=0 i=0 + Z a b fy′ x, n X i=0 ci ϕi (x), n X i=0 ! ci ϕ′i (x) ϕ′k (x)dx , obtemos o chamado sistema de equações de Ritz da n-ésima aproximação: ! ! Z b Z b n n n n X X X X ci ϕ′i (x) ϕ′k (x)dx = 0 , ci ϕi (x), fy′ x, ci ϕ′i (x) ϕk (x)dx+ ci ϕi (x), fy x, a i=0 a i=0 i=0 i=0 (2.21) k = 1, . . . , n. Temos um sistema de n equações a n incógnitas. Este sistema pode ser resolvido com a ajuda do Sistema de Computação Algébrica Maple. Exemplo 35. Consideremos o seguinte problema: Z 1 ′ 2 Ψ[y(·)] = y (x) + (1 + 0.1 sin(x)) y 2 (x) − 2xy(x) dx −→ min 0 y(0) = 0 , y(1) = 10 . Pretendemos encontrar as aproximações de Ritz, n = 1, . . . , 5, usando ϕ0 (x) = 10x e as seguintes funções base: (a) ϕk (x) = (1 − x)xk , k ≥ 1; (b) ϕk (x) = sin(kπx), k ≥ 1. Notamos que ϕ0 (x) = 10x foi escolhida de modo a satisfazer as condições de fronteira dadas (ϕ0 (x) é função admissı́vel). Para encontrarmos as próximas aproximações da solução do problema, temos de encontrar os coeficientes ck resolvendo o sistema de equações # " n X ∂ ci ϕi (·) = 0 , i = 1, . . . , n . Ψ ϕ0 (·) + ∂ck i=1 Seguem os cálculos em Maple: > restart: 2.3 O método de Ritz 47 > psi := y -> int(D(y)(x)^2+(1+0.1*sin(x))*y(x)^2-2*x*y(x),x=0..1): > phia := k -> unapply(10*x + add(c[i]*(1-x)*x^i,i=1..k),x): > phia(0)(x); 10 x > phia(1)(x); 10 x + c1 (1 − x) x > phia(2)(x); 10 x + c1 (1 − x) x + c2 (1 − x) x2 > phib := k -> unapply(10*x + add(c[i]*sin(i*Pi*x),i=1..k),x): > phib(0)(x); 10 x > phib(1)(x); 10 x + c1 sin (π x) > phib(2)(x); 10 x + c1 sin (π x) + c2 sin (2 π x) > psi(phia(0)); 128.8991094 > psi(phia(1)); 1.592291401 c1 + 128.8991094 + 0.3682364120 c1 2 > psi(phib(1)); 5.458384430 c1 2 + 6.079631057 c1 + 128.8991094 (a) > solve(diff(psi(phia(1)),c[1])=0,c[1]); −2.162050451 > subs(c[1]=%,phia(1)(x)); # primeira aproximaç~ ao 10 x + (10 x − 2.162050451 (1 − x) x) (1 − x) x > solve({diff(psi(phia(2)),c[1])=0,diff(psi(phia(2)),c[2])=0},{c[1],c[2]}); {c2 = −1.603129512, c1 = − 1.360037144} > subs(%,phia(2)(x)); # segunda aproximaç~ ao 10 x − 1.360037144 (1 − x) x − 1.603129512 (1 − x) x2 n-ésima aproximação > y := proc(phi,n) > local s, r: > s := solve({seq(diff(psi(phi(n)),c[i])=0,i=1..n)},{seq(c[i],i=1..n)}): 48 Cálculo das Variações > r := subs(s,phi(n)(x)): > return(r); > end proc: > y(phia,3); 10 x − 1.409701121 (1 − x) x − 1.356509220 (1 − x) x2 − 0.2466033016 (1 − x) x3 > y(phia,4); 10 x − 1.404136871 (1 − x) x − 1.406432707 (1 − x) x2 − 0.1302232908 (1 − x) x3 > − 0.07758510225 (1 − x) x4 y(phia,5); 10 x − 1.404328437 (1 − x) x − 1.403753451 (1 − x) x2 − 0.1409381935 (1 − x) x3 > − 0.06151020461 (1 − x) x4 − 0.008040009302 (1 − x) x5 y(phib,1); 10 x − 0.5569075552 sin (π x) > y(phib,2); 10 x − 0.5567967900 sin (π x) + 0.07745178781 sin (2 π x) > y(phib,3); 10 x − 0.5567987173 sin (π x) + 0.07744221735 sin (2 π x) − 0.02316765306 sin (3 π x) > y(phib,4); 10 x − 0.5567976990 sin (π x) + 0.07744247760 sin (2 π x) > y(phib,5); − 0.02316578298 sin (3 π x) + 0.009858917958 sin (4 π x) 10 x − 0.5567977749 sin (π x) + 0.07744229869 sin (2 π x) − 0.02316584617 sin (3 π x) + 0.009858372198 sin (4 π x) − 0.005051634010 sin (5 π x) Exercı́cio 11. Considere o problema fundamental do Cálculo das Variações com condição de fronteira y(a) + y(b) = 1. Encontre a condição de transversalidade suplementar que as extremais de Euler-Lagrange devem satisfazer. Exercı́cio 12. Aplique o método de Ritz com funções base da forma ϕn (x) = x2 (1 − x)2 xk ao seguinte problema do Cálculo das Variações: Z 0 1 y ′′2 + [1 + 0.1 sin x] (y ′ )2 + (1 + 0.1 cos(2x)) y 2 − 2 sin(2x)y dx −→ min y(0) = y ′ (0) = y ′ (1) = 0 , y(1) = 1 . 2.4 Extensões do problema fundamental 49 Exercı́cio 13. Determine o sistema de equações de Ritz da n-ésima aproximação, análogo a (2.21), para funcionais da forma F2 [y(·)] = Z b f (x, y, y ′ , y ′′ )dx . a Exercı́cio 14. Determine as extremais para os seguintes problemas do Cálculo das Variações: R1 y ′2 dx −→ extr, y(0) = 1, y(1) = 0. R1 (b) 0 y − y ′2 dx −→ extr, y(0) = 0, y(1) = 0. (a) 0 2.4 Extensões do problema fundamental Começamos por considerar o caso em que as funções admissı́veis y(·) são funções vectoriais: y(x) = (y1 (x), . . . , yn (x)). 2.4.1 Caso vectorial: n variáveis dependentes, n ≥ 1 Escrevemos o Lagrangeano como anteriormente, f (x, y(x), y ′ (x)), mas agora com o significado f (x, y1 (x), . . . , yn (x), y1′ (x), . . . , yn′ (x)). Temos então o problema: Z b F [y(·)] = f (x, y(x), y ′ (x))dx −→ min a y(a) = ya , y(b) = yb , y(·) ∈ C 2 ([a, b]; Rn ) . Os valores de fronteira ya = (ya1 , . . . , yan ), yb = (yb1 , . . . , ybn ), são dados. Usamos a norma ky(·)kC k ([a,b];Rn ) = com kf (·)kC k ([a,b];R) = maxx∈[a,b] |f (x)| + n X i=1 Pk kyi (·)kC k ([a,b];R) , α=1 maxx∈[a,b] (α) f (x) (comparar com (2.20)), para a definição de vizinhança, como necessário na definição de minimizante local. Teorema 36 (Condição necessária de optimalidade para o problema (2.4.1) – equações de Euler-Lagrange). Se y(·) é minimizante local do problema (2.4.1), então y(·) satisfaz as equações de Euler-Lagrange: d ∂f ∂f x, y(x), y ′ (x) − x, y(x), y ′ (x) = 0 . ′ ∂y dx ∂y Observação 37. A equação diferencial vectorial (2.22) pode ser escrita na forma d fy1′ = 0 , f − dx y1 .. . f − d f ′ = 0 . yn dx yn (2.22) 50 Cálculo das Variações Demonstração. (seguindo Lagrange) Considere-se uma função admissı́vel, na vizinhança de y(·), arbitrária. Tal função pode ser escrita na forma y(·) + εϕ(·), com ϕ(a) = ϕ(b) = 0. Por definição de minimizante, a função Z Φ(ε) = F [y(·) + εϕ(·)] = a b f x, y(x) + εϕ(x), y ′ (x) + εϕ′ (x) dx , (2.23) tem mı́nimo para ε = 0, para qualquer ϕ(·). Tomemos ϕ(·) com a forma particular ϕ(x) = (0, . . . , ϕi (x), . . . , 0), onde a única componente não nula se encontra na i-ésima posição, ϕi (·) arbitrária (i ∈ {1, . . . , n}). Então (2.21) fica: Z b f x, y1 (x), . . . , yi (x) + εϕi (x), . . . , yn (x), y1′ (x), . . . , yi′ (x) + εϕ′i (x), . . . , yn′ (x) dx . Φ(ε) = a A condição necessária dada pelo Teorema de Fermat (Teorema 2) diz-nos que Φ′ (ε)|ε=0 = 0, ou seja, Z bh i fyi x, y(x), y ′ (x) ϕi (x) + fyi′ x, y(x), y ′ (x) ϕ′i (x) dx = 0 . (2.24) a Integrando por partes o segundo termo, e tendo em conta que ϕi (a) = ϕi (b) = 0, obtemos Z b Z b ib Z b d d fyi′ ϕ′i dx = fyi′ ϕi − fyi′ ϕi dx = − fyi′ ϕi dx , dx a a a dx a pelo que, Z b d ′ ′ f ′ x, y(x), y (x) ϕi (x)dx = 0 , fyi x, y(x), y (x) − dx yi a i = 1, . . . , n . (2.25) Recorremos agora a um lema auxiliar. Lema 38 (Lema Fundamental do Cálculo das Variações). Se g(·) for contı́nua em [a, b] e Z b g(x)ϕ(x)dx = 0 a para todas as funções ϕ(·) ∈ C 2 ([a, b]; R) com ϕ(a) = ϕ(b) = 0, então g(x) = 0. Demonstração. Suponhamos o contrário: que existe um x0 ∈ (a, b) tal que g(x0 ) 6= 0. Sem perda de generalidade, assumamos g(x0 ) > 0. Como g(·) é, por hipótese, contı́nua, então existe uma vizinhança (x0 − ε, x0 + ε) ⊂ (a, b) (ε > 0), na qual g(x) > 0. Basta definir uma função ϕ0 (·) ∈ C 2 não-negativa tal que ϕ0 (x0 ) > 0 e ϕ0 (x) = 0 em R − (x0 − ε, x0 + ε). Uma função com estas propriedades é, por exemplo, a seguinte: (x − x + ε)3 (x + ε − x)3 se x ∈ (x − ε, x + ε) , 0 0 0 0 ϕ0 (x) = 0 caso contrário . A função ϕ0 (·) satisfaz, de maneira óbvia, todas as propriedades requeridas, com possı́vel excepção da continuidade das derivadas em x = x0 − ε e x = x0 + ε. Vamos usar o Maple 2.4 Extensões do problema fundamental 51 para verificar a continuidade da função e suas derivadas e fazer um esboço do gráfico de ϕ0 (x) para o caso ilustrativo de x0 = 1 e ε = 0.1. > # exemplo com x0 = 1, epsilon = 0.1 > varphi0 := x -> piecewise(x>0.9 and x < 1.1,(x-0.9)^3 * (1.1-x)^3,0): > # a funç~ ao é contı́nua > iscont(varphi0(x),x=-infinity..infinity); true > # a primeira derivada é contı́nua > iscont(D(varphi0)(x),x=-infinity..infinity); true > # a segunda derivada é contı́nua > iscont(D(D(varphi0))(x),x=-infinity..infinity); true > plot(varphi0(x),x=0.8..1.2); 1E-6 8E-7 6E-7 4E-7 2E-7 0 0,8 0,9 1 1,1 1,2 x Rb a Tem-se que g(x)ϕ0 (x) ≥ 0 ∀ x ∈ [a, b]; g(x)ϕ0 (x) > 0 para x ∈ (x0 − ε, x0 + ε). Logo, g(x)ϕ0 (x)dx > 0, uma contradição. A conclusão pretendida segue, de modo imediato, aplicando o Lema Fundamental do Cálculo das Variações a (2.25). De modo semelhante ao caso escalar (n = 1), se não forem especificadas as 2n condições de fronteira y(a) = ya , y(b) = yb , obtemos como condições necessárias, além das equações de 52 Cálculo das Variações Euler-Lagrange (2.22), n pares de condições de transversalidade (cf. (2.3)): fyi′ = 0, x=a fyi′ = 0, x=b (2.26) (2.27) i = 1, . . . , n. (Se for fixado y(a) = ya e y(b) estiver livre, aparece a condição adicional (2.27); se for fixado y(b) = yb e y(a) estiver livre, aparece a condição adicional (2.26)). Exercı́cio 15. Determine as extremais de Euler-Lagrange para os seguintes problemas do Cálculo das Variações: (usamos extr para significar extremar – minimizar ou maximizar) (a) J1 [x(·), y(·)] = Z 1 x(t) + y(t) + ẋ(t)2 + ẏ(t)2 dt −→ extr 0 x(0) = y(0) = 1 , x(1) = y(1) = 2 . (b) Z π 2 2x(t)y(t) + ẋ(t)2 + ẏ(t)2 dt −→ min 0 π π =y = 1. x(0) = y(0) = 0 , x 2 2 J2 [x(·), y(·)] = (c) J3 [x(·), y(·)] = Z 0 x(0) = 1 , 2.4.2 1 ẋ(t)2 + ẏ(t)2 + 2x(t) dt −→ extr y(0) = 0 , x(1) = 3 , 2 y(1) = 1 . Problemas com derivadas de ordem superior Consideramos agora o problema do Cálculo das Variações com derivadas de ordem superior: Fm [y(·)] = (i) Z b a f (x, y(x), y ′ (x), . . . , y (m) (x))dx −→ extr , y (a) = yai , y (i) (b) = ybi , y(·) ∈ C 2m i = 0, . . . , m − 1 , (2.28) n ([a, b]; R ) , onde convencionamos y (0) (x) = y(x) e supomos o Lagrangeano (a função integranda) suficientemente suave para os nossos propósitos: f ∈ C m+1 em relação a todos os seus argumentos. Para facilidade de apresentação, consideremos o caso escalar (n = 1). 2.4 Extensões do problema fundamental 53 Teorema 39 (Condição necessária: equações de Euler-Lagrange de ordem superior). Se y(·) é minimizante local para o problema (2.28), então y(·) satisfaz a equação de Euler-Lagrange de ordem superior (equação diferencial ordinária de ordem 2m, às vezes também chamada de equação de Euler-Poisson): fy (x, y(x), y ′ (x), . . . , y (m) (x)) + m X (−1)k k=1 dk f (k) (x, y(x), y ′ (x), . . . , y (m) (x)) = 0 . dxk y (2.29) Demonstração. (seguindo Lagrange) Primeiro é preciso perceber o que significa dizer que y(·) é minimizante local de Fm [y(·)]. Consideremos o conjunto de funções y(x) + ϕ(x), x ∈ [a, b], onde ϕ(·) é arbitrária e pertence a C 2m ([a, b]; R). Para estas funções serem admissı́veis, elas têm de satisfazer as condições de fronteira, ou seja, ϕ(i) (a) = 0 , ϕ(i) (b) = 0 , i = 0, . . . , m − 1 . Por outras palavras, ϕ(·) ∈ C02m ([a, b]; R) (notação com o significado apontado). Uma função y(·) admissı́vel diz-se minimizante local de Fm [·] se Fm [y(·)] ≤ Fm [(y + ϕ)(·)] para todo o ϕ(·) ∈ C02m tal que kϕ(·)kC 2m < δ para algum δ > 0. De modo semelhante ao que já fizemos anteriormente, introduzimos o parâmetro ε > 0 e consideramos os valores da funcional Fm [·] ao longo das funções (y + εϕ)(·) na vizinhança do minimizante y(·). Para ϕ(·) fixo, Fm [(y + εϕ)(·)] = Z b a f x, y(x) + εϕ(x), y ′ (x) + εϕ′ (x), . . . , y (m) (x) + εϕ(m) (x) dx =: Φ(ε) é função de ε e atinge mı́nimo local para ε = 0, pelo que Φ′ (ε)|ε=0 = 0: Z b ′ fy (x, y(x), y (x), . . . , y a (m) (x))ϕ(x) + m X ′ fy(k) (x, y(x), y (x), . . . , y (m) (x))ϕ (k) k=1 ! (x) dx = 0 . (2.30) Agora fazemos integração por partes (múltipla), em cada termo contendo derivadas de ϕ(·), de tal modo a que no fim a função integranda apenas contenha ϕ(·) e possamos aplicar o Lema Fundamental do Cálculo das Variações: Z b Z b Z b b d d ′ fy′ ϕ dx = fy′ ϕ a − fy′ ϕdx = − fy′ ϕdx ; a a dx a dx Z b Z b Z b d d ′ ′ b ′′ fy′′ ϕ dx = − fy′′ ϕ′ dx fy′′ ϕ dx = fy′′ ϕ a − a dx a dx a b Z b 2 Z b 2 d d d =− fy′′ ϕ + fy′′ ϕdx = f ′′ ϕdx ; 2 2 y dx a dx a dx a em geral, Z a b fy(k) ϕ(k) dx = (−1)k dk f (k) ϕdx , dxk y k = 1, . . . , m . 54 Cálculo das Variações A condição (2.30) pode então ser escrita na forma Z b fy + a m X k=1 dk (−1) f (k) dxk y k ! ϕdx = 0 , de onde resulta, pelo Lema Fundamental do Cálculo das Variações (Lema 38), a condição necessária de optimalidade (2.29). Exercı́cio 16. Determine as extremais de Euler-Lagrange para os seguintes problemas do Cálculo das Variações: (a) Z F2a [y(·)] = 1 0 1 + y ′′ (x)2 dx −→ extr , y(0) = 0 , ′ y (0) = 1 , y(1) = 1 , y ′ (1) = 1 . (b) F2b [y(·)] = Z X 0 xy(x)2 + y(x)y ′ (x) + y ′′ (x)2 dx −→ extr , y(0) = A , ′ y (0) = α , y(X) = B , y ′ (X) = β . (c) F2c [y(·)] = Z 1 0 y 2 + 2y ′2 + y ′′2 dx −→ extr , y(0) = 0 , y ′ (0) = 1 , 2.5 y(1) = 0 , y ′ (1) = − sinh(1) . Problemas isoperimétricos Literalmente, a palavra isoperimétrico significa “mesmo perı́metro”. O primeiro problema deste tipo parece ter sido resolvido, na prática, pela princesa Fenı́cia Dido (Exemplo 28). O problema de Dido pertence à seguinte classe de problemas: encontrar o minimizante (ou maximizante) da funcional F [y(·)] = Z b a f (x, y(x), y ′ (x))dx −→ min (2.31) 2.5 Problemas isoperimétricos 55 onde as funções admissı́veis y(·) ∈ C 2 devem satisfazer não só as condições de fronteira y(a) = ya , y(b) = yb , (2.32) g(x, y(x), y ′ (x))dx = ξ , (2.33) como também a restrição isoperimétrica G[y(·)] = Z b a com ξ um dado número. Este é o problema do Cálculo das Variações análogo ao problema de Programação Matemática não-linear f (x) −→ min , g(x) = ξ , que é resolvido por recurso ao método dos multiplicadores de Lagrange (vide §1.3): exis- tem constantes λ0 e λ, não ambas nulas, tal que o minimizante x̃ do problema é ponto de estacionaridade da função de Lagrange L = λ0 f (x) + λg(x) (i.e., λ0 f ′ (x̃) + λg ′ (x̃) = 0). Um método “semelhante” existe no Cálculo das Variações para o problema isoperimétrico. Começamos por tratar o caso normal (λ0 = 1). Teorema 40. Seja y(·) ∈ C 2 um minimizante local para o problema isoperimétrico (2.31)- (2.33), que não é extremal da funcional G[·] (2.33). Então existe um número real λ tal que y(·) é extremal de Euler-Lagrange do problema fundamental do Cálculo das Variações J[y(·)] = F [y(·)] + λG[y(·)] = Z a b f x, y(x), y ′ (x) + λg x, y(x), y ′ (x) dx −→ min , y(a) = ya , y(b) = yb . Demonstração. A restrição (2.33) complica a noção de vizinhança: em geral não é verdade que a soma de um pequeno incremento ao minimizante é admissı́vel, i.e., a condição (2.33) é, em geral, violada para as variações do minimizante, no sentido anterior (não podemos aplicar a técnica de demonstração usada em §2.4.2). Para evitar este problema, introduzimos outra função e parâmetro: consideramos funções na vizinhança do minimizante y(·) da forma ŷ(·) = y(·) + ε1 ϕ1 (·) + ε2 ϕ2 (·) , (2.34) onde ε1 e ε2 são parâmetros pequenos e ϕ1 (·) , ϕ2 (·) ∈ C02 ([a, b]; R). A introdução do termo adicional ε2 ϕ2 (·) pode ser visto como um “termo de correcção”: a função ϕ1 (·) pode ser escolhida arbitrariamente, mas o termo ε2 ϕ2 (·) tem de ser seleccionado de tal modo que (2.34) satisfaça a condição isoperimétrica (2.33). Mesmo com a introdução do termo extra ε2 ϕ2 (·), não é de imediato óbvio que é sempre possı́vel escolher um ϕ1 (·) e depois encontrar 56 Cálculo das Variações um termo apropriado ϕ2 (·) para satisfazer a admissibilidade. Consideremos, por exemplo, a restrição Z G[y(·)] = 0 1p 1 + y ′ (x)2 dx = √ 2, com condições de fronteira y(0) = 0, y(0) = 1. Existe apenas uma única função suave que satisfaz as condições: a função y(x) = x. Por conseguinte, não existem variações admissı́veis da forma (2.34) (a não ser ŷ(x) = y(x)). Esta situação surge porque y(x) = x é extremal do problema Z 0 1p 1 + y ′ (x)2 dx −→ min , y(0) = 0 , y(0) = 1 . (A funcional acima dá-nos o comprimento de uma curva e y(x) = x é, de facto, não só extremal como minimizante.) Notar que y(x) = x vai ser também extremal para o problema isoperimétrico (há apenas uma função admissı́vel). Extremais como estas, que não podem ser variadas por causa das restrições, são chamadas de extremais rı́gidas. Se y(·) for uma extremal não-rı́gida para o problema isoperimétrico, então existem funções admissı́veis da forma (2.34) para ϕ1 (·) ∈ C02 ([a, b]) arbitrária. Olhando para a quantidade Z b F [y(·)+ε1 ϕ1 (·)+ε2 ϕ2 (·)] = f x, y(x) + ε1 ϕ1 (x) + ε2 ϕ2 (x), y ′ (x) + ε1 ϕ′1 (x) + ε2 ϕ′2 (x) dx a como função dos parâmetros ε1 e ε2 , se y(·) for minimizante do problema isoperimétrico então (0, 0) é solução do problema Z b Φ(ε1 , ε2 ) = f x, y(x) + ε1 ϕ1 (x) + ε2 ϕ2 (x), y ′ (x) + ε1 ϕ′1 (x) + ε2 ϕ′2 (x) dx −→ min , a com h(ε1 , ε2 ) = Rb a h(ε1 , ε2 ) − ξ = 0 , g (x, y(x) + ε1 ϕ1 (x) + ε2 ϕ2 (x), y ′ (x) + ε1 ϕ′1 (x) + ε2 ϕ′2 (x)) dx. É válida a condição necessária dada pelo método dos multiplicadores de Lagrange: existe uma constante λ tal que ∇ [Φ(ε1 , ε2 ) + λh(ε1 , ε2 )]|(ε1 ,ε2 )=(0,0) = 0 , ou seja, Z bn fy x, y(x), y ′ (x) ϕi (x) + fy′ x, y(x), y ′ (x) ϕ′i (x) a o + λ gy x, y(x), y ′ (x) ϕi (x) + gy′ x, y(x), y ′ (x) ϕ′i (x) dx = 0 , (2.35) i = 1, 2. Integrando por partes, Z b Z b Z b b d d fy′ ϕi dx = − fy′ ϕi dx , fy′ (x, y, y ′ )ϕ′i dx = fy′ ϕi a − a dx a dx a Z b Z b d ′ ′ gy′ (x, y, y )ϕi dx = −λ λ gy′ ϕi dx , i = 1 , 2 ; a dx a i = 1,2; 2.5 Problemas isoperimétricos 57 pelo que obtemos a condição necessária (2.35) na forma Z b d d fy′ + λ gy − gy′ fy − ϕi (x)dx = 0 , dx dx a i = 1, 2 . (2.36) A função ϕ1 (·) é arbitrária e o Lema Fundamental do Cálculo das Variações (Lema 38) implica que d d d ′ ′ fy + λ gy − gy = 0 ⇔ (f + λg)y − (f + λg)y′ = 0 , fy − dx dx dx ou, se quisermos, a equação de Euler-Lagrange Ly − d Ly′ = 0 dx (2.37) com L(x, y, y ′ ) = f (x, y, y ′ ) + λg(x, y, y ′ ). À luz do Teorema 40, o problema isoperimétrico (2.31)-(2.33) reduz-se a um problema sem restrições com Lagrangeano L(x, y, y ′ ) = f (x, y, y ′ ) + λg(x, y, y ′ ). Em geral, a solução da equação de Euler-Lagrange (2.37) tem duas constantes de integração mais a constante λ. As condições de fronteira y(a) = ya , y(b) = yb (2.32) e a restrição isoperimétrica (2.33) dão três condições para a determinação destas constantes. O cuidado a ter na resolução de um problema isoperimétrico é a possibilidade de existirem extremais rı́gidas. É preciso verificar que a solução da equação de Euler-Lagrange (2.37) não é solução da equação de Euler-Lagrange gy − d ′ dx gy = 0 (não é uma extremal de G[·]). Definição 41. Seja y(·) um minimizante local do problema isoperimétrico (2.31)-(2.33). Se y(·) não é uma extremal da funcional G[·] (2.33), então o minimizante é dito de normal ; caso contrário (se y(·) for extremal de G[·]) o minimizante diz-se de anormal (cf. Observação 14 e linhas seguintes). Teorema 42. Seja y(·) ∈ C 2 um minimizante local para o problema isoperimétrico (2.31)- (2.33). Então existem dois números reais λ0 e λ, não ambos nulos, tal que y(·) é extremal de Euler-Lagrange do problema fundamental do Cálculo das Variações Z b L x, y(x), y ′ (x) dx −→ extr , (2.38) a y(a) = ya , y(b) = yb , com L(x, y, y ′ ) = λ0 f (x, y, y ′ ) + λg(x, y, y ′ ), i.e., ∂L d ∂L x, y(x), y ′ (x) − x, y(x), y ′ (x) = 0 . ′ dx ∂y ∂y Demonstração. Se y(·) for minimizante normal escolhemos λ0 = 1 e o Teorema 42 coincide com o Teorema 40. Para minimizantes anormais, a condição (2.36) reduz-se a Z b d fy′ ϕi (x)dx = 0 . fy − dx a 58 Cálculo das Variações d fy′ = 0 cujas soluções, O Lema Fundamental do Cálculo das Variações dá-nos a condição fy − dx com duas constantes arbitrárias, não satisfazem, em geral, as três condições de admissibilidade (2.32), (2.33) (o Teorema 40 não fornece condições necessárias para minimizantes anormais: λ0 = 1). O Teorema 2.38, ao introduzir um multiplicador adicional λ0 associado a f , permite obter a seguinte condição análoga a (2.36): Z b d d λ0 fy − fy′ + λ gy − gy′ ϕi (x)dx = 0 , dx dx a A condição é trivialmente satisfeita no caso anormal (gy − d ′ dx gy i = 1, 2 . (2.39) = 0) fazendo λ0 = 0. Como exemplo vamos determinar as extremais para o problema isoperimétrico de Dido. Exemplo 43 (problema de Dido – cf. Exemplo 28). Consideramos o problema isoperimétrico p (2.31)–(2.33) com f = y, g = 1 + y ′2 , a = 0, b = 1, ya = yb = 0, ξ = π2 : Z 1 y(x)dx −→ max , J[y(·)] = 0 Z 1p π 1 + y ′ (x)2 dx = , 2 0 y(0) = 0 , y(1) = 0 . Começamos com algumas definições em Maple de ı́ndole geral: determinação da equação de Euler-Lagrange por intermédio do procedimento EL; determinação das extremais através da função extEL. > restart; > EL := proc(L) > local Ly, Lv, dxLv: > Ly := subs({y=y(x),v=diff(y(x),x)},diff(L,y)): > Lv := subs({y=y(x),v=v(x)},diff(L,v)): > dxLv := subs({v(x)=diff(y(x),x)},diff(Lv,x)): > return(simplify(Ly-dxLv=0)); > end proc: > extEL := (L,CI,CF) -> dsolve({EL(L),CI,CF},y(x)): Provamos que o problema isoperimétrico não admite extremais rı́gidas. > f := y: > g := sqrt(1+v^2): > L := f+lambda*g: > extremais := extEL(L,y(0)=0,y(1)=0); 2.5 Problemas isoperimétricos 59 r 1 + x − + λ2 + extremais := y(x) = − 4 r √ −1 + 4 λ2 1 y(x) = −x2 + x − + λ2 − 4 2 ELg := EL(g); −x2 > ELg := − > d2 y(x) dx2 d ( dx y(x))2 )(3/2) (1 + simplify(subs(extremais[1],ELg)); 1 r − √ −4 x2 + 4 x − 1 + 4 λ2 √ −1 + 4 λ2 , 2 =0 λ2 −4 x2 + 4 x − 1 + 4 λ2 =0 simplify(subs(extremais[2],ELg)); 1 r =0 2 √ λ −4 x2 + 4 x − 1 + 4 λ2 −4 x2 + 4 x − 1 + 4 λ2 Acabámos de mostrar que a solução da equação de Euler-Lagrange (2.37) não é solução > d da equação de Euler-Lagrange gy − dx gy′ = 0, pelo que não existem extremais rı́gidas. Para a determinação das extremais falta determinar o λ de modo a que a restrição isoperimétrica seja satisfeita. > solve(-1+4*lambda^2 = 0); 1 −1 , 2 2 > assume(lambda >= 1/2); > r1 := simplify(int(subs(v=diff(rhs(extremais[1]),x),g),x=0..1)); 1 r1 := 2 arcsin( ) λ˜ 2 λ˜ r2 := simplify(int(subs(v=diff(rhs(extremais[2]),x),g),x=0..1)); 1 ) λ˜ r2 := 2 arcsin( 2 λ˜ fsolve(r1=Pi/2,lambda); > > −0.5000000000 > assume(lambda <= -1/2); > r1 := simplify(int(subs(v=diff(rhs(extremais[1]),x),g),x=0..1)); 1 r1 := 2 arcsin( ) λ˜ 2 λ˜ r2 := simplify(int(subs(v=diff(rhs(extremais[2]),x),g),x=0..1)); 1 ) λ˜ r2 := 2 arcsin( 2 λ˜ fsolve(r1=Pi/2,lambda); > > −0.5000000000 60 Cálculo das Variações > lambda := ’lambda’; λ := λ > sol := subs(lambda=-1/2,[extremais]); √ √ sol := [y(x) = − −x2 + x, y(x) = −x2 + x] A extremal é um dos semicı́rculos de raio 2 2 y = −x + x ⇔ 1 2 e centro 1 x− 2 2 : 1 2, 0 + y2 = 1 . 4 Exercı́cio 17. Determine todas as extremais C 2 (candidatos a minimizante ou maximizante) para os seguintes problemas isoperimétricos: (a) Z 1 0 x2 + y ′ (x)2 dx −→ extr , Z 1 y(x)2 dx = 2 , 0 y(0) = 0 , y(1) = 0 . (b) Z 1 0 Z 1 0 y ′ (x)2 dx −→ extr , 1 , y(x) − y ′ (x)2 dx = 12 1 y(0) = 0 , y(1) = . 4 (c) Z 1 0 y ′2 dx −→ extr , Z 1 ydx = ξ , 0 y(0) = 0 , y(1) = 2 . A abordagem ao problema isoperimétrico aqui discutida, pode ser facilmente generalizada: para problemas isoperimétricos envolvendo derivadas de ordem superior; para problemas com várias restrições isoperimétricas; para problemas com várias variáveis dependentes (y(·) ∈ C 2 ([a, b]; Rn )); e suas combinações. 2.6 Condições necessárias de ordem superior 2.6 61 Condições necessárias de ordem superior As extremais de Euler-Lagrange são as mesmas, independentemente do problema ser de minimização ou maximização. A distinção entre as extremais candidatas a minimizantes e as extremais candidatas a maximizantes é normalmente feita por recurso às condições necessárias de ordem superior. Consideremos o problema fundamental do Cálculo das Variações: Z b F [y(·)] = f (x, y(x), y ′ (x))dx −→ extr , a y(a) = ya , y(b) = yb , (2.40) y(·) ∈ C 2 ([a, b]; R) , onde assumimos o Lagrangeano f (·, ·, ·) suficientemente suave, em relação a todos os seus argumentos, de modo que os cálculos desta secção façam sentido. Seja y(·) uma solução do problema (2.40). A equação de Euler-Lagrange foi obtida em §2.4 considerando variações de y(·), y(·) + εϕ(·), com ϕ(a) = ϕ(b) = 0, e usando a condição necessária Φ′ (ε)|ε=0 , onde Φ(ε) = F [y(·) + εϕ(·)] = Z b a f (x, y + εϕ, y ′ + εϕ′ )dx , ϕ(·) ∈ C02 ([a, b]; R) . (2.41) Analisemos agora as derivadas de ordem superior de Φ(·) em ε = 0. Efectuando o cálculo das primeiras quatro derivadas obtemos: n=1: n=2: n=3: n=4: dn ′ ′ f x, y(x) + εϕ(x), y (x) + εϕ (x) dεn ε=0 (2.42) ∂f ∂f ϕ(x) + ′ ϕ′ (x) ; ∂y ∂y 2 ∂ f 2 ∂2f ∂2f 2 ′ ϕ (x) + 2 ϕ(x)ϕ (x) + ϕ (x) ; ∂y 2 ∂y∂y ′ ∂y ′2 ∂3f ∂3f ∂3f ′ 3 ∂3f 3 2 ′ 2 ϕ (x) + 3 ϕ (x)ϕ (x) + 3 ϕ(x)ϕ (x) + (ϕ ) (x) ; ∂y 3 ∂y 2 ∂y ′ ∂y∂y ′2 ∂y ′3 ∂4f 4 ∂4f ∂4f ∂4f 3 ′ 2 2 ϕ (x) + 4 ϕ (x)ϕ (x) + 6 ϕ (x)ϕ (x) + 4 ϕ(x)(ϕ′ )3 (x) ∂y 4 ∂y 3 ∂y ′ ∂y 2 ∂y ′2 ∂y∂y ′3 ∂4f + ′4 (ϕ′ )4 (x) . ∂y Constatamos, para n = 1, 2, 3, 4, que os coeficientes de cada parcela em (2.42) coincidem com os valores na n-ésima linha do triângulo de Pascal (contamos as linhas a partir de zero): 62 Cálculo das Variações 1 1 1 2 1 3 1 . . . 4 3 . . 1 6 . . 1 . 4 . . . . 1 1 . . . . . . . . . É então natural conjecturar a igualdade (2.43). dn Teorema 44. A n-ésima derivada Φ(n) (0) = dε n F [y(·) + εϕ(·)] ε=0 é dada por: ! Z b X n n dn Φ(ε) n ∂ f (x, y(x), y ′ (x)) n−k ϕ (x)(ϕ′ )k (x) dx . = k dεn ε=0 ∂y n−k ∂y ′k a (2.43) k=0 Demonstração. Vamos fazer a demonstração por indução sobre n. Para n = 1 (caso base) (2.43) toma a forma ! Z b Z b X 1 ∂f ∂f 1 ∂f ′ 1−k ′ k ′ ϕ (x)(ϕ ) (x) dx = Φ (0) = ϕ(x) + ′ ϕ (x) dx , k ∂y 1−k ∂y ′k ∂y ∂y a a k=0 o que está de acordo com (2.24). A partir da hipótese de indução ! Z b X j dj Φ(ε) ∂j f j ϕj−k (x)(ϕ′ )k (x) dx , = dεj ε=0 k ∂y j−k ∂y ′k a k=0 temos de demonstrar que Z b dn+1 Φ(ε) = dεn+1 ε=0 a Atendendo a que ∀j ≤ n , ! n+1 ∂ n+1 f n+1−k ′ k ϕ (x)(ϕ ) (x) dx . ∂y n+1−k ∂y ′k k n+1 X k=0 (2.44) n dn+1 Φ(ε) d d dn+1 F [y(·) + εϕ(·)] F [y(·) + εϕ(·)] = = , dεn+1 ε=0 dεn+1 dε dεn ε=0 ε=0 pela hipótese de indução temos ! Z bX n n d n ∂ f (x, y(x) + εϕ(x), y ′ (x) + εϕ′ (x)) n−k dn+1 Φ(ε) ′ k = ϕ (x)(ϕ ) (x) dx n−k ∂y ′k dεn+1 ε=0 dε k ∂y a k=0 ou seja, Z b hX n n ∂ n+1 f dn+1 Φ(ε) = ϕn−k+1 (x)(ϕ′ )k (x) n−k+1 ∂y ′k dεn+1 ε=0 a k=0 k ∂y n i X n ∂ n+1 f n−k ′ k+1 + ϕ (x)(ϕ ) (x) dx . k ∂y n−k ∂y ′k+1 k=0 , ε=0 2.6 Condições necessárias de ordem superior 63 Fazendo a mudança de variável k = r + 1 no primeiro somatório e substituindo k por r no segundo obtemos Z b h n−1 X n ∂ n+1 f dn+1 Φ(ε) ϕn−r (x)(ϕ′ )r+1 (x) = n−r ∂y ′r+1 dεn+1 ε=0 ∂y r + 1 a r=−1 n i X ∂ n+1 f n n−r ′ r+1 ϕ (x)(ϕ ) (x) dx + r ∂y n−r ∂y ′r+1 r=0 Z b nn−1 X n n ∂ n+1 f + ϕn−r (x)(ϕ′ )r+1 (x) = r r+1 ∂y n−r ∂y ′r+1 a r=0 + Tendo em conta que n r + n r+1 = n+1 r+1 ∂ n+1 f ′ n+1 o ∂ n+1 f n+1 ϕ (x) + (ϕ ) (x) dx . (2.45) ∂y n+1 ∂y ′n+1 (esta é a propriedade que está por detrás da construção do triângulo de Pascal: a soma do r-ésimo e (r + 1)-ésimo elementos da linha n do triângulo de Pascal, dá o valor do (r + 1)-ésimo elemento da linha n + 1 do triângulo de Pascal); que ∂ n+1 f n+1 ϕ (x) ∂y n+1 corresponde à parcela da soma para r = −1; e que ∂ n+1 f (ϕ′ )n+1 (x) ∂y ′n+1 corresponde à parcela da soma para r = n; podemos reescrever (2.45) na forma Z b X n dn+1 Φ(ε) ∂ n+1 f n+1 ϕn−r (x)(ϕ′ )r+1 (x) dx . = n−r ∂y ′r+1 dεn+1 ε=0 ∂y r + 1 a r=−1 Voltando à variável inicial k = r + 1, obtemos a igualdade (2.44) (a nossa tese): Z b n+1 X n + 1 ∂ n+1 f dn+1 Φ(ε) = ϕn+1−k (x)(ϕ′ )k (x) dx . dεn+1 ε=0 k ∂y n+1−k ∂y ′k a k=0 Pelo Teorema 5, obtemos do Teorema 44 o seguinte Corolário. Corolário 45 (Condição necessária formal de ordem par). Se y(·) é minimizante (maxi di Φ(ε) mizante) do problema fundamental do cálculo das variações (2.40) e dεi = 0, i = ε=0 1, . . . , 2n−1, n ∈ N, Φ(ε) dado por (2.41), então Φ(2n) (0) ≥ 0 (respectivamente Φ(2n) (0) ≤ 0). A condição dada pelo Corolário 45 é tudo menos prática. O objectivo desta secção é encontrar condições necessárias de ordem superior de natureza algorı́tmica, útil, eliminando qualquer referência às funções arbitrárias de variação ϕ(·) que aparecem na definição (2.41) de Φ(ε). O seguinte Teorema elimina as referências a ϕ(·) nas derivadas pares Φ(2n) (0). Teorema 46 (Condição necessária de ordem par). Se y(·) é minimizante (maximizante) do di Φ(ε) problema fundamental do cálculo das variações (2.40) e dεi = 0, i = 1, . . . , 2n − 1, n ∈ N, Φ(ε) dado por (2.41), então y(·) satisfaz a condição ∂ 2n f ′ x, y(x), y (x) ≥ 0, ∂y ′2n ε=0 ∀ x ∈ [a, b] (2.46) 64 Cálculo das Variações (respectivamente ∂ 2n f ∂y ′2n (x, y(x), y ′ (x)) ≤ 0). Demonstração. Seja y(·) um minimizante do problema fundamental do cálculo das variações (2.40). Pelo Teorema 44 podemos escrever a seguinte expressão: Z bX 2n 2n ∂ 2n f (x, y(x), y ′ (x)) 2n−k d2n Φ(ε) = ϕ (x)(ϕ′ )k (x)dx Φ (0) = k dε2n ε=0 ∂y 2n−k ∂y ′k a k=0 # Z b "2n−1 X 2n ∂ 2n f (x, y(x), y ′ (x)) ∂ 2n f (x, y(x), y ′ (x)) ′ 2n 2n−k ′ k ϕ (x)(ϕ ) (x) + (ϕ ) (x) dx . = ∂y 2n−k ∂y ′k ∂y ′2n k a (2n) k=0 (2.47) Seja Qk (x) = ∂ 2n f (x,y(x),y ′ (x)) , ∂y 2n−k ∂y ′k k = 0, . . . , 2n − 1, x ∈ [a, b]. Como estamos a assumir que as funções Qk (·) são contı́nuas em [a, b], temos que |Qk (x)| < M , ∀x ∈ [a, b], ∀k = 0, . . . , 2n − 1, para uma certa constante M > 0. Introduzimos também a seguinte notação: P (x) = ∂ 2n f (x,y(x),y ′ (x)) . ∂y ′2n P (x) tem aqui um papel predominante: existem funções ϕ(·) para as quais |ϕ(x)| é pequeno para todo o x ∈ [a, b], mas a derivada |ϕ′ (x)| não; pelo contrário, se |ϕ′ (x)| é pequena para todo o x ∈ [a, b], então, uma vez que ϕ(·) ∈ C02 , |ϕ(x)| é também pequeno para todo o x ∈ [a, b]. Suponhamos que existe um c ∈ [a, b] tal que P (c) < 0. A demonstração é feita por redução ao absurdo: vamos mostrar que esse facto implica a existência de uma função ϕ(·) para a 2n qual d dεΦ(ε) < 0, o que contradiz o Corolário 45. Uma vez que P (·) é contı́nua em [a, b], 2n ε=0 existe um γ > 0 tal que P (x) < P (c)/2, ∀x ∈]c − γ, c + γ[. Consideremos a seguinte função ϕ(·), definida em [a, b]: ϕ(x) = ( 4 sin π(x−c) γ 0 se x ∈ [c − γ, c + γ] se x 6∈ [c − γ, c + γ] . (2.48) Usamos o Maple para desenhar o gráfico de ϕ(·) (desenhamos o gráfico de ϕ(x), x ∈ [0, 2], para c = 1 e γ = 0.5). > > > varphi := (x,c,gamma) ->piecewise(x >= c-gamma and x <= c+gamma, sin((Pi*(x-c))/gamma)^4,0): plot(varphi(x,1,0.5),x=0..2); 2.6 Condições necessárias de ordem superior 65 1 0,8 0,6 0,4 0,2 0 0 0,5 1 1,5 2 x A função (2.48) é diferenciável com continuidade: ϕ′ (x) = ( 4π γ sin3 π(x−c) γ 0 cos π(x−c) γ se x ∈ [c − γ, c + γ] se x 6∈ [c − γ, c + γ] . Para este ϕ(·), usando as notações introduzidas, vem de (2.47) que Z c+γ 2n−1 X Z c+γ 2n d2n Φ(ε) 2n−k ′ k Qk (x)ϕ (x)(ϕ ) (x) + P (x)(ϕ′ )2n (x)dx = dε2n ε=0 k c−γ c−γ k=0 2n−1 Z c+γ X Z c+γ 2n |Qk (x)| ϕ2n−k (x) (ϕ′ )k (x) + P (x)(ϕ′ )2n (x)dx . ≤ k c−γ c−γ k=0 Tendo em conta que | sin(x)| ≤ 1, | cos(x)| ≤ 1, para todo o x; que a amplitude do intervalo de 2n integração é de 2γ; P (x) < P (c)/2; e |Qk (x)| < M ; podemos facilmente majorar d dεΦ(ε) 2n ε=0 como se segue: 2n−1 X 2n 4π k P (c) 4π 2n d2n Φ(ε) + 2γ 2γ < M dε2n ε=0 γ 2 γ k k=0 2n 2n−1 X 2n 4π k 4π = 2γM + P (c)γ γ γ k k=0 " 2n 2n 2n # 4π 4π 4π = 2γM 1+ − + P (c)γ . γ γ γ Multiplicando ambos os lados da desigualdade por γ 2n−2 > 0 obtemos: 2n (γ + 4π)2n − (4π)2n P (c)(4π)2n 2n−2 d Φ(ε) + . < 2M γ dε2n ε=0 γ γ (2.49) 66 Cálculo das Variações Atendendo que P (c)(4π)2n = −∞ , γ→0 γ (γ + 4π)2n − (4π)2n lim = 2n(4π)2n−1 , γ→0 γ lim concluı́mos que para γ suficientemente pequeno o segundo membro da desigualdade (2.49) d2n Φ(ε) < 0. Este facto contradiz o Corolário 45. O absurdo tem sinal negativo, ou seja, dε2n ε=0 resulta de termos suposto a existência de um c ∈ [a, b] tal que P (c) = ∂ 2n L(c,x(c),ẋ(c)) ∂y ′2n < 0. Tendo em mente que a equação de Euler-Lagrange é obtida usando a condição de primeira ordem Φ′ (ε)|ε=0 = 0, podemos, no caso em que n = 2, eliminar facilmente a referência às variações arbitrárias ϕ(·) na condição necessária dada pelo Teorema 46. Obtemos então a condição necessária clássica de Legendre. Corolário 47 (Condição necessária de 2a ordem – condição de Legendre). Se y(·) é um minimizante local (respectivamente maximizante local) do problema fundamental do Cálculo das Variações (2.40), então fy′ y′ x, y(x), y ′ (x) ≥ 0 (2.50) (respectivamente fy′ y′ ≤ 0) para todo o x ∈ [a, b]. Vamos agora mostrar, com um exemplo, a utilidade prática da condição de Legendre (2.50). Exemplo 48. Consideremos o problema fundamental do Cálculo das Variações (2.40) com p f (x, y, y ′ ) = x 1 + y ′2 , a = −1 e b = 1: Z 1 p F [y(·)] = x 1 + y ′2 (x) dx −→ min , −1 y(−1) = α , y(1) = β . Os candidatos a minimizante são obtidos por resolução da equação diferencial de Euler′) ′) ′ Lagrange (2.2). Tendo em conta que ∂f (x,y,y = 0 e ∂f (x,y,y = √xy ′2 , então (2.2) toma a ∂y ∂y ′ 1+y forma: d dx xy ′ (t) p 1 + y ′2 (x) ! p xy ′ (x) = c ⇔ xy ′ (x) = c 1 + y ′2 (x) . =0⇔ p 1 + y ′2 (x) Resolvendo esta equação diferencial, e usando as condições de fronteira, obtêm-se os candidatos pretendidos (as extremais). Se usarmos a condição de Legendre (2.50) não precisamos, no entanto, de determinar as extremais: elas não podem ser extremantes (não podem ser nem minimizante nem maximizante). Com efeito x ∂ 2 f (x, y, y ′ ) =p ′2 ∂y (1 + y ′2 )3 2.7 Condição suficiente de Jacobi e, por conseguinte, ∂2f ∂y ′2 67 ≥ 0 para x ∈ [0, 1] e ∂2f ∂y ′2 ≤ 0 para x ∈ [−1, 0]. O Corolário 47 permite-nos concluir que o problema considerado não tem solução. A condição de Legendre (2.50) é fruto da condição necessária para mı́nimo Φ′′ (0) ≥ 0. Pelo Teorema 6 sabemos que uma condição suficiente é dada por Φ′′ (0) > 0. Legendre acreditava que a conclusão fy′ y′ (x, y(x), y ′ (x)) > 0, para todo o x ∈ [a, b], era suficiente para garantir a minimalidade de y(·). Chegou mesmo a construir uma “demonstração” de tal facto (demonstração essa errada). Contudo, mesmo os erros dos grandes vultos são úteis – tendo como base tal “demonstração” de Legendre, uma condição suficiente foi mais tarde desenvolvida por Jacobi. 2.7 Condição suficiente de Jacobi O obtenção das extremais constitui apenas um passo na resolução concreta de um problema do Cálculo das Variações. Conhecidas as extremais, um passo natural consiste em recorrer a condições suficientes com o intuito de descobrir se a extremal em mãos é, de facto, solução do problema. Lema 49. Se y(·) é minimizante (maximizante) do problema fundamental do Cálculo das Variações (2.40), então Z b h d ′ ′ fyy′ (x, y(x), y (x)) ϕ2 (x) I[ϕ(·)] = fyy (x, y(x), y (x)) − dx a i + fy′ y′ (x, y(x), y ′ (x))(ϕ′ )2 (x) dx ≥ 0 (2.51) (respectivamente I[ϕ(·)] ≤ 0) para todo o ϕ(·) ∈ C02 ([a, b]; R). Demonstração. O Teorema 44 permite-nos escrever: Z b d2 Φ(ε) = fyy (x, y, y ′ )ϕ2 + 2fyy′ (x, y, y ′ )ϕϕ′ + fy′ y′ (x, y, y ′ )(ϕ′ )2 dx . 2 dε a ε=0 (2.52) Integrando por partes o segundo termo na função integranda obtemos: Z b ′ ′ 2fyy′ (x, y, y )ϕϕ dx = fyy′ (x, y, y a Substituindo (2.53) em (2.52) obtemos ′ b )ϕ2 a − Z b a d fyy′ ϕ2 dx = − dx Z a b d fyy′ ϕ2 dx . dx Z b d ′ 2 2 Φ (0) = fyy − fyy′ ϕ + fy′ y′ (ϕ ) (x) dx dx a ′′ e a conclusão segue da condição necessária dada pelo Teorema 5. (2.53) 68 Cálculo das Variações Com a notação P (x) = fy′ y′ (x, y(x), y ′ (x)) , Q(x) = fyy (x, y(x), y ′ (x)) − d fyy′ (x, y(x), y ′ (x)) , dx podemos escrever a funcional I[ϕ(·)] (2.51) da seguinte maneira: Z b P (x)ϕ′ (x)2 + Q(x)ϕ(x)2 dx , I[ϕ(·)] = (2.54) a ϕ(a) = 0 , ϕ(b) = 0 , ϕ(·) ∈ C 2 ([a, b]; R) . A ideia de Jacobi foi estudar a funcional I[·] usando as próprias ferramentas do Cálculo das Variações. A equação de Euler-Lagrange de (2.54) conduz-nos à chamada equação de Jacobi : d 2P (x)ϕ′ (x) = 2Q(x)ϕ(x) ⇔ P (x)ϕ′′ (x) + P ′ (x)ϕ′ (x) − Q(x)ϕ(x) = 0 . dx (2.55) A equação de Jacobi (2.55) tem a solução trivial ϕ(x) ≡ 0. Definição 50. Se existir uma solução não-trivial ϕ(·) (i.e., ϕ(·) diferente da função nula) para a equação de Jacobi (2.55) que satisfaz ϕ(a) = ϕ(k) = 0, a < k < b, então k diz-se um ponto conjugado. Jacobi demonstrou a seguinte condição suficiente. Teorema 51 (Condição suficiente de Jacobi). Se (i) y(·) satisfaz a equação de Euler-Lagrange (2.2); (ii) fy′ y′ (x, y(x), y ′ (x)) > 0 ∀ x ∈ [a, b] (condição de Legendre fortalecida); (iii) [a, b] não contém pontos conjugados; então y(·) é minimizante do problema fundamental do Cálculo das Variações (2.40). Exercı́cio 18. Determine o minimizante para o seguinte problema do Cálculo das Variações: Z b y ′ (x)2 dx −→ min , J[y(·)] = a y(a) = α , y(b) = β . Exercı́cio 19. Considere o seguinte problema: Z 1 y ′2 − c2 y 2 − 2y dx −→ min , 0 y(0) = 0 , y(1) = 1 , onde c > 0. Para que valores de c a extremal de Euler-Lagrange é minimizante? Capı́tulo 3 Controlo Óptimo A Teoria do Controlo Óptimo é uma área relativamente recente da Matemática: nasceu em meados dos anos cinquenta do século XX. É uma teoria importante que permite dar resposta a muitos problemas que surgem nas mais diversas áreas da Ciência, como sejam a Engenharia e as Ciências do Espaço. Aqui apenas estudamos as ideias principais que permitem atacar tais problemas. Em particular, damos ênfase ao Princı́pio do Máximo de Pontryagin, ilustrando a sua importância através de vários exemplos. Como veremos, o Controlo Óptimo é uma generalização do Cálculo das Variações, permitindo-nos uma nova perspectiva aos problemas já estudados. 3.1 Formulação do problema e sua relação com o Cálculo das Variações O estado de um certo sistema, em cada instante do tempo, é descrito por um número de parâmetros, x = (x1 , . . . , xn ) , chamados variáveis de estado, cuja dinâmica é descrita por um sistema de equações diferenciais ẋ(t) = dx(t) = ϕ (t, x(t), u(t)) , dt (3.1) onde u = (u1 , . . . , um ) representam os controlos exercidos sobre o sistema, com a finalidade de controlá-lo em determinada direcção-objectivo. Tipicamente, os controlos satisfazem certas restrições, que poderão ser de vários tipos dependendo da natureza do problema. Neste curso consideramos restrições do tipo u(t) ∈ U ⊆ Rm , 69 ∀ t ∈ [a, T ] , (3.2) 70 Controlo Óptimo U prescrito à priori. Os pares estado-controlo (x(·), u(·)) admissı́veis, por vezes chamados de processos, satisfazem o sistema de controlo (3.1) (também chamado de equação de estado); a restrição aos valores do controlo (3.2); e, possivelmente, condições de fronteira x(a) = xa , x(T ) = xT (T pode estar fixo ou não; xa e/ou xT podem ser dados ou livres). O problema principal consiste em determinar o processo (x̃(·), ũ(·)) que minimiza (ou maximiza) uma funcionalobjectivo I[x(·), u(·)] = Z T L (t, x(t), u(t)) dt , a L : [a, b]×Rn ×Rm −→ R dada, i.e., encontrar o par admissı́vel (x̃(·), ũ(·)) tal que I[x̃(·), ũ(·)] ≤ I[x(·), u(·)], qualquer que seja o processo (x(·), u(·)). Vejamos alguns exemplos. Exemplo 52. Considere-se um mı́ssil em movimento ascendente. Denotemos por x0 (t) a sua posição ao longo do tempo; por x1 (t) a sua velocidade. A segunda lei de Newton, força igual a massa vezes a aceleração, permite-nos escrever: u(t) − M g = M ẍ0 (t) , ou, de forma equivalente, ẋ (t) = x (t) , 0 1 ẋ (t) = u(t) − g . 1 M Podemos considerar o problema de conduzir o mı́ssil de uma posição inicial (no inı́cio na Terra: altura igual a zero, ou seja, x0 (0) = 0; e velocidade nula: x1 (0) = 0) até uma altitude H e velocidade V finais, pré-estabelecidas, em tempo mı́nimo (T livre): Z T 1 dt −→ min (⇔ T −→ min) , 0 ẋ (t) = x (t) , 0 1 ẋ (t) = u(t) − g . 1 x0 (0) = 0 , x0 (T ) = H , M x1 (0) = 0 , x1 (0) = V . Notamos que do ponto de vista Fı́sico (não existem forças de propulsão de valor infinito!) faz todo o sentido impor um limite (uma restrição) ao controlo: |u(t)| ≤ w, w dado. Exemplo 53. Consideremos o problema de parar um pêndulo. Representando por x0 a posição e por x1 a velocidade (x0 (0) = x0 , x0 (T ) = 0, x1 (0) = v0 , x1 (T ) = 0), a dinâmica do pêndulo é igualmente descrita pela segunda lei de Newton: u(t) − kx0 (t) = mẍ0 (t), com k uma constante positiva. De maneira equivalente, ẋ0 (t) = x1 (t) , ẋ1 (t) = k u(t) − x0 (t) . m m 3.1 Formulação do problema e sua relação com o Cálculo das Variações 71 Podemos, por exemplo, considerar o problema de parar o pêndulo em tempo mı́nimo, Z T 0 1 dt −→ min , ou o problema de pará-lo com o mı́nimo gasto de energia: Z 0 T u(t)2 dt −→ min . Mais uma vez, do ponto de vista Fı́sico, é necessário impor um certo limite ao valor do controlo (força): |u(t)| ≤ w. Exemplo 54. Um modelo matemático simplificado do sistema de controlo “automóvel” é descrito pelo sistema de equações diferenciais ẋ(t) = cos (θ(t) + u2 (t)) u1 (t) , ẏ(t) = sin (θ(t) + u2 (t)) u1 (t) , θ̇(t) = sin (θ(t)) u (t) , 1 onde temos dois controlos, acelerador/travão (ou, se quisemos, a força do motor) u1 (·); volante/ângulo, u2 (t). Também aqui, por razões de ordem mecânica e fı́sica, existem certas restrições aos valores dos controlos. Temos três variáveis de estado: posição x, y do carro no plano e ângulo θ. São possı́veis vários Óptimo. Por exemplo: ir R problemas de Controlo T de um lugar a outro em tempo mı́nimo 0 1 dt −→ min ; ir de um lugar a outro gastando RT o mı́nimo de combustı́vel: 0 u1 (t)2 + u2 (t)2 dt −→ min. Exemplo 55 (Problema de Newton da Resistência mı́nima). O maior trabalho cientı́fico de Newton, “Os Princı́pios Matemáticos da Filosofia Natural”, foi publicado em 1687. Neste livro aparece um problema de optimização de natureza técnica: Determinar o corpo de rotação, com uma dada largura T e altura H, que menor resistência oferece quando em movimento, na direcção do seu eixo de simetria, num fluido viscoso rarefeito. Newton indicou a solução para o seu problema, sem explicar como a obteve, e acrescentou que o problema é pragmático: nas suas palavras, “a solução pode ser usada na construção de navios”. Na verdade, as hipóteses de Newton de meio raro fazem a solução do problema útil, não na construção de navios, em movimento na água, mas na construção de veı́culos espaciais de alta altitude, onde o meio é rarefeito, como sejam satélites artificiais ou mı́sseis. A solução do problema de Newton encontra também aplicação na construção das balas das pistolas (a velocidade do projéctil é muito elevada e a interacção com o ar pode ser em grande parte desprezada). Dados dois pontos (0, 0) e (T, H) encontrar a função que os une e que, 72 Controlo Óptimo por rotação, gera o corpo de revolução oferecendo a menor resistência ao movimento num meio raro. Matematicamente, o problema proposto por Newton consiste num problema de Controlo Óptimo: R[u(·)] = Z T 0 t dt −→ min 1 + u(t)2 u(t) ≥ 0 , ẋ(t) = u(t) , x(0) = 0 , x(T ) = H , T e H dados, T > 0, H > 0. Sem a restrição u(t) ≥ 0, o problema de Newton é um caso particular do problema fundamental do Cálculo das Variações. A restrição u(t) ≥ 0, além de fisicamente importante, é também matematicamente necessária: sem ela o problema não tem solução. O Problema de Newton da Resistência mı́nima é considerado o primeiro problema de Controlo Óptimo. Será estudado em detalhe na Secção 3.6. Começamos por notar que o problema de Controlo Óptimo inclui, como casos particulares, todos os problemas do Cálculo das Variações estudados. No que se segue, consideramos x(t) ∈ Rn . O problema fundamental do Cálculo das Variações (vectorial), Z a b f (t, x(t), ẋ(t))dt −→ min , x(a) = xa , x(b) = xb , é equivalente ao problema de Controlo Óptimo I[x(·), u(·)] = Z b a f (t, x(t), u(t))dt −→ min , ẋ(t) = u(t) , x(a) = xa , x(b) = xb , com m = n, U = Rn (nos problemas do Cálculo das Variações não existem restrições aos valores dos controlos). O problema do Cálculo das Variações com derivadas de ordem superior, Z b a L(t, x(t), ẋ(t), . . . , x(r) (t))dt −→ min , x(a) = x0a , x(b) = x0b , .. . x(r−1) (a) = xar−1 , x(r−1) (b) = xbr−1 , (3.3) 3.1 Formulação do problema e sua relação com o Cálculo das Variações 73 é também um caso particular do problema de Controlo Óptimo. Introduzindo a notação x0 (t) = x(t), · · · , xr−1 (t) = x(r−1) (t), u(t) = x(r) (t), X = x0 , . . . , xr−1 , obtemos (U = Rn ): I [X(·), u(·)] = ẋ0 (t) ẋ1 (t) .. . ẋ(r−2) (t) ẋ(r−1) (t) Z b L (t, X(t), u(t)) dt −→ min , a = x1 (t) = x2 (t) ⇔ Ẋ(t) = AX(t) + Bu(t) , (3.4) = xr−1 (t) = u(t) X(a) = α , X(b) = β , com A= 0 1 0 0 ··· 0 0 1 0 ··· 0 0 0 1 ··· .. .. .. .. . . . . . . . 0 0 0 0 ··· 0 0 0 0 ··· 0 0 . .. B= , 0 1 0 0 , 0 1 0 x0a . . α= . , xar−1 x0b . . β= . . xbr−1 Por último, o problema isoperimétrico Z b Z b a L (t, x(t), ẋ(t)) dt −→ min , Ki (t, x(t), ẋ(t)) dt = ai , i = 1, . . . , r , a x(a) = xa , x(b) = xb , é igualmente um problema particular do problema de Controlo Óptimo com U = Rn . Para vermos isso, introduzimos r novas funções: xn+1 (t) = Z t Z t K1 (τ, x(τ ), ẋ(τ )) dτ , a .. . xn+r (t) = Kr (τ, x(τ ), ẋ(τ )) dτ . a Temos então ẋn+i (t) = Ki (t, x(t), ẋ(t)) , xn+i (a) = 0 , xn+i (b) = ai , i = 1, . . . , r 74 Controlo Óptimo e o problema isoperimétrico pode ser escrito na forma equivalente Z b L (t, x1 (t), . . . , xn (t), u1 (t), . . . , un (t)) dt −→ min , a ẋ (t) = u (t) , i i ẋ (t) = K (t, x (t), . . . , x (t), u (t), . . . , u (t)) , n+j j 1 xi (a) = xai , xn+j (a) = 0 , n 1 n xi (b) = xbi , xn+j (b) = aj , i = 1, . . . , n, j = 1, . . . , r. Vemos então que o Controlo Óptimo é uma generalização do Cálculo das Variações. As grandes novidades são: • A possibilidade de haver restrições aos valores dos controlos: u(t) ∈ U . Quando U é um conjunto com fronteira, a teoria clássica do Cálculo das Variações deixa de ser válida. • A possibilidade de trabalhar com classes de funções mais abrangentes. Por exemplo, se U = [0, 1], é usual os controlos óptimos serem descontı́nuos (chamados controlos bang-bang) tomando o valor 0 ou 1. Existem mesmo situações em que o número de comutações do controlo óptimo (o número de pontos de descontinuidade de u(·)) é infinito num intervalo de tempo finito (o chamado fenómeno de chattering). Vamos dar ênfase no nosso estudo às condições necessárias de optimalidade. Foram elas que estiveram, tal como aconteceu no Cálculo das Variações, na origem da Teoria Matemática do Controlo Óptimo, que nasceu com a demonstração do famoso Princı́pio do Máximo de Pontryagin: condição necessária de primeira ordem para o problema de Controlo Óptimo. Vamos começar (§3.2) com o caso mais simples em que o conjunto U coincide com todo o espaço Euclidiano Rm (não existem restrições aos valores dos controlos). Para já vamos mostrar que a formulação do problema de Controlo Óptimo adoptada neste curso é genérica: problemas de Controlo Óptimo de aspecto diferente podem ser convertidos para um problema equivalente na forma adoptada. 3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes Na verdade, o Controlo Óptimo sem restrições aos valores dos controlos (U = Rm ) corresponde ao Cálculo das Variações. No entanto, o Controlo Óptimo usa uma outra perspectiva ao assunto: a perspectiva Hamiltoniana, em contraste com a abordagem Lagrangeana que 3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes 75 usámos em §2. Consideramos então o problema: I [x(·), u(·)] = Z a T L (t, x(t), u(t)) dt −→ min , (3.5) ẋ(t) = ϕ(t, x(t), u(t)) , com condições de fronteira apropriadas. Por simplicidade, consideramos x(·) ∈ C 2 ([a, T ]; Rn ) , u(·) ∈ C 1 ([a, T ]; Rm ) (estas são as classes de funções tı́picas do Cálculo das Variações elementar – em Controlo Óptimo consideram-se, normalmente, classes mais abrangentes). Tendo em conta a nossa experiência com o problema isoperimétrico, a técnica dos multiplicadores de Lagrange e a redução do problema isoperimétrico à forma (3.5), é plausı́vel considerar a funcional J [x(·), u(·), ψ(·)] = Z T a [ψ0 L(t, x(t), u(t)) + ψ(t) · (ϕ(t, x(t), u(t)) − ẋ(t))] dt −→ min (3.6) (ψ0 = 1 caso normal; ψ0 = 0 caso anormal) e esperar que as soluções óptimas para o problema de controlo óptimo inicial possam ser encontradas resolvendo as equações de Euler-Lagrange para J[·, ·, ·]. Uma vez que o Princı́pio do Máximo de Pontryagin é uma afirmação mais geral, que será abordada em §3.5, não vamos insistir aqui, nesta fase, na demonstração deste facto. Se introduzirmos a função de Hamilton (o Hamiltoniano) H: H(t, x, u, ψ0 , ψ) = ψ0 L(t, x, u) + ψ · ϕ(t, x, u) , (3.7) (3.6) é equivalente a J [x(·), u(·), ψ(·)] = Z a T [H(t, x(t), u(t), ψ0 , ψ(t)) − ψ(t) · ẋ(t)] dt −→ min . As equações de Euler-Lagrange dão-nos: ∂ ∂ d (H − ψ · ẋ) = ∂x (H − ψ · ẋ) dt ∂ ẋ d ∂ ∂ (H − ψ · ẋ) = ∂u (H − ψ · ẋ) dt h ∂ u̇ i d ∂ (H − ψ · ẋ) = ∂ (H − ψ · ẋ) dt ∂ ψ̇ ∂ψ Temos então o seguinte resultado: ⇔ −ψ̇ = 0= 0 = ∂H ∂x ∂H ∂u ∂H ∂ψ − ẋ . Teorema 56 (Condição necessária de 1a ordem de Hestenes para o problema de Controlo Óptimo sem restrições aos valores dos controlos – princı́pio do máximo fraco). Se (x(·), u(·)) for minimizante do problema (3.5), então existe um par não nulo (ψ0 , ψ(·)), com ψ0 uma constante não negativa (ψ0 ≥ 0) e ψ(·) uma função vectorial diferenciável, tal que (x(·), u(·), ψ0 , ψ(·)) satisfaz: 76 Controlo Óptimo (i) o sistema Hamiltoniano ẋ(t) = ∂H (t, x(t), u(t), ψ , ψ(t)) , 0 ∂ψ ψ̇(t) = − ∂H (t, x(t), u(t), ψ , ψ(t)) ; 0 ∂x (ii) a condição de estacionaridade ∂H (t, x(t), u(t), ψ0 , ψ(t)) = 0 ; ∂u onde o Hamiltoniano H é definido por (3.7). Estas condições devem ser completadas com as condições de fronteira do problema. Se não forem fixas condições de fronteira, ou for apenas especificada uma delas, em a ou T , surgem condições necessárias adicionais – as chamadas condições de transversalidade: se x(a) for livre então ψ(a) = 0; se x(T ) for livre então ψ(T ) = 0. O Teorema 56 tem a sua génese nos trabalhos de Graves de 1933, tendo sido obtido primeiramente por Hestenes em 1950. Trata-se de uma caso particular do Princı́pio do Máximo de Pontryagin (cf. §3.5). Aos quaternos (x(·), u(·), ψ0 , ψ(·)) que satisfazem o Teorema 56 chamamos extremais. A primeira equação do sistema Hamiltoniano, ẋ = ∂H ∂ψ , não é mais do que o sistema de controlo ẋ = ϕ(t, x, u). A segunda equação do sistema Hamiltoniano, ψ̇ = − ∂H ∂x , é chamada de sistema adjunto. Proposição 57. Ao longo das extremais (x(·), u(·), ψ0 , ψ(·)) do problema de controlo óptimo sem restrições nos valores dos controlos verifica-se a seguinte propriedade: dH ∂H (t, x(t), u(t), ψ0 , ψ(t)) = (t, x(t), u(t), ψ0 , ψ(t)) . dt ∂t Demonstração. A derivada total do Hamiltoniano é dada por ∂H ∂H ∂H ∂H dH = + · ẋ + · u̇ + · ψ̇ . dt ∂t ∂x ∂u ∂ψ Usando o sistema Hamiltoniano e a condição de estacionaridade, obtemos a igualdade pretendida: dH dt = ∂H ∂t + ∂H ∂x · ∂H ∂ψ − ∂H ∂ψ · ∂H ∂x = ∂H ∂t . Para o problema fundamental do Cálculo das Variações H(t, x, u, ψ0 , ψ) = ψ0 L(t, x, u) + ψ · u e obtemos, da Proposição 57 e Teorema 56 os seguintes corolários. Corolário 58. Se x(·) for solução do problema fundamental do Cálculo das Variações então: (a) x(·) é uma extremal normal (podemos fazer ψ0 = 1, i.e., não existem extremais anormais para o problema fundamental do Cálculo das Variações); (b) x(·) satisfaz a equação de Euler-Lagrange d ∂L dt ∂u = ∂L ∂x (cf. (2.2)); 3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes ∂L ∂u (a, x(a), u(a)) (c) se x(a) for livre, então = 0; se x(b) for livre, então 77 ∂L ∂u (b, x(b), u(b)) =0 (cf. (2.3)). Demonstração. Para provarmos (a) basta escrever a condição de estacionaridade: ∂H ∂L ∂L = 0 ⇔ ψ0 + ψ = 0 ⇔ ψ = −ψ0 . ∂u ∂u ∂u Se ψ0 = 0 isso implica que ψ = 0. Ora isso não é possı́vel pelo Teorema 56 (o par (ψ0 , ψ) não é nulo). Concluı́mos então que ψ0 6= 0 (só ocorre caso normal) e que ψ(t) = − ∂L (t, x(t), u(t)) . ∂u (3.8) d ∂L Derivando a igualdade (3.8) em relação a t obtemos ψ̇ = − dt ∂u ; enquanto o sistema adjunto ∂L afirma que ψ̇ = − ∂H ∂x , ou seja, ψ̇ = − ∂x . Comparando as duas expressões obtemos a equação de Euler-Lagrange: d ∂L dt ∂u = ∂L ∂x . Dado (3.8), as condições de transversalidade ψ(a) = 0, ψ(b) = 0 (que aparecem quando não são especificadas, respectivamente, as condições de fronteira x(a) e x(b)) tomam a forma em (c). Corolário 59. Uma condição necessária para x(·) ser solução do problema fundamental do Cálculo das Variações (ẋ(t) = u(t)) é dada pela condição clássica de DuBois-Reymond: d ∂L ∂L (t, x(t), ẋ(t)) = (t, x(t), ẋ(t)) · ẋ(t) . L (t, x(t), ẋ(t)) − ∂t dt ∂u Demonstração. Atendendo a que pelo Corolário 58 não existem extremais anormais (ψ0 = 1), a condição necessária clássica de DuBois-Reymond é consequência imediata da igualdade dH dt = ∂H ∂t da Proposição 57 e de (3.8). Para o problema do Cálculo das Variações com derivadas de ordem superior (3.4), Z b L(t, x0 , x1 , . . . , xr−1 , u)dt −→ min , a 0 1 ẋ = x ẋ1 = x2 .. . ẋr−2 = xr−1 ẋr−1 = u xi (a) = αi , xi (b) = β i , i = 1, . . . , r − 1 (αi ∈ Rn ) , o Hamiltoniano é dado por r−2 X ψ i · xi+1 + ψ r−1 · u H t, x0 , . . . , xr−1 , u, ψ0 , ψ 0 , . . . , ψ r−1 = ψ0 L t, x0 , . . . , xr−1 , u + i=0 78 Controlo Óptimo e obtemos do Teorema 56 a equação de Euler-Lagrange de ordem superior (2.29) (equação de Euler-Poisson). Corolário 60. Se x(·) for solução do problema do Cálculo das Variações com derivadas de ordem superior (3.3), então: (a) x(·) é uma extremal normal (não ocorre o caso anormal para o problema do Cálculo das Variações com derivadas de ordem superior); (b) x(·) satisfaz a equação de Euler-Lagrange de ordem superior: r−1 X i=0 di ∂L (−1) i i dt ∂x i Demonstração. Da condição de estacionaridade adjunto toma a forma (i = 1, . . . , r − 1) ψ̇ 0 ψ̇ 0 = − ∂H ∂x0 ⇔ ψ̇ i ψ̇ i = − ∂H ∂xi + (−1)r ∂H ∂u dr ∂L = 0. dtr ∂u = 0 obtemos ψ r−1 = −ψ0 ∂L ∂u ; o sistema ∂L = −ψ0 ∂x 0 ∂L i−1 . = −ψ0 ∂x i − ψ (3.9) As condições ψ r−1 = −ψ0 ∂L , ∂u ψ i−1 = −ψ̇ i − ψ0 ∂L , ∂xi i = r − 1, . . . , 1 , dão-nos ∂L , ∂u d ∂L ∂L = + ψ0 − ψ0 r−1 , dt ∂u ∂x d ∂L ∂L d2 ∂L + ψ0 − ψ0 r−2 , = − ψ0 2 dt ∂u dt ∂xr−1 ∂x .. . ψ r−1 = − ψ0 ψ r−2 ψ r−3 ou, de um modo geral, j−1 ψ r−j = (−1)j ψ0 j−1−k X ∂L dj−1 ∂L j+k d + ψ (−1) , 0 j−1 j−1−k dt ∂u dt ∂xr−k j = 1, . . . , r . (3.10) k=1 Se ψ0 = 0, a expressão (3.10) implica que todos os ψ r−j , j = 1, . . . , r, são nulos. Como pelo Teorema 56 os multiplicadores não podem ser todos nulos em simultâneo, concluı́mos que nunca ocorre o caso anormal para o problema do Cálculo das Variações com derivadas de 3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes 79 ordem superior (ψ0 = 1). A equação de Euler-Lagrange de ordem superior é obtida usando ∂L (3.9), ψ̇ 0 = − ∂x 0 ; derivando (3.10) para j = r, r−1 dr−k ∂L dr ∂L X (−1)r+k r−k r−k ; + ψ̇ = (−1) r dt ∂u dt ∂x 0 r k=1 e comparando as expressões (fazer a mudança de variável i = r − k): r−1 i dr ∂L X ∂L i d ∂L + (−1) r (−1) i i = − 0 . dt ∂u dt ∂x ∂x r i=1 Exercı́cio 20. Demonstre a condição necessária de DuBois-Reymond de ordem superior: ∂L t, x(t), ẋ(t), . . . , x(r) (t) ∂t r−j r X i X d ∂L d (−1)i i i+j · x(j) (t) . L t, x(t), ẋ(t), . . . , x(r) (t) − = dt dt ∂x j=1 i=0 Para isso particularize a igualdade dH dt = ∂H ∂t , dada pela Proposição 57, para o problema do Cálculo das Variações com derivadas de ordem superior e use as igualdades obtidas na demonstração do Corolário 60. O Teorema 56 fornece um algoritmo para determinar as extremais dos problemas de Controlo Óptimo sem restrições aos valores dos controlos. Algoritmo 61 (Obtenção das extremais para o problema (3.5)). 1. Escrever o Hamiltoniano associado ao problema. 2. Usar a condição de estacionaridade e tentar obter os controlos u(·) em função das variáveis de estado x(·) e multiplicadores ψ(·). 3. Substituir as expressões dos controlos, encontradas no passo anterior, no sistema Hamiltoniano e resolver o sistema de equações diferenciais ordinárias obtido com as condições de fronteira do problema (ou respectivas condições de transversalidade), encontrando as trajectórias extremais x̃(·) e respectivos multiplicadores ψ̃(·). 4. Substituir x̃(·) e ψ̃(·) nas expressões encontradas no segundo passo, obtendo os controlos extremais ũ(·). Geralmente é preciso estudar o caso normal (ψ0 = 1) e anormal (ψ0 = 0) em separado. Vejamos um exemplo de aplicação do algoritmo acima delineado (aplicação do Teorema 56). 80 Controlo Óptimo Exemplo 62. Consideremos o problema de parar um pêndulo no instante T = 1 com o mı́nimo gasto de energia e sem restrições ao valor do controlo: u(t) ∈ R ∀t ∈ [0, 1] (cf. Exemplo 53 com massa unitária m = 1 e constante k = π): Z 0 1 u(t)2 dt −→ min , (3.11) ẋ (t) = x (t) , 1 2 ẋ (t) = −π 2 x (t) + u(t) , 2 1 π , 4 x2 (0) = 1 , x1 (0) = x1 (1) = 0 , x2 (1) = 0 . O Hamiltoniano é definido por H(t, x1 , x2 , ψ0 , ψ1 , ψ2 , u) = ψ0 u2 + ψ1 x2 + ψ2 −π 2 x1 + u . Usando o Sistema de Computação Algébrica Maple fazemos: > restart; > # Passo 1: > H := (x1,x2,psi0,psi1,psi2,u) -> psi0*u^2+psi1*x2+psi2*(-Pi^2*x1+u); H := (x1 , x2 , ψ0 , ψ1 , ψ2 , u) 7→ ψ0 u2 + ψ1 x2 + ψ2 −π 2 x1 + u definiç~ ao do Hamiltoniano Da condição de estacionaridade ∂H ∂u ∂H = 0 tiramos que 2ψ0 u+ψ2 = 0; da equação ψ̇2 = − ∂x 2 do sistema adjunto vem ψ̇2 = −ψ1 , pelo que concluı́mos não existirem extremais anormais: ψ0 = 0 ⇒ ψ2 = 0 ⇒ ψ1 = 0 e, pelo Teorema 56, isso não é possı́vel (os multiplicadores não podem ser todos nulos). > # Estudo do caso anormal: psi0 = 0 > # Passo 2 > D[6](H)(x1(t),x2(t),0,psi1(t),psi2(t),u(t)) = 0; # condiç~ ao de estacionaridade ψ2 (t) = 0 > # É fácil de ver que psi0 n~ ao pode ser zero (n~ ao ocorre caso anormal) > # Já vimos que psi0 = 0 implica psi2(t) = 0. > # Vamos agora ver que pelo sistema adjunto também temos psi1(t) = 0 > # eq1A e eq2A formam o sistema adjunto para o caso anormal > eq1A := diff(psi1(t),t) = - D[1](H)(x1(t),x2(t),0,psi1(t),0,u(t)); eq1A := > d dt ψ1 (t) = 0 eq2A := diff(0,t) = - D[2](H)(x1(t),x2(t),0,psi1(t),0,u(t)); eq2A := 0 = −ψ1 (t) > # Terı́amos ent~ ao todos os multiplicadores simultaneamente nulos > # Concluı́mos que n~ ao ocorre caso anormal: podemos fixar psi0=1 3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes 81 Fixamos então ψ0 = 1 (caso normal) e, da condição de estacionaridade, concluı́mos que u = − ψ22 . Substituindo a expressão do u no sistema Hamiltoniano e usando as condições de fronteira, obtemos as trajectórias extremais e respectivos multiplicadores. > # Passo 2 (caso normal: a partir de agora fixamos sempre psi0 = 1) > u := t -> solve(D[6](H)(x1(t),x2(t),1,psi1(t),psi2(t),u) = 0,u): > u(t); # express~ ao do controlo obtida pela condiç~ ao de estacionaridade − 12 ψ2 (t) > # Passo 3 (eq1, eq2, eq3 e eq4 formam o sistema Hamiltoniano) > eq1 := diff(psi1(t),t) = - D[1](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t)); d dt ψ1 eq1 := > eq2 := diff(psi2(t),t) = - D[2](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t)); eq2 := > d dt ψ2 (t) = −ψ1 (t) eq3 := diff(x1(t),t) = D[4](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t)); eq3 := > (t) = ψ2 (t) π 2 d dt x1 (t) = x2 (t) eq4 := diff(x2(t),t) = D[5](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t)); eq4 := d dt x2 (t) = −π 2 x1 (t) − 21 ψ2 (t) > sol := dsolve(eq1,eq2,eq3,eq4,x1(0)=Pi/4,x2(0)=1,x1(1)=0,x2(1)=0): > assign(sol); > # extremais (trajectórias e multiplicadores extremais) > simplify(x1(t)); − 14 > −4 sin(π t)−π sin(π t)−cos(π t)π 2 +4 sin(π t)t+cos(π t)π 2 t π simplify(x2(t)); 1 4 π cos(π t)−4 sin(π t)−π 3 sin(π t)−4 cos(π t)π t+π 3 sin(π t)t 4 π > simplify(psi1(t)); π 4 sin (π t) + cos (π t) π 2 > simplify(psi2(t)); 4 cos (π t) − sin (π t) π 2 Atendendo a que ψ2 (t) = 4 cos (πt) − sin (πt) π 2 obtemos facilmente o controlo extremal u = − ψ22 : > # Passo 4: > u(t); controlo extremal −2 cos (π t) + 1/2 sin (π t) π 2 Neste caso a extremal encontrada é mesmo solução do problema (cf. Teorema 63). O mı́nimo global da funcional (3.11) é 81 π 4 + 2. 82 Controlo Óptimo > # Valor da funcional ao longo da extremal > int(u(t)^2,t=0..1); 1 8 π4 + 2 Exercı́cio 21. Determine as extremais do seguinte problema de Controlo Óptimo: Z 0 3.3 1 x2 − xu + u2 dt −→ min , ẋ = x + u , x(0) = x0 , x(1) = x1 . Condição suficiente Na secção anterior, §3.2, abordámos a questão das condições necessárias de optimalidade para o problema (3.5). Sob condições apropriadas de convexidade do Lagrangeano L(·, ·, ·) e linearidade do sistema de controlo (ϕ(t, x, u) = Ax + Bu) é possı́vel estabelecer uma condição suficiente de optimalidade. Teorema 63. Considere-se o problema de Controlo Óptimo com sistema linear de controlo, I [x(·), u(·)] = Z a T L (t, x(t), u(t)) dt −→ min , ẋ(t) = ϕ(t, x(t), u(t)) = Ax(t) + Bu(t) , (x(a) = xa ) , (x(T ) = xT ) , onde colocamos as condições de fronteira entre parêntesis para indicar que elas podem estar ou não presentes. Se L(t, x, u) for convexa em x e u, para todo o t ∈ [a, T ] fixo, então as extremais normais obtidas pelo Teorema 56 (princı́pio do máximo fraco) são solução óptima do problema (minimizante global). Demonstração. Sejam (x̃(·), ũ(·)) um par que satisfaz as condições necessárias de optimalidade dadas pelo Teorema 56 com ψ0 = 1 (caso normal) e (x(·), u(·)) um par admissı́vel qualquer. Vamos medir a diferença I [x(·), u(·)] − I [x̃(·), ũ(·)] e concluir que ela não pode ser negativa, I [x(·), u(·)] − I [x̃(·), ũ(·)] ≥ 0 ⇔ I [x̃(·), ũ(·)] ≤ I [x(·), u(·)] , como pretendemos provar. O Hamiltoniano é dado por H = L(t, x, u) + ψ · (Ax + Bu). Por definição de convexidade podemos escrever: I [x(·), u(·)] − I [x̃(·), ũ(·)] = Z a T [L(t, x, u) − L(t, x̃, ũ)] dt Z T ∂L ∂L ≥ (t, x̃, ũ) (x − x̃) + (t, x̃, ũ) (u − ũ) dt . (3.12) ∂x ∂u a 3.4 Programação Dinâmica em tempo contı́nuo Da condição de estacionaridade ∂H ∂u 83 = 0 sabemos que existe um ψ(·) tal que ∂L ∂L (t, x̃, ũ) + ψ(t)B = 0 ⇔ (t, x̃, ũ) = −ψ(t)B ; ∂u ∂u enquanto do sistema adjunto, ψ̇ = − ∂H ∂x , ψ̇(t) = − ∂L ∂L (t, x̃, ũ) − ψ(t)A ⇔ (t, x̃, ũ) = −ψ̇(t) − ψ(t)A ; ∂x ∂x pelo que vem de (3.12) que I [x(·), u(·)] − I [x̃(·), ũ(·)] ≥ Z a T h i −ψ̇(t) − ψ(t)A (x(t) − x̃(t)) − ψ(t)B (u(t) − ũ(t)) dt . Fazendo primitivação por partes, e usando as condições de fronteira ou as condições de transversalidade, sabemos que Z T a Z T ˙ ψ̇(t) (x(t) − x̃(t)) dt = (x(t) − − ẋ(t) − x̃(t) ψ(t)dt a Z T =− [Ax(t) + Bu(t) − Ax̃(t) − B ũ(t)] ψ(t)dt , x̃(t)) ψ(t)|Ta a de onde vem a desigualdade pretendida: I [x(·), u(·)] − I [x̃(·), ũ(·)] Z T ≥ ψ(t) [Ax(t) + Bu(t) − Ax̃(t) − B ũ(t) − A (x(t) − x̃(t)) − B (u(t) − ũ(t))] dt ≥ 0 . a Exercı́cio 22. Determinar o controlo óptimo e respectivas trajectórias minimizantes para os seguintes problemas de Controlo Óptimo: (a) Z 0 1 u(t)2 dt −→ min , (b) Z 0 3.4 1 u(t)2 dt −→ min , ẋ(t) = u(t) + ax(t) , ẋ (t) = x (t) , 1 2 ẋ (t) = u(t) , x1 (0) = 1 , a ∈ R, x(0) = 1 . x1 (1) = 0 , x2 (0) = 1 . 2 Programação Dinâmica em tempo contı́nuo Sob hipóteses realı́sticas, os controlos admissı́veis estão normalmente sujeitos a limites no seu valor. Tipicamente, esses limites são formulados exigindo que u(t) ∈ U , ∀t ∈ [a, T ], onde 84 Controlo Óptimo U é um subconjunto apropriado de Rm . Estamos então interessados em resolver o seguinte problema: Z a T L (t, x(t), u(t)) dt −→ min , ẋ(t) = ϕ (t, x(t), u(t)) , x(a) = xa , (3.13) u(t) ∈ U , x(T ) = xT . Como tem vindo a ser hábito ao longo deste curso, estamos especialmente interessados em condições necessárias de optimalidade, condições essas que as soluções do problema satisfazem. Vamos obter o Princı́pio do Máximo de Pontryagin, a condição necessária de primeira ordem para problemas genéricos do Controlo Óptimo, seguindo a abordagem da Programação Dinâmica. Esta abordagem é baseada no chamado Princı́pio de Bellman. O Princı́pio de Bellman, aplicado ao caso contı́nuo que aqui estudamos, proporciona também outra perspectiva aos problemas do Cálculo das Variações: a ênfase é colocada, não nas soluções óptimas, como é habitual nas abordagens variacionais, mas sim nos valores óptimos da funcional. Definição 64. Seja x ∈ Rn . Definimos a função valor S : [a, T ] × Rn → R por S(t, x) = min (x(·),u(·)) (Z T L (τ, x(τ ), u(τ )) dτ : t ẋ(τ ) = ϕ (τ, x(τ ), u(τ )) , u(τ ) ∈ U , x(t) = x , x(T ) = xT ) . A Programação Dinâmica é baseada na seguinte propriedade fundamental: Princı́pio de Bellman. Para todo o t′ > t é válida a seguinte igualdade: S(t, x) = min (z(·),v(·)) "Z t′ t L (τ, z(τ ), v(τ )) dτ : z ′ (τ ) = ϕ (τ, z(τ ), v(τ )) , v(τ ) ∈ U , # z(t) = x , z(t′ ) = x + y(t′ − t) + S t′ , x + y(t′ − t) . (3.14) A propriedade (3.14) pode ser escrita na seguinte forma: 0= min (z(·),v(·)) " 1 ′ t −t Z t′ t L (τ, z(τ ), v(τ )) dτ : z ′ (τ ) = ϕ (τ, z(τ ), v(τ )) , v(τ ) ∈ U , # z(t) = x , z(t′ ) = x + y(t′ − t) + Tomando o limite quando t′ → t concluı́mos que (reparar que 0 = min [L(t, x, v) : y = ϕ(t, x, v)] + v∈U S (t′ , x + y(t′ − t)) − S(t, x) . t′ − t z(t′ )−z(t) t′ −t = y) ∂S ∂S (t, x) + (t, x) · y , ∂t ∂x 3.4 Programação Dinâmica em tempo contı́nuo ou seja, 85 ∂S ∂S (t, x) = − min L(t, x, v) + (t, x) · ϕ(t, x, v) . v∈U ∂t ∂x (3.15) Vamos derivar, formalmente, as equações de Hamilton-Jacobi do Controlo Óptimo. Suponhamos que para todo o t ∈ [a, T ] e todo o x ∈ Rn existe um processo optimal (x̃(·), ũ(·)) solução do problema de Controlo Óptimo C[t, x(·), u(·)] = Z T t L (τ, x(τ ), u(τ )) dτ −→ min , ẋ(τ ) = ϕ (τ, x(τ ), u(τ )) , x(t) = x , u(τ ) ∈ U , x(T ) = xT . Temos então que x̃(t) = x e S(t, x) = S (t, x̃(t)) = C[t, x̃(·), ũ(·)] = Z T L (τ, x̃(τ ), ũ(τ )) dτ . t Derivando em ordem a t obtemos ∂S ∂S (t, x̃(t)) + (t, x̃(t)) ϕ (t, x̃(t), ũ(t)) = −L (t, x̃(t), ũ(t)) , ∂t ∂x ou seja, (3.16) ∂S ∂S (t, x̃(t)) = − L (t, x̃(t), ũ(t)) + (t, x̃(t)) ϕ (t, x̃(t), ũ(t)) . ∂t ∂x Comparando com (3.15), e tendo em mente que x̃(t) = x, concluı́mos que L (t, x̃(t), ũ(t)) + ∂S (t, x̃(t)) · ϕ (t, x̃(t), ũ(t)) ∂x ∂S (t, x̃(t)) · ϕ (t, x̃(t), v) . (3.17) = min L (t, x̃(t), v) + v∈U ∂x Se fizermos ψ(t) = ψ0 ∂S (t, x̃(t)) , ∂x (3.18) ψ0 constante, obtemos ∂2S ∂2S ∂S (t, x̃(t)) = ψ0 (t, x̃(t)) + ψ0 2 (t, x̃(t)) · ϕ (t, x̃(t), ũ(t)) ψ0 ∂x ∂t∂x ∂x ∂S ∂S ∂ ∂ ∂S (t, x̃(t)) + (t, x̃(t)) · ϕ(t, x̃(t), ũ(t)) − ψ0 (t, x̃(t)) (ϕ(t, x̃(t), ũ(t))) = ψ0 ∂x ∂t ∂x ∂x ∂x ∂L ∂ϕ (3.16) = −ψ0 (t, x̃(t), ũ(t)) − ψ(t) · (t, x̃(t), ũ(t)) . ∂x ∂x (3.19) d ψ̇(t) = dt 86 Controlo Óptimo Introduzindo o Hamiltoniano (3.7), H(t, x, u, ψ0 , ψ) = ψ0 L(t, x, u) + ψ · ϕ(t, x, u), podemos escrever (3.17) e (3.19) respectivamente na forma H (t, x̃(t), ũ(t), ψ0 , ψ(t)) = min [H (t, x̃(t), v, ψ0 , ψ(t))] , v∈U ψ̇(t) = − ∂H (t, x̃(t), ũ(t), ψ0 , ψ(t)) . ∂x (3.20) (3.21) As condições (3.20) e (3.21) constituem o âmago do Princı́pio do Máximo de Pontryagin. Usando (3.20) e (3.18) em (3.16), conjuntamente com a definição do Hamiltoniano H, obtemos a equação de Hamilton-Jacobi-Bellman do Controlo Óptimo: ∂S ∂S ψ0 (t, x̃(t)) + min H t, x̃(t), v, ψ0 , ψ0 (t, x̃(t)) = 0 . v∈U ∂t ∂x (3.22) Notamos que a condição (3.22) (assim como (3.20)) é facilmente escrita na forma de máximo: fazendo p0 = −ψ0 , a equação de Hamilton-Jacobi-Bellman (3.22) é equivalente a ∂S ∂S (t, x̃(t)) + max H t, x̃(t), v, p0 , p0 (t, x̃(t)) = 0 . −p0 v∈U ∂t ∂x 3.5 Princı́pio do Máximo de Pontryagin As condições necessárias (3.20) e (3.21) formam o célebre Princı́pio do Máximo de Pontryagin, que é a condição necessária por excelência do Controlo Óptimo. Teorema 65 (Princı́pio do Máximo de Pontryagin – aqui com a condição de máximo na forma de mı́nimo). Se (x(·), u(·)) é solução óptima do problema de Controlo Óptimo (3.13), então existe uma função vectorial ψ(·) e uma constante ψ0 ≥ 0, com o par (ψ0 , ψ(·)) não nulo, tal que as seguintes condições são satisfeitas: (i) o sistema Hamiltoniano ẋ(t) = ∂H (t, x(t), u(t), ψ , ψ(t)) (sistema de controlo) , 0 ∂ψ ψ̇(t) = − ∂H (t, x(t), u(t), ψ , ψ(t)) (sistema adjunto) ; ∂x (3.23) 0 (ii) a condição de mı́nimo H (t, x(t), u(t), ψ0 , ψ(t)) = min H (t, x(t), v, ψ0 , ψ(t)) ; v∈U onde o Hamiltoniano H é definido por H(t, x, u, ψ0 , ψ) = ψ0 L(t, x, u) + ψ · ϕ(t, x, u). Definição 66. A um quaterno (x(·), u(·), ψ0 , ψ(·)) que satisfaz o Princı́pio do Máximo de Pontryagin chamamos extremal de Pontryagin. 3.5 Princı́pio do Máximo de Pontryagin 87 Observação 67. A condição de mı́nimo do Teorema 65 é um problema de Programação Matemática não-linear . Se U for um conjunto aberto ela implica a condição de estacionaridade ∂H ∂u = 0 do Teorema 56. Antes de aplicarmos o Princı́pio do Máximo de Pontryagin a problemas concretos do Controlo Óptimo, vamos obter, como corolário, mais uma condição clássica de optimalidade do Cálculo das Variações. Corolário 68 (condição necessária de Weierstrass). Se x(·) é solução do problema fundamental do Cálculo das Variações, J[x(·)] = Z b a L(t, x(t), ẋ(t))dt −→ min , x(a) = A , x(b) = B , então x(·) satisfaz a seguinte desigualdade: L(t, x(t), v) − L(t, x(t), ẋ(t)) − ∂L (t, x(t), ẋ(t)) · (v − ẋ(t)) ≥ 0 , ∂u ∀ v ∈ Rn . Demonstração. Já demonstrámos (Corolário 58) que para o problema fundamental do Cálculo das Variações não existem extremais anormais (ψ0 = 1) e o Hamiltoniano toma a forma H(t, x, u, ψ) = L(t, x, u) + ψ · u, com ψ(t) = − ∂L ∂u (t, x(t), u(t)), u(t) = ẋ(t) – cf. (3.8). A condição necessária de Weierstrass é uma consequência imediata da condição de mı́nimo do Princı́pio do Máximo de Pontryagin (Teorema 65): H (t, x(t), u(t), ψ(t)) = minn H (t, x(t), v, ψ(t)) v∈R ∂L ∂L (t, x(t), ẋ(t)) · ẋ(t) ≤ L(t, x(t), v) − (t, x(t), ẋ(t)) · v ∀ v ∈ Rn ⇔ L(t, x(t), ẋ(t)) − ∂u ∂u ∂L ⇔ L(t, x(t), v) − L(t, x(t), ẋ(t)) − (t, x(t), ẋ(t)) · (v − ẋ(t)) ≥ 0 , ∀ v ∈ Rn . ∂u Exemplo 69 (aplicação do Princı́pio do Máximo de Pontryagin). Consideramos um objecto móvel de massa unitária, de deslocação unidimensional, cuja posição x(t) podemos controlar por meio de um acelerador u(t). A aceleração máxima possı́vel é b e a máxima força de travagem é −a, i.e., −a ≤ u(t) ≤ b. De acordo com a nossa notação, U = [−a, b]. Começando em repouso (ẋ(0) = 0) e terminando em repouso (ẋ(T ) = 0), queremos viajar da origem (x(0) = 0) até α (x(T ) = α) em tempo mı́nimo (T → min). Qual a estratégia óptima? A funcional custo a minimizar é Z T 1dt , 0 sob as restrições ẍ(t) = u(t) (segunda lei de Newton), u(t) ∈ U , x(0) = ẋ(0) = 0, x(T ) = α, ẋ(T ) = 0. Se escrevermos a equação diferencial de segunda ordem ẍ(t) = u(t) num sistema de 88 Controlo Óptimo primeira ordem, da maneira usual, por meio das funções x1 (t) = x(t), x2 (t) = ẋ(t), obtemos o seguinte problema de Controlo Óptimo: Z T 0 1dt −→ min ẋ = x , 1 2 ẋ = u , 2 (T −→ min) , u ∈ [−a, b] , x1 (0) = x2 (0) = 0 , x1 (T ) = α , x2 (T ) = 0 . O Hamiltoniano é então dado por H(x2 , u, ψ0 , ψ1 , ψ2 ) = ψ0 + ψ1 x2 + ψ2 u . A condição de mı́nimo diz-nos que ψ0 + ψ1 (t)x2 (t) + ψ2 (t)u(t) = min {ψ0 + ψ1 (t)x2 (t) + ψ2 (t)v} , v∈[−a,b] ou seja, ψ2 (t)u(t) = min {ψ2 (t)v} . v∈[−a,b] Por outro lado o sistema adjunto toma a forma ψ̇ = 0 ψ̇ = − ∂H 1 1 ∂x1 ⇔ ψ̇ = −ψ ψ̇ = − ∂H 2 1 2 ∂x2 (3.24) ψ = −d 1 ⇔ ψ = dt + c 2 (c e d constantes). Substituindo a expressão de ψ2 (ψ2 = dt + c) na condição de mı́nimo (3.24) temos: (dt + c) u(t) = min {(dt + c) v} . −a≤v≤b Uma vez que a expressão (dt + c) v é linear em v, o mı́nimo é atingido num dos pontos da fronteira do intervalo [−a, b]. Em qual dos pontos, −a ou b, tudo depende do sinal de (dt + c). Por conseguinte concluı́mos, de imediato, que o controlo extremal deve ter a forma −a se dt + c > 0 , u(t) = b se dt + c < 0 , qualquer valor se dt + c = 0 . Do ponto de vista Fı́sico faz todo o sentido começar, em t = 0, com u(t) = b (se queremos chegar a α em tempo mı́nimo começamos por acelerar o máximo possı́vel) e, uma vez que dt + c, sendo linear em t, só pode passar em zero no máximo uma vez, concluı́mos que só pode haver uma mudança de sinal de (dt + c) (tem de haver necessariamente uma mudança 3.5 Princı́pio do Máximo de Pontryagin 89 de sinal uma vez que, para estarmos em repouso no final, temos, num certo instante de tempo 0 < τ < T , começar a travar). Consequentemente, o controlo extremal terá a forma b se 0 ≤ t ≤ τ , u(t) = −a se τ ≤ t ≤ T . Falta determinar o instante τ que, obviamente, irá depender de a, b e α. Para t ∈ [0, τ ] temos u = b e precisamos resolver o sistema ẋ = x , 1 2 ẋ = b , x1 (0) = x2 (0) = 0 . 2 A solução é dada por x (t) = bt , 2 x (t) = b t2 , 1 t ∈ [0, τ ] . 2 Em t = τ (τ a ser determinado) ocorre uma mudança da dinâmica (provocada pela mudança no controlo) e temos de resolver: ẋ = x , 1 2 ẋ = −a , x1 (τ ) = 2 Resulta bτ 2 , 2 x2 (τ ) = bτ . x (t) = bτ − a(t − τ ) , 2 x (t) = bτ t − τ − a (t − τ )2 , 1 2 2 t ∈ [τ, T ] . Temos duas incógnitas, τ e T , que são agora determinadas por intermédio das restantes condições de fronteira: x1 (T ) = α, x2 (T ) = 0. Cálculos directos mostram que s r 2aα 2(a + b)α , T = . τ= b(a + b) ab Em Maple as igualdades (3.25) são facilmente obtidas: > restart; > x1 := t -> b*tau*(t-tau/2)-(a/2)*(t-tau)^2: > x2 := t -> b*tau-a*(t-tau): > T1 := solve(x2(T)=0,T); T1 := > T2 := solve(x1(T)=alpha,T); T2 := > τ (b+a) a √ √ aτ +bτ + aτ 2 b+b2 τ 2 −2 aα aτ +bτ − aτ 2 b+b2 τ 2 −2 aα , a a stau := solve(T1 = T2[1],tau); (3.25) 90 Controlo Óptimo √ stau := > solve(T1 = T2[2],tau); √ > 2 2 √ b(b+a)aα , b(b+a) − √ √ √ b(b+a)aα , b(b+a) tau := stau[1]; τ := > √ 2 − T := √ 2 b(b+a)aα b(b+a) b(b+a)aα b(b+a) √ T := T1; √ 2 √ 2 b(b+a)aα b(b+a) √ b(b+a)aα ab Exemplo 70 (aplicação do Princı́pio do Máximo de Pontryagin). Vamos agora determinar as extremais de Pontryagin para um problema de tempo mı́nimo em que temos duas variáveis de estado e dois controlos: T −→ min , ẋ = −x + u , 1 2 1 ẋ = x + u , 2 1 2 (u1 (t), u2 (t)) ∈ U = (u1 , u2 ) ∈ R2 : u21 + u22 ≤ 1 , x1 (0) = a , x2 (0) = b , x1 (T ) = 0 , (3.26) t ∈ [0, T ] , x2 (T ) = 0 . O Hamiltoniano é dado por H(t, x1 , x2 , u1 , u2 , ψ0 , ψ1 , ψ2 ) = ψ0 + ψ1 (−x2 + u1 ) + ψ2 (x1 + u2 ) . A condição de mı́nimo toma a forma ψ1 u1 + ψ2 u2 = min (v1 ,v2 ) ψ1 v1 + ψ2 v2 : v12 + v22 ≤ 1 . (3.27) A condição (3.27) não é mais do que um problema de Programação Matemática não-linear. Exercı́cio 23. Usando a condição de optimalidade de Karush-Kuhn-Tucker (Teorema 20), mostre que a solução óptima de (3.27) é dada por ψ1 , u1 = − p 2 ψ1 + ψ22 ψ2 u2 = − p 2 . ψ1 + ψ22 (3.28) Determinamos ψ1 (·) e ψ2 (·) usando o sistema adjunto, ψ̇ = − ∂H , ψ̇ = −ψ , 1 1 2 ∂x1 ⇔ ψ̇ = − ∂H , ψ̇ = ψ ; 2 ∂x2 2 1 substituindo as expressões encontradas para ψ1 e ψ2 em (3.28) obtêm-se os controlos extremais; por fim, substituindo os controlos extremais no sistema de controlo (3.26), a 3.5 Princı́pio do Máximo de Pontryagin 91 resolução do sistema de equações diferenciais resultante conduz-nos às trajectórias extremais. Todos os cálculos são facilmente feitos com a ajuda do Sistema de Computação Algébrica Maple. > restart; > psis := dsolve({D(psi1)(t)=-psi2(t),D(psi2)(t)=psi1(t)}); psis := {ψ2(t) = C1 sin(t) + C2 cos(t), ψ1(t) = C1 cos(t) − C2 sin(t)} > assign(psis); > psi1 := unapply(psi1(t),t); ψ1 := t → C1 cos(t) − C2 sin(t) > psi2 := unapply(psi2(t),t); ψ2 := t → C1 sin(t) + C2 cos(t) > u1 := (p1,p2) -> -p1/(sqrt(p1^2 + p2^2)): > > u2 := (p1,p2) -> -p2/(sqrt(p1^2 + p2^2)): # controlos extremais (as constantes C1 e C2 sao determinadas usando > as condiç~ oes de fronteira) > uu1 := unapply(simplify(u1(psi1(t),psi2(t))),t); C1 cos(t) − C2 sin(t) p C2 2 + C1 2 uu2 := unapply(simplify(u2(psi1(t),psi2(t))),t); uu1 := t → − > C1 sin(t) + C2 cos(t) p C2 2 + C1 2 eq1 := D(x1)(t)=-x2(t)+uu1(t); uu2 := t → − > eq1 := D(x1 )(t) = −x2(t) − > eq2 := D(x2)(t)=x1(t)+uu2(t); C1 cos(t) − C2 sin(t) p C2 2 + C1 2 C1 sin(t) + C2 cos(t) p C2 2 + C1 2 # trajectorias extremais (constantes determinadas usando as condiç~ oes eq2 := D(x2 )(t) = x1(t) − > > de fronteira) > dsolve({eq1,eq2}); {x2(t) = (− p t C2 2 2 −p C1 assign(%); > x1 := unapply(x1(t),t); 2 + C3 ) cos(t) + ( C4 − p t C1 C2 + C1 C2 + C1 C2 2 + C1 2 p p x1(t) = −(−cos(t) C4 C2 2 + C1 2 + sin(t) C3 C2 2 + C1 2 − sin(t) C2 t p C2 2 + C1 2 } + cos(t) C1 t − C1 sin(t)) > 2 ) sin(t), 92 Controlo Óptimo > p C2 2 + C1 2 + sin(t) C3 p C2 2 + C1 2 + cos(t) C1 t − C1 sin(t)) x2 := unapply(x2(t),t); x1 := t → −(−cos(t) C4 p C2 2 + C1 2 − sin(t) C2 t x2 := t → C1 t C1 t C2 −p + C3 ) cos(t) + ( C4 − p ) sin(t) (− p 2 2 2 2 C2 + C1 C2 + C1 C2 2 + C1 2 3.6 Problema de Newton da Resistência mı́nima No Exemplo 55 foi formulado o problema de Newton da resistência mı́nima. Trata-se do seguinte problema da teoria do controlo óptimo: Z r L (x, u(x)) dx → min R [u(·)] = 0 ẏ(x) = u(x) , u(x) ≥ 0 , (3.29) y(0) = 0 , y(r) = H , H > 0 , x L (x, u(x)) = . 1 + u2 (x) Observamos que u(·) toma valores num intervalo com fronteira: u(x) ≥ 0 , ∀x ∈ [0, r], pelo que (3.29) é um problema verdadeiramente do controlo óptimo. Ao longo desta secção mostramos que a solução para o problema de Newton da resistência mı́nima é obtida directamente da aplicação do princı́pio do máximo de Pontryagin. Esta coincide com a solução dada por Newton no seu Principia Mathematica. Comecemos por concretizar o Princı́pio do Máximo de Pontryagin (Teorema 65) para o problema de Newton da resistência mı́nima (3.29). Aqui definimos ψ0 ≤ 0 pelo que a condição de mı́nimo é escrita na forma de máximo (condição de máximo). Teorema 71 (Princı́pio do Máximo de Pontryagin para o problema de Newton). Se (y(·), u(·)) é um minimizante de (3.29), então existe um par não nulo (ψ0 , ψ(·)), onde ψ0 ≤ 0 é uma constante e ψ(·) ∈ P C 1 ([0, r]; R), tal que as seguintes condições são satisfeitas para quase todos x em [0, r]: (i) o sistema Hamiltoniano ẏ(x) = ∂H (x, u(x), ψ , ψ(x)) (equação de controlo) 0 ∂ψ ψ̇(x) = − ∂H (x, u(x), ψ , ψ(x)) (sistema adjunto) 0 ∂y (ii) a condição de máximo H(x, u(x), ψ0 , ψ(x)) = maxH(x, u, ψ0 , ψ(x)) , u≥0 (3.30) 3.6 Problema de Newton da Resistência mı́nima 93 onde o Hamiltoniano H é definido por H(x, u(x), ψ0 , ψ(x)) = ψ0 L(x, u(x)) + ψ(x)u(x) = ψ0 x + ψ(x)u(x) . 1 + u2 (x) O sistema adjunto afirma que ψ̇(x) = − ∂H ∂y (x, u(x), ψ0 , ψ(x)) = 0, isto é, ψ(x) = c, com c uma constante real. Da condição de máximo segue-se que ψ0 6= 0 (não existem extremais anormais). Proposição 72. Todas as extremais de Pontryagin (y(·), u(·), ψ0 , ψ(·)) para o problema de Newton da resistência mı́nima (3.29), são extremais normais (ψ0 = −1) com ψ(·) uma con- stante negativa (ψ(x) ≡ −λ , λ > 0, ∀x ∈ [0, r]). Demonstração. O Hamiltoniano H para o problema de Newton H (x, u(x), ψ0 , ψ(x)) = ψ0 x + ψ(x)u(x) , 1 + u2 (x) não depende de y(·), donde pelo sistema adjunto concluı́mos que ψ̇(x) = − ∂H (x, u(x), ψ0 , ψ(x)) = 0 , ∂y ou seja, ψ(x) ≡ c, com c uma constante, x ∈ [0, r]. Se c é igual a zero, então ψ0 < 0 (porque não é permitido que ψ0 e ψ(·) sejam ambas nulas) e a condição do máximo (3.30) simplifica-se para x ψ0 L (x, u(x)) = max ψ0 u≥0 1 + u2 donde concluı́mos que o máximo não é atingido (u → +∞). Logo c 6= 0. Analogamente, para c > 0, o máximo max {ψ0 L(x, u) + cu} = max ψ0 u≥0 u≥0 x + cu 1 + u2 não existe e concluı́mos que c < 0. Podemos fixar ψ(x) ≡ −λ, onde λ ∈ R+ . Resta-nos provar que ψ0 é diferente de zero. De facto, se ψ0 = 0, a condição de máximo toma a forma −λu(x) = max{−λu} , u≥0 λ ∈ R+ , e segue-se u(x) ≡ 0 e y(x) ≡ w, com w uma constante, pois u(x) = ẏ(x). Isto não é possı́vel uma vez que y(0) = 0 e y(r) = H com H > 0. Logo, ψ0 6= 0 e concluı́mos que não existem extremais de Pontryagin anormais para o problema de Newton da resistência mı́nima. Podemos então fixar, sem perda de generalidade, ψ0 = −1. 94 Controlo Óptimo O Hamiltoniano toma a forma H (x, u(x)) = − 1+ux2 (x) − λu(x), com λ > 0. x Para u > 0, segue-se da condição de máximo, H(x, u(x)) = max{− 1+u 2 − λu} que u>0 ∂H ∂u (x, u(x)) = 0, e temos 2xu(x) ∂H xu(x) λ (x, u(x)) = 0 ⇔ −λ=0⇔ = , 2 2 2 2 ∂u 2 (1 + u (x)) (1 + u (x)) (3.31) ou seja, xu(x) = q, (1 + u2 (x))2 com q uma constante estritamente positiva . (3.32) A lei de conservação (3.32) (cf. §3.8) é conhecida como equação diferencial de Newton. O método standard para resolver um problema de controlo óptimo começa por garantir a existência de uma solução para o problema, assegurando-se depois a aplicabilidade do princı́pio do máximo de Pontryagin. Por fim, identificam-se as extremais de Pontryagin (os candidatos). Futuras eliminações, quando necessárias, identificam o minimizante ou minimizantes do problema. Não é fácil provar a existência de solução para o problema de Newton da resistência mı́nima com argumentos clássicos. Vamos usar uma abordagem diferente. Vamos mostrar que para o problema de Newton da resistência mı́nima (3.29) as extremais de Pontryagin são minimizantes absolutos. Isto significa que, para resolver o problema de Newton, é suficiente identificar as extremais de Pontryagin. Deste modo, reduzimos o procedimento de resolução do problema de Newton ao cálculo das extremais de Pontryagin. Lema 73 (As extremais de Pontryagin para o problema de Newton são minimizantes do problema). Se o controlo û(·) é um controlo extremal para o problema de Newton da resistência mı́nima (3.29), então û(·) é um controlo minimizante absoluto (minimizante global). Demonstração. Por definição de extremal de Pontryagin, o controlo û(·) verifica a condição de máximo (3.30) do Teorema 71. Como L(x, u) = de máximo, que x 1+u2 ≥ 0 podemos escrever, da condição −L (x, û(x)) − λû(x) ≥ −L (x, u(x)) − λu(x) , q.t.p. x ∈ [0, r] (3.33) qualquer que seja o u(·) ∈ P C ([0, r], R+ ). Tendo em conta que todos os processos admissı́veis (y(·), u(·)) do problema (3.29) satisfazem Z 0 r u(x)dx = Z 0 r ẏ(x)dx = y(r) − y(0) = H , 3.6 Problema de Newton da Resistência mı́nima 95 basta integrar (3.33) para obter a conclusão desejada, isto é, Z r Z r (−L (x, û(x)) − λû(x)) dx ≥ (−L (x, u(x)) − λu(x)) dx 0 0 Z r Z r ⇔− (L (x, û(x)) + λû(x)) dx ≥ − (L (x, u(x)) + λu(x)) dx Z r0 Z r Z0 r Z r ⇔ L (x, û(x)) dx + λ û(x)dx ≤ L (x, u(x)) dx + λ u(x)dx 0 0 0 Z0 r Z r ⇔ L (x, û(x)) dx + λH ≤ L (x, u(x)) dx + λH 0 0 Z r Z r ⇔ L (x, û(x)) dx ≤ L (x, u(x)) dx . 0 0 Da conclusão obtida, R [û(·)] = Z 0 r L (x, û(x)) dx ≤ Z r L (x, u(x)) dx = R [u(·)] , 0 podemos concluir que û(·) é um controlo minimizante absoluto para o problema de Newton da resistência mı́nima. Observação 74. A solução óptima pretendida para o problema de Newton (3.29) é exactamente a extremal de Pontryagin. Isto significa, essencialmente, que reduzimos um problema de Optimização Dinâmica (um problema de minimização num espaço de funções, de dimensão infinita) a um problema de optimização estática (de dimensão finita) dado pela condição de máximo. Estamos em condições de determinar a solução ŷ(·) para o problema de Newton da resistência mı́nima (3.29) e obter as expressões indicadas por Newton no seu Principia Mathematica. Teorema 75 (Solução do problema de Newton da resistência mı́nima). A solução ŷ(·) para o problema de Newton da resistência mı́nima (3.29) é dada por ŷ(x) = 0 para 0 ≤ x ≤ ξ e, quando ξ ≤ x ≤ r, é dada na forma paramétrica por x(u) = λ2 u1 + 2u + u3 , y(u) = λ 2 − ln u + u2 + 3 4 4u (3.34) − 7λ 8 , onde a constante λ é determinada a partir da condição de fronteira y(r) = H e ξ = 2λ. Demonstração. Seja ŷ(·) a solução do problema de Newton da resistência mı́nima (3.29). A solução, ŷ(·), é dada por duas condições distintas: primeiramente é um segmento de recta com inı́cio na origem do referencial e fim no ponto ξ do semi-eixo positivo dos xx; após o ponto ξ, a solução de Newton segue a chamada curva de Newton. 96 Controlo Óptimo Vejamos, em pormenor, cada uma das partes da solução para o problema de Newton. Como já observámos, para o problema de Newton (3.29) os controlos variam num intervalo que não é aberto, donde se torna necessário analisar separadamente os casos em que u = 0 e u > 0. Quando u = 0 a solução é dada por y(x) = 0: se u(x) = 0, então, como u(x) = ẏ(x), temos que ẏ(x) = 0, donde y(x) = c, com c uma constante real; da condição de fronteira y(0) = 0 concluı́mos que c = 0. O minimizante absoluto (cf. Lema 73) começa com o segmento de recta y(x) = 0, com x ∈ [0, ξ] e 0 < ξ < r (a partir de um certo ponto ξ, u > 0 pois y(r) = H > 0). Por outro lado, quando u > 0, podemos definir parametricamente a solução do problema de Newton a partir da equação diferencial de Newton (3.31) (a qual deriva da condição de máximo do princı́pio do máximo de Pontryagin). A partir da equação (3.31) podemos escrever x em função do parâmetro u, isto é, λ 1 λ xu 2 2 3 + 2u + u . ⇔x= = ⇔ 2ux = λ 1 + u 2 2 u (1 + u2 )2 Desta forma, definimos x(·) parametricamente por λ 1 3 . x(u) = + 2u + u 2 u Para acharmos a forma paramétrica de y(·), recordemos a regra da cadeia uma vez que dy dx dy dx dx d y(x(u)) = =u , du dx du du R dx = u. Vem então que y(u) = u du du. Como 1 λ dx 2 − 2 + 2 + 3u , (u) = du 2 u logo, y(u) = Z 3 4 λ 1 λ 2 2 − ln u + u + u + m , u − 2 + 2 + 3u du = 2 u 2 4 (3.35) onde m é uma constante. Para podermos determinar a constante m da equação anterior, é necessário determinar o ponto ξ. Neste ponto, os dois ramos de ŷ(·) coincidem (pela continuidade de ŷ(·)). Seja û(x) o controlo minimizante do problema de Newton. Então, H(ξ, 0) = H (ξ, û(ξ)) . (3.36) Pela definição de Hamiltoniano para o problema de Newton da resistência mı́nima, temos H(ξ, 0) = − ξ ξ − λû(ξ) . − λ × 0 = −ξ e H(ξ, û(ξ)) = − 2 1+0 1 + (û(ξ))2 3.6 Problema de Newton da Resistência mı́nima 97 Logo, a partir de (3.36), temos H(ξ, 0) = H (ξ, û(ξ)) ⇔ ξ = ξ + λû(ξ) . 1 + (û(ξ))2 (3.37) Por outro lado, û(ξ) tem que satisfazer a equação diferencial de Newton (3.31), donde ξ û(ξ) 1 + (û(ξ)) 2 2 = λ . 2 (3.38) Resolvendo a equação (3.37) em ordem à constante λ, ξ= −ξ + ξ 1 + (û(ξ)) ξ ξ 2 + λû(ξ) ⇔ − 2 + ξ = λû(ξ) ⇔ 1 + (û(ξ)) 1 + (û(ξ)) 1 + (û(ξ))2 ⇔ ξ (û(ξ))2 ξ û(ξ) = λ, 2 = λû(ξ) ⇔ 1 + (û(ξ)) 1 + (û(ξ))2 2 = λû(ξ) concluı́mos que a constante λ é dada pela condição λ= ξ û(ξ) . 1 + (û(ξ))2 (3.39) Substituindo (3.39) em (3.38) obtemos ξ û(ξ) 1 + (û(ξ)) 2 2 = ξ û(ξ) 2 1 + (û(ξ)) 2 ⇔ û2 (ξ) = 1 . Como û(x) ≥ 0, então û2 (ξ) = 1 ⇒ û(ξ) = 1. Tal como Newton afirmou no seu Principia, “a tangente ao gráfico no ponto ξ é igual a 1”: û(ξ) = 1 ⇔ ẏ(ξ) = 1. Substituindo û(ξ) = 1 na equação (3.38) temos ξ (1+12 )2 = λ2 , ou seja, ξ = 2λ. Estamos em condições de determinar a constante m da equação (3.35). Tal é possı́vel se tivermos em conta que no ponto ξ, û(ξ) = 1 e y (û(ξ)) = 0. Então, y (û(ξ)) = 0 ⇔ y(1) = 0 ⇔ λ 2 3 7λ = −m , − ln 1 + 1 + +m=0⇔ 4 8 ou seja, m = − 7λ 8 . Assim, podemos concluir que para o caso em que u > 0, a solução para o problema de Newton da resistência mı́nima é dada na forma paramétrica pelas equações (3.34), tal como pretendı́amos mostrar. À curva obtida a partir do Teorema 75 dá-se o nome de curva de Newton. 98 Controlo Óptimo É importante salientar a razão pela qual a solução para o problema de Newton é inicial- mente dada por y(x) = 0 para x ∈ [0, ξ], 0 < ξ = 2λ < r, e para x ∈ [ξ, r] por (3.34). De facto, se a solução de Newton fosse dada pelas equações (3.34) para todo o x ∈ [0, r] a condição de fronteira y(0) = 0 não seria verificada. Vejamos agora como obter, para um raio e uma altura previamente fixos, a representação gráfica da solução do problema de Newton da resistência mı́nima. A primeira parte da solução é dada por y(x) = 0 para todo o x ∈ [0, ξ], em que ξ = 2λ, e a sua representação gráfica é trivialmente obtida. Em relação à segunda parte, x ∈ [ξ, r], para representar a solução de Newton dada no Teorema 75 é necessário encontrar o valor da constante λ, o respectivo ponto ξ, e o inter- valo de variação do parâmetro u para o raio e altura previamente dados. Na prática, ao determinarmos o valor da constante λ o ponto ξ fica automaticamente determinado, pois ξ = 2λ. O intervalo de variação do parâmetro u é determinado resolvendo as inequações: λ 1 3 ξ ≤ x(u) ≤ r ⇔ ξ ≤ + 2u + u ≤ r , 2 u isto é, como ξ = 2λ, Da inequação 2λ ≤ λ 2 1 u λ 1 3 + 2u + u ≤ r . 2λ ≤ 2 u + 2u + u3 , obtemos que o valor mı́nimo tomado pelo parâmetro u é 1, independentemente do valor do raio e da altura do sólido, o que, mais uma vez, vai de encontro ao afirmado por Newton no seu Principia. O valor máximo tomado pelo parâmetro u pode ser encontrado em simultâneo com a determinação da constante λ resolvendo o sistema x(u) = r r = λ2 u1 + 2u + u3 ⇔ y(u) = H H = λ − ln u + u2 + 3 u4 − 7λ 2 4 8 uma vez que a constante λ é determinada recorrendo à condição de fronteira y(r) = H. O sistema anterior é facilmente resolvido no Maple. > restart; > with(plots): > solN := proc(r,H) > local ax, eq1, eq2, lambdaeuM, x, y, p1, p2, lambda,uM: > eq1 := (r,u) -> r = (lambda/2)*((1/u)+2*u+u^3); > eq2 := (H,u) -> H = (lambda/2)*(-ln(u)+u^2+(3/4)*u^4) - (7/8)*lambda; > lambdaeuM := (r,H) -> fsolve({eq1(r,uM),eq2(H,uM)},{lambda,uM}): 3.6 Problema de Newton da Resistência mı́nima 99 > ax := lambdaeuM(r,H); > assign(ax); > x := (u,lambda) -> (lambda/2)*((1/u)+2*u+u^3); > y := (u,lambda) -> (lambda/2)*(-ln(u)+u^2+(3/4)*u^4)-(7*lambda)/(8); > p1 := plot([u,0,u=0..2*lambda]): > p2 := plot([x(u,lambda),y(u,lambda),u=1..uM]): > return(display({p1,p2})); > end proc: > h05 := solN(1,0.5): > h1 := solN(1,1): > h2 := solN(1,2): > h5 := solN(1,5): > display({h05,h1,h2,h5}); 5 4 3 2 1 0 0.2 0.4 0.6 0.8 1 Na figura acima podemos observar os gráficos da solução para o problema de Newton, obtidos com o Maple (ver comando display acima), considerando o raio fixo r = 1 e a altura H = 0.5, H = 1, H = 2 e H = 5. Observação 76. Obter a solução y(x) do problema de Newton na forma não paramétrica é uma tarefa difı́cil. A fórmula explı́cita para a função inversa x(y) da solução do problema de Newton foi obtida em [4]. A solução do problema de Newton da resistência mı́nima encontra aplicações na construção de balas para determinados tipos de armas de fogo e nas Ciências do Espaço: construção de mı́sseis de alta altitude, satélites artificiais, etc. 100 3.7 Controlo Óptimo Outros formatos para o problema de Controlo Óptimo Nesta secção coligimos várias formulações equivalentes do problema matemático do controlo óptimo. 3.7.1 O problema de Bolza do controlo óptimo O problema de Bolza do controlo óptimo consiste na minimização (ou maximização) de funcionais da forma I [x(·), u(·)] = L (α, x(α), β, x(β)) + Z β L (t, x(t), u(t)) dt , (3.40) α onde se requer que o par (x(·), u(·)) satisfaça o sistema de equações diferenciais ordinárias ẋ(t) = dx(t) = ϕ (t, x(t), u(t)) , dt (3.41) o chamado sistema de controlo, e as condições de fronteira (α, x(α), β, x(β)) ∈ F . (3.42) A variável real t, t ∈ R, é a variável independente, chamada tempo; x(t) = (x1 (t), . . . , xn (t)) ∈ Rn , n ≥ 1, t ∈ [α, β], a trajectória de estado; u(t) = (u1 (t), . . . , ur (t)) ∈ U ⊆ Rr , r ≥ 1, t ∈ [α, β], o controlo. Os dados do problema incluem a função L : R × Rn × R × Rn → R; o Lagrangeano L : R × Rn × Rr → R; a dinâmica ϕ : R × Rn × Rr → Rn ; os conjuntos F , U ; e as classes de funções a que pertencem x(·) e u(·). Os instantes de tempo α e β, α < β, podem, ou não, estar fixos. Este é o chamado problema de Bolza do Controlo Óptimo. Dizemos que o par (x(·), u(·)) é admissı́vel para o problema (3.40)–(3.42) se o par (x(·), u(·)) é solução do sistema (3.41) em q.t.p. t ∈ [α, β] e x(·) satisfaz as condições de fronteira (3.42). Seja A o conjunto de todos os pares admissı́veis. O problema de Controlo Óptimo consiste então em determinar, se possı́vel, um par (x̃(·), ũ(·)) ∈ A que satisfaça a desigualdade I [x̃(·), ũ(·)] ≤ I [x(·), u(·)] para todo o (x(·), u(·)) ∈ A . O problema é formulado como um de minimização; o problema de maximizar I [x(·), u(·)] é equivalente ao problema de minimizar −I [x(·), u(·)]. Uma solução (x̃(·), ũ(·)) do problema de controlo óptimo é designada por minimizante. A trajectória x̃(·) é chamada de trajectória minimizante e ũ(·) de controlo minimizante. Certos casos especiais do problema de Bolza do Controlo Óptimo são na verdade equivalentes ao problema de Bolza, no sentido que o problema de Bolza pode ser transformado num desses casos especiais. Dois casos especiais do problema de Bolza são obtidos fazendo: • L ≡ 0 — problema de Mayer do controlo óptimo; 3.7 Outros formatos para o problema de Controlo Óptimo 101 • L ≡ 0 — problema de Lagrange do controlo óptimo (o problema que temos vindo a considerar até aqui). Vamos mostrar que as formulações de Mayer e de Lagrange são tão gerais como a de Bolza, mostrando como o problema de Bolza pode ser escrito nestas formas. Formulamos o problema de Bolza como um de Mayer usando um espaço de estados de dimensão superior. Seja (x(·), u(·)) um par admissı́vel para o problema de Bolza (3.40)–(3.42) e introduzamos a notação z(t) = (x0 (t), x(t)) = (x0 (t), x1 (t), . . . , xn (t)) ∈ Rn+1 , t ∈ [α, β], onde x0 (·) é uma função tal que x˙0 (t) = L (t, x(t), u(t)) , x0 (α) = 0 , para quase todos os t em [α, β]: x0 (t) = Z t L (τ, x(τ ), u(τ )) dτ . α Temos então que (z(·), u(·)) é um par admissı́vel para o seguinte problema de Mayer: L (α, x(α), β, x(β)) + x0 (β) −→ min , x˙ (t) = L (t, x(t), u(t)) , 0 ẋ(t) = ϕ (t, x(t), u(t)) , (3.43) (x0 (α), x0 (β), α, x(α), β, x(β)) ∈ {0} × R × F . Inversamente, a todo o par admissı́vel (z(·), u(·)) para o problema de Mayer (3.43) corresponde um par admissı́vel (x(·), u(·)) para o problema de Bolza (3.40)–(3.42), onde x(·) consiste nas últimas n componentes de z(·). Em qualquer uma das situações, os valores das funcionais dos dois problemas coincidem. Mostramos agora como o problema de Bolza pode ser formulado como um de Lagrange. Seja (x(·), u(·)) um par admissı́vel para o problema (3.40)–(3.42) e seja z(t) = (x0 (t), x(t)) com x0 (t) ≡ L (α, x(α), β, x(β)) . β−α Então (z(·), u(·)) é um par admissı́vel para o problema de Lagrange Z β α (L (t, x(t), u(t)) + x0 (t)) dt −→ min , x˙ (t) = 0 , 0 ẋ(t) = ϕ (t, x(t), u(t)) , (x0 (α), x0 (β), α, x(α), β, x(β)) ∈ X0 × X0 × F , (3.44) 102 Controlo Óptimo L (α, xα , β, xβ ) onde X0 = : (α, xα , β, xβ ) ∈ F . Resulta claro que o valor das funcionais β−α para os problemas (3.40)–(3.42) e (3.44) coincidem. O inverso é também verdade: a cada par (z(·), u(·)) admissı́vel para o problema (3.44) corresponde o par (x(·), u(·)), onde x(·) é formado pelas últimas n componentes de z(·), admissı́vel para o problema (3.40)–(3.42) e com os respectivos valores das funcionais a coincidirem. Desde modo, o problema de Lagrange (3.44) é equivalente ao problema de Bolza (3.40)–(3.42) considerado no inı́cio da secção. Como dissemos, no problema (3.40)–(3.42) o instante inicial α e o instante terminal β podem não estar fixos. Vamos agora mostrar que o problema (3.40)–(3.42) pode ser escrito como um problema de tempo inicial e terminal fixos. O ardil para a redução do problema com tempo inicial e terminal variáveis num com tempo inicial e terminal fixos é a mudança de tempo t=α+ (τ − a) (β − α) , b−a a ≤ τ ≤ b, (3.45) a < b fixos, e a introdução de duas novas variáveis de estado escalares: t(τ ) e x0 (τ ), τ ∈ [a, b]. Introduzindo a notação z(τ ) = x (t(τ )) e v(τ ) = u (t(τ )), formulamos o problema Z b L (t(τ ), z(τ ), v(τ )) x0 (τ )dτ −→ min , L (t(a), z(a), t(b), z(b)) + a dt(τ ) t′ (τ ) = = x0 (τ ) , dτ dx0 (τ ) = 0, x′0 (τ ) = dτ z ′ (τ ) = dz(τ ) = ϕ (t(τ ), z(τ ), v(τ )) x (τ ) , 0 dτ (t(a), z(a), t(b), z(b)) ∈ F , x0 (a) = x0 (b) = (3.46) t(b) − t(a) b−a (usamos o ponto para denotar diferenciação em relação a t; a linha ′ para denotar a derivada em relação a τ ). Notar que no problema (3.46) o tempo inicial a e o tempo terminal b estão fixos; as trajectórias de estado são (t(τ ), x0 (τ ), z(τ )), τ ∈ [a, b], e tomam valores em R2+n ; o controlo é v(τ ), τ ∈ [a, b], e toma valores em U ⊆ Rr . Uma vez que o α e o β do problema (3.40)–(3.42) satisfazem a igualdade β − α > 0, segue-se que a trajectória de estado x0 (τ ) do problema (3.46) é uma constante positiva, de valor β−α b−a , para a ≤ τ ≤ b. Se (x(·), u(·)) é um par admissı́vel para o problema (3.40)–(3.42), verifica-se imediatamente que (t(·), x0 (·), z(·), v(·)) é admissı́vel para o problema (3.46) com t(τ ) = α + x0 (τ ) = t(b)−t(a) b−a = β−α b−a , (τ −a)(β−α) , b−a z(τ ) = x(t(τ )) e v(τ ) = u(t(τ )), τ ∈ [a, b], e com os respectivos valores das funcionais a coincidirem. Reciprocamente, se (t(·), x0 (·), z(·), v(·)) é admissı́vel para o problema (3.46) de tempos de fronteira fixos, então (x(·), u(·)) é um par admissı́vel para o problema (3.40)–(3.42) se fizermos x(t) = z (τ (t)) e u(t) = v (τ (t)), α ≤ t ≤ β e τ (t) = a + (t−α)(b−a) , β−α resultando valores para as respectivas funcionais iguais. 3.7 Outros formatos para o problema de Controlo Óptimo 103 Um caso especial das condições de fronteira (3.42) ocorre se as condições iniciais e finais forem separadas. Neste caso um conjunto Fα de pontos (α, x(α)) e um conjunto Fβ de pontos (β, x(β)), ambos em R1+n , são dados: (α, x(α)) ∈ Fα , (β, x(β)) ∈ Fβ . (3.47) Vamos mostrar que x(·) satisfaz as condições de fronteira (3.47). Mais uma vez, a técnica consiste no uso de um espaço de estados de dimensão superior. Com os mesmos dados do problema (3.40)–(3.42), consideremos o problema Z β L (t, x(t), u(t)) dt −→ min , L (α, x(α), β, x(β)) + α ẋ(t) = ϕ (t, x(t), u(t)) , ẏ(t) = 0 , y = (y , y , . . . , y ) ∈ R1+n , 0 1 (3.48) n (α, x(α), y(α)) ∈ Fα := F , n o (β, x(β), y(β)) ∈ Fβ := (t, x, y) ∈ R2×(n+1) : y0 = t , yi = xi (i = 1, . . . , n) . Da maneira como o problema (3.48) é construı́do, resulta que (x(·), u(·)) é admissı́vel para o problema (3.40)–(3.42) se, e somente se, (x(·), y(·), u(·)) com y(t) ≡ (β, x(β)) for admissı́vel para o problema (3.48). Tendo em conta que as funcionais dos dois problemas são iguais, podemos afirmar que os problemas (3.40)–(3.42) e (3.48) são equivalentes. Os problemas do controlo óptimo dizem-se autónomos quando as funções L e ϕ são invariantes no tempo. É sempre possı́vel reduzir um problema de controlo óptimo a um autónomo, introduzindo uma variável de estado xn+1 , a equação diferencial adicional ẋn+1 (t) = 1 e a condição de fronteira xn+1 (β) = β, de modo a que se tenha xn+1 (t) = t. Os problemas podem mesmo ser reduzidos, como vimos, ao caso autónomo num intervalo fixo, digamos [0, 1] (cf. problema (3.46)). 3.7.2 Problemas isoperimétricos do Controlo Óptimo e optimização paramétrica Em alguns problemas do Controlo Óptimo, para além das restrições já consideradas, surgem restrições da forma Z β Z β α hi (t, x(t), u(t)) dt ≤ ci , hj (t, x(t), u(t)) dt = cj , i = 1, . . . , p , (3.49) j = p + 1, . . . , q , α onde a função h = (h1 , . . . , hq ) : R × Rn × Rr → Rq e as constantes ci , i = 1, . . . , q, são dadas. As restrições da forma (3.49) são chamadas, tal como no cálculo das variações (cf. §2.5), de restrições isoperimétricas. Um problema de controlo óptimo com restrições 104 Controlo Óptimo isoperimétricas (3.49) pode ser reduzido a um problema sem restrições isoperimétricas, introduzindo q variáveis de estado adicionais: y(t) = (y1 (t), . . . , yq (t)) ∈ Rq , t ∈ [α, β]. Seja (x(·), u(·)) um par admissı́vel para o problema (3.40)–(3.42) satisfazendo as restrições (3.49). Então, (x(·), y(·), u(·)), com y(t) = Z t h (τ, x(τ ), u(τ )) dτ , α t ∈ [α, β] , é admissı́vel para o problema Z β L (t, x(t), u(t)) dt −→ min , L (α, x(α), β, x(β)) + α ẋ(t) = ϕ (t, x(t), u(t)) , ẏ(t) = h (t, x(t), u(t)) , (3.50) (α, x(α), β, x(β)) ∈ F , y(α) = 0 , yi (β) ≤ ci , yj (β) = cj , i = 1, . . . , p, j = p+1, . . . , q. Reciprocamente, se (x(·), y(·), u(·)) é admissı́vel para (3.50) então (x(·), u(·)) é admissı́vel para o problema (3.40)–(3.42) e satisfaz as restrições isoperimétricas (3.49). Deste modo escrevemos um problema com restrições (3.49) num problema equivalente da forma (3.40)–(3.42), sem restrições isoperimétricas. No problema (3.40)–(3.42) o Lagrangeano L e a dinâmica ϕ são funções dadas, fixas. Em algumas aplicações, estas funções dependem de um vector de parâmetros π = (π1 , . . . , πk ) ∈ Π, à nossa disposição, onde Π ⊆ Rk é um conjunto dado. Temos então o chamado problema de controlo óptimo paramétrico: I [x(·), π, u(·)] = L (α, x(α), β, x(β)) + Z β α L (t, x(t), π, u(t)) dt −→ min , ẋ(t) = ϕ (t, x(t), π, u(t)) , (3.51) (α, x(α), β, x(β)) ∈ F . Para uma dada escolha do controlo u(·), a trajectória de estado correspondente x(·), assim como o valor da funcional, dependem agora da escolha dos valores dos parâmetros π. O problema de controlo óptimo paramétrico consiste então na escolha de π̃ em Π, para o qual existe um par admissı́vel (x̃(·), ũ(·)) tal que I [x̃(·), π̃, ũ(·)] ≤ I [x(·), π, u(·)] para todo o π ∈ Π e correspondentes pares admissı́veis (x(·), u(·)). O problema (3.51) pode ser reformulado num problema equivalente da forma (3.40)–(3.42), introduzindo k novas trajectórias de estado, y(t) = (y1 (t), . . . , yk (t)), t ∈ [α, β]. Usando a notação z(·) = (x(·), y(·)) o problema (3.51) é 3.7 Outros formatos para o problema de Controlo Óptimo 105 reescrito como se segue: Z β L (t, z(t), u(t)) dt −→ min , I [z(·), u(·)] = L (α, x(α), β, x(β)) + α ẋ(t) = ϕ (t, z(t), u(t)) , ż(t) = ẏ(t) = 0 , (3.52) (α, x(α), y(α), β, x(β), y(β)) ∈ {(tα , xα , yα , tβ , xβ , yβ ) : (tα , xα , tβ , xβ ) ∈ F ∧ yα ∈ Π} . Sem perda de generalidade, podemos considerar o problema de controlo óptimo na forma de Lagrange com instantes inicial a e terminal b, a, b ∈ R, a < b, fixos. Dados a e b, um conjunto arbitrário U ⊆ Rr , L(·, ·, ·) : [a, b] × Rn × Ω → R e ϕ(·, ·, ·) : [a, b] × Rn × Ω → Rn , o problema consiste então em minimizar uma funcional custo, da forma integral, entre todas as soluções de uma dada equação diferencial vectorial: Z b I [x(·), u(·)] = L (t, x(t), u(t)) dt −→ min , a ẋ(t) = ϕ (t, x(t), u(t)) , 3.7.3 u(t) ∈ U . (3.53) O problema de tempo mı́nimo O problema de tempo mı́nimo é um caso particular do problema de controlo óptimo muito importante. Pode ser formulado como se segue: T −→ min , ẋ (t) = F (x (t) , u (t)) , Supomos F (·, ·), ∂Fi ∂xj t ∈ [a, T ] . (3.54) (·, ·), i, j = 1, . . . , n, funções contı́nuas em Rn+r . O controlo u (·), definido em [a, T ], toma os seus valores em U ⊂ Rr . Admitindo que o Lagrangeano L do problema de controlo óptimo (3.53) é limitado inferiormente, e uma vez que adicionar uma constante a L no problema (3.53) não altera os minimizantes, podemos assumir, sem perda de generalidade, que L é estritamente positivo. De facto, se L (t, x, u) > ζ, minimizar Z b L (t, x (t) , u (t)) dt , a sob as condições em (3.53), é equivalente a Z b (L (t, x (t) , u (t)) − ζ) dt → min , a uma vez que a diferença das funções integrandas é uma constante. Basta então considerar a situação especial em que L (t, x, u) > 0. Qualquer problema (3.53) com L > 0 pode ser 106 Controlo Óptimo reduzido, usando uma ideia introduzida por R. V. Gamkrelidze nos anos 50 do século XX, a um problema de tempo mı́nimo autónomo. O artifı́cio consiste em introduzir uma nova variável tempo τ , relacionada com t pela relação Z t L (θ, x(θ), u(θ)) dθ , τ (t) = a t ∈ [a, b] . Como dτ (t) = L (t, x(t), u(t)) > 0 , (3.55) dt temos que τ (·) é uma função em t contı́nua e estritamente monótona, para qualquer par (x(t), u(t)) satisfazendo ẋ (t) = ϕ (t, x (t) , u (t)). Obviamente, τ (b) = T coincide com o valor da funcional do problema original (3.53). De (3.55) segue-se que τ (·) admite função inversa t(·), definida em [0, T ], tal que dt(τ ) 1 = . dτ L (t(τ ), x (t(τ )) , u(t(τ ))) Notar que a função inversa t (·) é, também, contı́nua e monótona. Tem-se: dx (t(τ )) dt(τ ) ϕ (t(τ ), x (t(τ )) , u (t(τ ))) dx (t(τ )) = = . dτ dt dτ L (t(τ ), x (t(τ )) , u(t(τ ))) (3.56) Considerando τ como a variável independente, t(τ ) e z(τ ) = x (t(τ )) como componentes das trajectórias de estado e v(τ ) = u (t(τ )) como o controlo, podemos transformar o problema (3.53) no seguinte problema de tempo mı́nimo: ′ t (τ ) z ′ (τ ) T −→ min 1 = L (t(τ ), z(τ ), v(τ )) ϕ (t(τ ), z(τ ), v(τ )) = L (t(τ ), z(τ ), v(τ )) v:R→U, t(0) = a , 3.8 (3.57) t(T ) = b . Leis de Conservação Uma quantidade preservada ao longo de todas as extremais do problema é designada por primeiro integral . Um primeiro integral define uma lei de conservação. As leis de conservação são muito importantes no Cálculo das Variações, Controlo Óptimo e suas aplicações, existindo toda uma teoria em seu redor. Definição 77. Dizemos que uma função C(t, x, u, ψ0 , ψ) é um primeiro integral do problema de Controlo Óptimo (3.13) se C(t, x(t), u(t), ψ0 , ψ(t)) for constante em t ∈ [a, T ] ao longo 3.8 Leis de Conservação 107 de todas as extremais de Pontryagin (x(·), u(·), ψ0 , ψ(·)) do problema (normais e anormais). À equação C(t, x(t), u(t), ψ0 , ψ(t)) = c, c constante, chamamos lei de conservação. Se nos restringirmos às extremais normais, falamos então em primeiros integrais normais e leis de conservação normais. Exemplo 78. Para problemas autónomos, i.e., quando o Lagrangeano L e o vector velocidade ϕ não dependem explicitamente da variável independente t, então o Hamiltoniano H é um primeiro integral (cf. Proposição 57). A lei de conservação H = constante corresponde, para o problema fundamental do Cálculo das Variações, à igualdade (2.14). Teorema 79. Consideremos o caso normal (ψ0 = 1). Seja S = S (t, x, α1 , . . . , αk ) uma solução da equação de Hamilton-Jacobi-Bellman (3.22), ∂S ∂S + min H t, x̃(t), v, = 0, v∈U ∂t ∂x dependendo de k parâmetros reais α1 , . . . , αk . Então cada derivada (3.58) ∂S ∂αi , i = 1, . . . , k, constitui um primeiro integral normal: são válidas as k leis de conservação normais ∂S = constante , i = 1, . . . , k . ∂αi d ∂S Demonstração. Queremos provar que dt ∂αi = 0, i = 1, . . . , k, ao longo de cada extremal normal (x̃(·), ũ(·), 1, ψ(·)). Temos: ∂2S ∂2S ∂2S ∂2S ∂H d ∂S ˙ = + · x̃(t) = + · . dt ∂αi ∂t∂αi ∂x∂αi ∂t∂αi ∂x∂αi ∂ψ (3.59) Pela condição de mı́nimo, (3.58) é equivalente a ∂S ∂S + H t, x̃(t), ũ(t), =0 ∂t ∂x e, diferenciando em ordem a αi , obtemos ∂H ∂2S ∂2S + · = 0. ∂t∂αi ∂ψ ∂x∂αi ∂S d De (3.59) e (3.60) resulta a conclusão desejada: dt ∂αi = 0. 3.8.1 (3.60) Método de Poisson O método de Poisson permite determinar novas leis de conservação a partir de duas leis de conservação conhecidas. Definição 80. Sejam A(t, x, ψ) e B(t, x, ψ) duas funções de [a, T ] × Rn × Rn em R. O parêntesis de Poisson de A e B, denotado por {A, B}, é definido por: {A, B} = ∂A ∂B ∂B ∂A · − · . ∂x ∂ψ ∂x ∂ψ 108 Controlo Óptimo Resultada de imediato da Definição 80 que {A, B} + {B, A} = 0 . (3.61) A igualdade (3.61) pode ser generalizada para três funções. Proposição 81 (identidade de Jacobi ). Dadas três funções reais A(·, ·, ·), B(·, ·, ·) e C(·, ·, ·), duas vezes diferenciáveis com continuidade em (t, x, ψ) ∈ [a, T ] × Rn × Rn , verifica-se a seguinte igualdade (identidade de Jacobi): {{A, B}, C} + {{C, A}, B} + {{B, C}, A} = 0 . (3.62) Exercı́cio 24. Demonstre a identidade de Jacobi (3.62). Se conhecermos duas leis de conservação para um problema de Controlo Óptimo, então o parêntesis de Poisson dos dois primeiros integrais conhecidos resulta: (i) ou num terceiro (novo) primeiro integral; (ii) ou num primeiro integral equivalente a um dos primeiros integrais conhecidos; (iii) ou numa constante numérica (lei de conservação trivial). Proposição 82. Seja C(t, x, ψ) uma função continuamente diferenciável em [a, T ]×Rn ×Rn . Ao longo das extremais, a derivada total de C(t, x(t), ψ(t)) pode ser escrita na seguinte forma: ∂C dC = + {C, H} . dt ∂t (3.63) Demonstração. A derivada total de C é dada por ∂C ∂C ∂C dC = + · ẋ(t) + · ψ̇(t) . dt ∂t ∂x ∂ψ Ao longo das extremais é válido o sistema Hamiltoniano (3.23) e concluı́mos com a igualdade pretendida: dC ∂C ∂C ∂H ∂C ∂H = + · − · dt ∂t ∂x ∂ψ ∂ψ ∂x ∂C = + {C, H} . ∂t Corolário 83. A função C(t, x, ψ) é um primeiro integral se, e somente se, ∂C ∂C ∂H ∂C ∂H + · − · =0 ∂t ∂x ∂ψ ∂ψ ∂x é satisfeita ao longo das extremais de Pontryagin do problema de controlo óptimo. (3.64) 3.8 Leis de Conservação 109 Observação 84. Para C = H obtemos de (3.63) a igualdade dH dt = ∂H ∂t (cf. Proposição 57). Teorema 85 (Poisson). Se A e B forem dois primeiros integrais, então o parêntesis de Poisson {A, B} define igualmente uma lei de conservação: {A, B} = constante. Demonstração. Se C(t, x, ψ) é um primeiro integral isso significa (cf. Definição 77) que ao longo das extremais. Pela Proposição 82 temos então que ∂C ∂t hipótese A e B são primeiros integrais podemos escrever que {H, A} = ∂A , {A, H} = − ∂A , ∂t ∂t ⇔ {H, B} = ∂B . {B, H} = − ∂B , ∂t dC dt =0 + {C, H} = 0. Como por (3.65) ∂t Por outro lado, substituindo A e B na identidade de Jacobi (3.62), com C = H, obtemos {{A, B}, H} + {{H, A}, B} + {{B, H}, A} = 0 . Usando (3.65), a expressão (3.66) toma a forma ∂A ∂B {{A, B}, H} + ,B − ,A = 0 ∂t ∂t ∂ 2 B ∂A ∂A ∂ 2 B ∂ 2 A ∂B ∂B ∂ 2 A − − + = 0. ⇔ {{A, B}, H} + ∂t∂x ∂ψ ∂x ∂t∂ψ ∂t∂x ∂ψ ∂x ∂t∂ψ (3.66) (3.67) = 0: O Teorema está demonstrado ao notarmos que (3.67) é equivalente a d{A,B} dt ∂ ∂A ∂B ∂B ∂A d{A, B} (3.63) ∂ = {A, B} + {{A, B}, H} = · − · + {{A, B}, H} dt ∂t ∂t ∂x ∂ψ ∂x ∂ψ ∂ 2 B ∂A ∂B ∂ 2 A ∂ 2 A ∂B ∂A ∂ 2 B · + · − · − · + {{A, B}, H} . = ∂t∂x ∂ψ ∂x ∂t∂ψ ∂t∂x ∂ψ ∂x ∂t∂ψ 3.8.2 Método de Noether Várias leis de conservação, primeiros integrais das equações diferenciais de Euler-Lagrange, são bem conhecidas da fı́sica onde desempenham um papel primordial. São exemplos tı́picos de leis de conservação a lei das áreas de Kepler, a lei de inércia formulada por Galileu, a conservação da massa ou a conservação de carga eléctrica. A lei de conservação mais famosa é o integral de energia, descoberto por Leonhard Euler em 1744 e intuı́da mesmo antes de Galileu (a conservação de energia, ou seja, a impossibilidade de criar energia, aparece expressa, por exemplo, no postulado da impossibilidade do perpetuum mobile de Leonardo da Vinci): quando o Lagrangeano L corresponde a um sistema conservativo de pontos materiais, então verifica-se que −L + ∂L · ẋ ≡ constante ∂ ẋ (3.68) 110 Controlo Óptimo ao longo das soluções das equações de Euler-Lagrange (cf. (2.14)). A conservação de energia encontra-se associada à homogeneidade do tempo (vide [6, p. 255]) e em 1876 Erdmann publicou uma generalização deste facto: no caso autónomo, i.e. quando o Lagrangeano L é invariante no tempo t, a relação (3.68) é uma condição necessária de optimalidade, de primeira ordem, para o correspondente problema fundamental do cálculo das variações. A lei de conservação (3.68) é agora conhecida como a segunda condição de Erdmann e é um caso particular da condição de DuBois-Reymond (Corolário 59). O estudo sistemático de problemas invariantes do cálculo das variações, foi iniciado em 1918 por Emmy Amalie Noether, a distinta matemática alemã, que influenciada pelos trabalhos de Klein e Lie sobre as propriedades de transformação de equações diferenciais, publicou um resultado fundamental, agora um resultado clássico, conhecido como Teorema de Noether , afirmando que as leis de conservação no cálculo das variações são a manifestação de um princı́pio universal: “A invariância de um sistema com respeito a uma famı́lia de transformações uni-paramétrica, implica a existência de uma lei de conservação para esse sistema”. As quantidades conservadas ao longo das extremais são calculadas em termos do Lagrangeano e duma famı́lia de transformações apropriada. O notável teorema de Emmy Noether, ao relaRb cionar as propriedades de invariância de uma funcional integral a L(t, x(t), ẋ(t)) dt do cálculo das variações, com os integrais das correspondentes equações diferenciais de Euler-Lagrange ou Hamiltonianas revela-se de importância primacial e de implicações profundas em várias áreas da fı́sica moderna, tais como na mecânica clássica e quântica, nas teorias gravitacionais, eléctricas e electromagnéticas, na óptica geométrica, na teoria geral da relatividade, etc., englobando todos os teoremas sobre primeiros integrais sabidos na fı́sica. Por exemplo, a conservação da quantidade de movimento e momento angular da mecânica, correspondem, respectivamente, à invariância translacional e rotacional da acção, enquanto a invariância no tempo conduz à conservação de energia (à lei de conservação (3.68)). Outra aplicação importante do Teorema de Noether surge no estudo do problema dos n corpos (n-body problem). A importância do Teorema de Noether não se limita, no entanto, à matemática e à fı́sica. Ele é também um resultado muito importante em áreas como a engenharia, sistemas, controlo e suas aplicações e em economia (em Economia, tal como na Fı́sica, as leis de conservação têm normalmente interpretações directas – por exemplo a lei do rendimento/riqueza). A aplicação habitual das leis de conservação é a de baixar a ordem das equações diferenciais. Nesta direcção, as leis de conservação podem também simplificar o processo de resolução dos problemas de Controlo Óptimo. Elas são, contudo, uma ferramenta útil por muitas outras razões. Diversas aplicações importantes das leis de conservação, tanto na Fı́sica como na Matemática, podem ser encontradas na literatura. A formulação clássica do Teorema de Noether é dada no Cálculo das Variações. Aqui 3.8 Leis de Conservação 111 damos uma formulação mais moderna e geral do Teorema de Noether, no contexto do Controlo Óptimo. Consideremos um grupo uni-paramétrico de transformações C 1 da forma hs (t, x, u, ψ0 , ψ) = (ht (t, x, u, ψ0 , ψ, s), hx (t, x, u, ψ0 , ψ, s), hu (t, x, u, ψ0 , ψ, s), hψ (t, x, u, ψ0 , ψ, s)) , (3.69) onde s denota o parâmetro das transformações. Assumimos que para o valor do parâmetro s = 0 corresponde a identidade: h0 (t, x, u, ψ0 , ψ) = (ht (t, x, u, ψ0 , ψ, 0), hx (t, x, u, ψ0 , ψ, 0), hu (t, x, u, ψ0 , ψ, 0), hψ (t, x, u, ψ0 , ψ, 0)) (3.70) = (t, x, u, ψ0 , ψ) . Associado ao grupo de transformações (3.69) consideramos os geradores infinitesimais d d ht (t, x, u, ψ0 , ψ, s) hx (t, x, u, ψ0 , ψ, s) T (t, x, u, ψ0 , ψ) = , X(t, x, u, ψ0 , ψ) = , ds ds s=0 s=0 (3.71) d d , Ψ(t, x, u, ψ0 , ψ) = . hu (t, x, u, ψ0 , ψ, s) hψ (t, x, u, ψ0 , ψ, s) U (t, x, u, ψ0 , ψ) = ds ds s=0 s=0 Definição 86 (Definição de invariância e simetria). O problema de Controlo Óptimo (3.53) diz-se invariante sob o grupo uni-paramétrico de transformações C 1 (3.69) se, e somente se, ( d H (hs (t, x(t), u(t), ψ0 , ψ(t))) ds ) dhx (t,x(t),u(t),ψ0 ,ψ(t),s) dh (t, x(t), u(t), ψ , ψ(t), s) t 0 dt = 0, −hψ (t, x(t), u(t), ψ0 , ψ(t), s) · dh (t,x(t),u(t),ψ ,ψ(t),s) t 0 dt dt s=0 (3.72) com H o Hamiltoniano: H(t, x, u, ψ0 , ψ) = ψ0 L(t, x, u) + ψ · ϕ(t, x, u). Dizemos então que as transformações (3.69) constituem uma simetria para o problema de Controlo Óptimo. Lema 87. A condição (todas as funções são calculadas em (t, x(t), u(t), ψ0 , ψ(t))) ∂H ∂H ∂H ∂H d d T + ·X + ·U + · Ψ − Ψ · ẋ(t) − ψ(t) · X + H T = 0 , (3.73) ∂t ∂x ∂u ∂ψ dt dt é necessária e suficiente para o problema de Controlo Óptimo (3.53) ser invariante sob o grupo uni-paramétrico de transformações (3.69). Demonstração. A partir da definição de invariância (Definição 86) e tendo em mente a igualdade (3.70) e a definição dos geradores infinitesimais (3.71), basta diferenciar (3.72) em relação ao parâmetro do grupo s e fazer s = 0. 112 Controlo Óptimo Teorema 88 (Teorema de Noether). Se o problema de Controlo Óptimo é invariante sob (3.69), no sentido da Definição 86, então ψ(t) · X (t, x(t), u(t), ψ(t)) − H (t, x(t), u(t), ψ0 , ψ(t)) T (t, x(t), u(t), ψ(t)) = c (3.74) (c uma constante; t ∈ [a, b]; T e X os geradores infinitesimais dados de acordo com (3.71); H o Hamiltoniano H(t, x, u, ψ0 , ψ) = ψ0 L(t, x, u) + ψ · ϕ(t, x, u)) é uma lei de conservação. Demonstração. Ao longo das extremais de Pontryagin (x(·), u(·), ψ0 , ψ(·)) o sistema Hamiltoniano, a condição de estacionaridade e a propriedade dada pela Proposição 57 permitem escrever (3.73) na forma dX dT d dH T − ψ̇(t) · X − ψ(t) · +H =0⇔ (ψ(t) · X − HT ) = 0 . dt dt dt dt O Teorema de Noether permite obter uma lei de conservação conhecido um grupo uniparamétrico de transformações hs . Na prática, dado um problema de Controlo Óptimo, Como obter tais transformações? Este é o hoc opus hic labor est. Usando a condição (3.73) podemos estabelecer um algoritmo para a determinação dos geradores infinitesimais. Tal algoritmo envolve a resolução de um sistema de equações diferenciais às derivadas parciais. A resolução deste sistema torna-se possı́vel por se tratar de um sistema linear relativamente às funções incógnitas. Definimos em Maple um procedimento designado por SimetriaCO que tem por entradas a expressão do Lagrangeano e as expressões das equações diferencias ordinárias que descrevem o sistema de controlo; como saı́da os respectivos geradores infinitesimais. Se o problema de controlo óptimo não admitir simetrias, obtemos de SimetriaCO geradores nulos. As leis de conservação que procuramos são obtidas substituindo na equação (3.74) os geradores infinitesimais T e X. Definimos também em Maple o procedimento NoetherCO que tem por entradas o Lagrangeano, o sistema de controlo e os geradores infinitesimais; como saı́da as correspondentes leis de conservação dadas pelo Teorema 88. As definições em Maple de SimetriaCO e NoetherCO podem ser encontradas no Apêndice F. Nas duas secções seguintes ilustramos, por intermédio de vários exemplos, o método de Noether e as nossas definições em Maple na obtenção de Leis de Conservação em Controlo Óptimo. 3.8.3 Exemplos: leis de conservação em Controlo Óptimo Concluı́mos, do Corolário 83, que uma condição necessária e suficiente para a função C = Hψx (3.75) 3.8 Leis de Conservação 113 ∂H ∂H ser primeiro integral é a de que ψx ∂H ∂t + ψH ∂ψ − Hx ∂x = 0. Um problema muito simples com o primeiro integral (3.75) é portanto Z b a L (u(t)) dt −→ min , (3.76) ẋ(t) = ϕ (u(t)) x(t) . A lei de conservação Hψx = const pode ser interpretada à luz da invariância do problema (existência de uma simetria) e do Teorema de Noether. Exercı́cio 25. Mostre que o problema (3.76) é invariante sob o grupo uni-paramétrico de transformações hsx (x) = es x e hsu = u (cf. Definição 86). Obtenha do Teorema 88 que ψ(t)x(t) ≡ constante , (3.77) t ∈ [a, b], ao longo de uma qualquer extremal de Pontryagin do problema (3.76). Analisemos o Exercı́cio 25 com a ajuda do Maple. Temos um problema muito simples, envolvendo apenas uma variável de estado (n = 1) e uma variável de controlo (m = 1). Com as definições Maple > l:=L(u); Phi:=phi(u)*x; l := Φ := L (u) ϕ (u) x o comando SimetriaCO determina os geradores infinitesimais das transformações de invariância do problema do controlo óptimo em consideração: > SimetriaCO(l,Phi,t,x,u); {U = 0, X = C1 x, Ψ = −ψ C1 , T = C2 } A lei de conservação correspondente a estes geradores é facilmente obtida por intermédio do nosso comando Maple NoetherCO (o sinal de percentagem % é um operador usado em Maple para referenciar o resultado do comando anterior): > NoetherCO(l,Phi,t,x,u, %); C1 x(t)ψ(t) − (ψ0 L (u(t)) + ψ(t)ϕ (u(t)) x(t)) C2 = const A lei de conservação depende de dois parâmetros que advêm das constantes de integração. Com as substituições 114 Controlo Óptimo > subs(C[1]=1,C[2]=0, %); x(t)ψ(t) = const obtemos a lei de conservação (3.77). Exercı́cio 26 (problema de controlo óptimo com 3 variáveis de estado e 2 controlos). Considere-se o seguinte problema de controlo óptimo: Z b (u1 (t))2 + (u2 (t))2 dt −→ min , a x˙ (t) = u1 (t) cos x3 (t) , 1 (3.78) x˙ (t) = u1 (t) sin x3 (t) , 2 x˙ (t) = u (t) . 3 2 O sistema de controlo (3.78) serve de modelo à cinemática de um carro (cf. [31, p. 32], [38, §4]). Mostre que o problema é invariante sob o grupo uni-paramétrico de transformações hs = hsx1 , hsx2 , hsx3 definido como se segue (repare-se que para s = 0 temos h0x1 (x1 , x2 ) = x1 , h0x2 (x1 , x2 ) = x2 e h0x3 (x3 ) = x3 ): hsx1 (x1 , x2 ) = x1 cos s − x2 sin s , hsx2 (x1 , x2 ) = x1 sin s + x2 cos s , hsx3 (x3 ) = x3 + s , (use hsu1 = u1 e hsu2 = u2 na Definição 86). Conclua, pelo Teorema de Noether, que se (x1 (t), x2 (t), x3 (t), u1 (t), u2 (t), ψ0 , ψ1 (t), ψ2 (t), ψ3 (t)) , t ∈ [a, b] , for uma extremal de Pontryagin do problema, então −ψ1 (t)x2 (t) + ψ2 (t)x1 (t) + ψ3 (t) ≡ constante . (3.79) Usemos o Maple para analisar o problema dado no Exercı́cio 26. A lei de conservação geral, da qual (3.79) é um caso particular, tanto para este problema, como para os que se sucedem, é obtida pelo processo seguido na análise do Exercı́cio 25. > L:=u[1]^2+u[2]^2; phi:=[u[1]*cos(x[3]),u[1]*sin(x[3]),u[2]]; L := u1 2 + u2 2 ϕ [u1 cos (x3 ) , u1 sin (x3 ) , u2 ] := > SimetriaCO(L, phi, t, [x[1],x[2],x[3]], [u[1],u[2]]); 3.8 Leis de Conservação 115 {Ψ3 = 0, U1 = 0, U2 = 0, T = C2 , Ψ1 = −C1 ψ2 , X3 = C1 , Ψ2 = C1 ψ1 , X1 = −C1 x2 + C3 , X2 = C1 x1 + C4 } > NoetherCO(L, phi, t, [x[1],x[2],x[3]], [u[1],u[2]], %); (−C 1 x2(t) + C3 ) ψ1 (t) + (C1 x1 (t) + C4 ) ψ2 (t) + C1 ψ3 (t) 2 2 − ψ0 (u1 (t)) + (u2 (t)) + u1 (t) cos (x3 (t)) ψ1 (t) + u1 (t) sin (x3 (t)) ψ2 (t) + u2 (t)ψ3 (t) C2 = const Escolhendo valores apropriados para as constantes de integração > subs(C[1]=1,C[2]=0,C[3]=0,C[4]=0, %); −x2 (t)ψ1 (t) + x1 (t)ψ2 (t) + ψ3 (t) = const obtemos a lei de conservação (3.79). Exercı́cio 27 (n = r = 1). Para o problema de controlo óptimo Z I [x(·), u(·)] = b a etx(t) u(t) dt −→ min , ẋ(t) = tx(t)u(t)2 , mostre que ψ0 tetx(t) u(t) + ψ(t)x(t) (tu(t))2 + 1 (3.80) é constante ao longo de qualquer extremal de Pontryagin (x(·), u(·), ψ0 , ψ(·)). Para isso use hst (t) = e−s t, hsx (x(ts )) = es x(t), hsu (ts ) = es u(t) na Definição 86 e conclua, do Teorema 88, que ψx + Ht é um primeiro integral (perceba que ψx + Ht é equivalente a (3.80)). Notamos que a lei de conservação ψ0 tetx(t) u(t) + ψ(t)x(t) (tu(t))2 + 1 ≡ constante pode ser olhada, tal como a segunda condição de Erdmann do cálculo das variações, como uma condição necessária de optimalidade. O Exercı́cio 27 é facilmente analisado com a ajuda do Maple: > L:=exp(t*x)*u; phi:=t*x*u^2; L := etx u ϕ txu2 := > SimetriaCO(L, phi, t, x, u); {X = C1 x, U = C1 u, Ψ = −ψ C1 , T = −tC1 } 116 Controlo Óptimo > NoetherCO(L, phi, t, x, u, %); Escolhendo C1 = 1 2 C1 x(t)ψ(t) + ψ0 etx(t) u(t) + ψ(t)tx(t) (u(t)) tC1 = const > expand(subs(C[1]=1, %)); 2 x(t)ψ(t) + tψ0 etx(t) u(t) + ψ(t)t2 x(t) (u(t)) = const obtemos o primeiro integral (3.80). O próximo exemplo é um problema importante no contexto da geometria sub-Riemanniana. Notamos que apesar do problema ser autónomo, a transformação da variável tempo é necessária para a obtenção dos primeiros integrais. Exercı́cio 28 (problema de Martinet da geometria sub-Riemanniana). Considere o problema Z a b (u1 (t))2 + (u2 (t))2 dt −→ min x˙1 (t) = u1 (t) , u2 (t) , x˙2 (t) = 1 + αx1 (t) x˙3 (t) = (x2 (t))2 u1 (t) . α ∈ R, Neste caso temos n = 3, r = 2. O Hamiltoniano é dado por ψ 2 u2 H(x1 , x2 , u1 , u2 , ψ0 , ψ1 , ψ2 , ψ3 ) = ψ0 u21 + u22 + ψ1 u1 + + ψ3 x22 u1 , 1 + αx1 e ψ3 e H são primeiros integrais triviais (H não depende de x3 e t e a conclusão provém ∂H directamente da equação ψ̇3 = − ∂x do sistema adjunto e da Proposição 57). Quando α = 3 0, isto é para o problema de Martinet da geometria sub-Riemanniana no caso plano (flat) (vide [2, 7]), ψ1 é igualmente um primeiro integral trivial do problema. Por intermédio do Teorema de Noether, com transformação da variável tempo, é possı́vel obter primeiros integrais interessantes. Considere duas situações: α = 0 (caso plano) e α 6= 0 (caso não plano). Problema flat. Para α = 0, mostre que os pressupostos do Teorema de Noether (Teorema 88) são satisfeitos com hst = e2s t, hsx1 = es x1 , hsx2 = es x2 , e hsx3 = e3s x3 . Para mostrar que o problema é invariante sob estas transformações, no sentido da Definição 86, use hsu1 = e−s u1 e hsu2 = e−s u2 . Conclua, pelo Teorema 88, que ψ1 x1 (t) + ψ2 (t)x2 (t) + 3ψ3 x3 (t) − 2Ht ≡ constante , (3.81) 3.8 Leis de Conservação 117 t ∈ [a, b], ao longo das extremais de Pontryagin (x1 (·), x2 (·), x3 (·), u1 (·), u2 (·), ψ0 , ψ1 , ψ2 (·), ψ3 ) do problema flat. Problema não flat. Para α 6= 0, mostre que o problema é invariante, no sentido da Definição 86, sob hst = e2s t, hsx1 = es (αx1 +1)−1 , α hsx2 = x2 , e hsx3 = es x3 , novamente com hsu1 = e−s u1 e hsu2 = e−s u2 . Conclua do Teorema 88 que 1 + ψ3 x3 (t) − 2Ht = const ψ1 (t) x1 (t) + α (3.82) é uma lei de conservação. O problema de Martinet da geometria sub-Riemanniana pode ser estudado, como proposto no Exercı́cio 28, por recurso ao Sistema de Computação Algébrica Maple e às definições dadas no Apêndice F. Problema flat > L:=u[1]^2+u[2]^2; phi:=[u[1],u[2],x[2]^2*u[1]]; L := u1 2 + u2 2 ϕ := [u1 , u2 , x2 2 u1 ] > SimetriaCO(L, phi, t, [x[1],x[2],x[3]], [u[1],u[2]]); {U2 = −1/3 C1 u2 , U1 = −1/3 u1 C1 , X2 = 1/3 C1 x2 , Ψ1 = −1/3 C1 ψ1 , Ψ2 = −1/3 C1 ψ2 , Ψ3 = −C1 ψ3 , T = 2/3 C1 t + C2 , X3 = C1 x3 + C3 , X1 = 1/3 C1 x1 + C4 } > NoetherCO(L, phi, t, [x[1],x[2],x[3]], [u[1],u[2]], %); (1/3 C1x1 (t) + C4 ) ψ1 (t) +1/3 C1 x2 (t)ψ2 (t) + (C1 x3 (t) + C3 ) ψ3 (t) 2 2 2 − ψ0 (u1 (t)) + (u2 (t)) + ψ1 (t)u1 (t) + ψ2 (t)u2 (t) + ψ3 (t) (x2 (t)) u1 (t) (2/3 C1 t + C2 ) = const Com as substituições > subs(C[1]=3,C[2]=0,C[3]=0,C[4]=0, %); 2 2 x1 (t)ψ1 (t) + x2 (t)ψ2 (t) + 3 x3 (t)ψ3 (t) − 2 ψ0 (u1 (t)) + (u2 (t)) + ψ1 (t)u1 (t) + ψ2 (t)u2 (t) 2 + ψ3 (t) (x2 (t)) u1 (t) t = const 118 Controlo Óptimo obtemos a lei de conservação (3.81) para o caso flat. Problema não flat > L:=u[1]^2+u[2]^2; phi:=[u[1],u[2]/(1+alpha*x[1]),x[2]^2*u[1]]; L := u1 2 + u2 2 u2 ϕ := u1 , , x2 2 u1 1 + α x1 > SimetriaCO(L, phi, t, [x[1],x[2],x[3]], [u[1],u[2]]); {X2 = 0, Ψ2 = 0, T = 2 C7 t + C11 , Ψ1 = −C7 ψ1 , (−C2 − C8 − C1 − C5 − C9 − C6 − C4 − C3 ) α + C7 X1 = α +C7 x1 + C8 + C3 + C2 + C1 + C9 + C6 + C4 + C5 , U1 = −C7 u1 , Ψ3 = −C7 ψ3 , U2 = −C7 u2 , X3 = C7 x3 + C10 } Com uma pequena simplificação é possı́vel eliminar as constantes redundantes presentes na expressão. > simplify(%); {X2 = 0, Ψ2 = 0, T = 2 C7 t + C11 , Ψ1 = −C7 ψ1 , U1 = −C7 u1 , Ψ3 = −C7 ψ3 , U2 = −C7 u2 , X3 = C7 x3 + C10 , X1 = C7 (α−1 + x1 )} > NoetherCO(L, phi, t, [x[1],x[2],x[3]], [u[1],u[2]], %); C7 (α−1 + x1 (t))ψ1 (t) + (C7 x3 (t) + C10 ) ψ3 (t) u2 (t)ψ2 (t) 2 2 2 − ψ0 (u1 (t)) + (u2 (t)) + u1 (t)ψ1 (t) + + (x2 (t)) u1 (t)ψ3 (t) (2 C7 t + C11 ) = const 1 + α x1 (t) Com as substituições > subs(C[7]=1,C[10]=0,C[11]=0, %); α−1 + x1 (t) ψ1 (t) + x3 (t)ψ3 (t) u2 (t)ψ2 (t) 2 2 2 + (x2 (t)) u1 (t)ψ3 (t) t = const − 2 ψ0 (u1 (t)) + (u2 (t)) + u1 (t)ψ1 (t) + 1 + α x1 (t) obtemos a lei de conservação (3.82) para o caso não flat. 3.8 Leis de Conservação 119 Exercı́cio 29. (n = 4, r = 2) Considere o problema Z b (u1 (t))2 + (u2 (t))2 dt −→ min , a x˙1 (t) = x3 (t) x˙2 (t) = x4 (t) 2 2 x ˙ (t) = −x (t) (x (t)) + (x (t)) + u1 (t) 3 1 1 2 x˙ (t) = −x (t) (x (t))2 + (x (t))2 + u (t) . 4 2 1 2 2 O Hamiltoniano é dado por H (x1 , x2 , x3 , x4 , u1 , u2 , ψ0 , ψ1 , ψ2 , ψ3 , ψ4 ) = ψ0 u21 + u22 + ψ1 x3 + ψ2 x4 − ψ3 x1 x21 + x22 + ψ3 u1 − ψ4 x2 x21 + x22 + ψ4 u2 . Prove que C = −ψ1 x2 + ψ2 x1 − ψ3 x4 + ψ4 x3 (3.83) é um primeiro integral do problema: (i) mostrando que 4 4 ∂C X ∂C ∂H X ∂C ∂H + − = ψ 4 u1 − ψ 3 u2 ; ∂t ∂xi ∂ψi ∂ψi ∂xi i=1 (3.84) i=1 que da condição de estacionaridade ∂H ∂u1 = 0 e ∂H ∂u2 = 0 tem-se 2ψ0 u1 + ψ3 = 0 e 2ψ0 u2 + ψ4 = 0; e usando estas últimas duas identidades em (3.84) para concluir do Corolário 83 que (3.83) é um primeiro integral; (ii) usando o Lema 87 para encontrar um grupo uni-paramétrico de transformações sem alteração da variável tempo (hst = t, hsx1 = x1 − x2 s, hsx2 = x2 + x1 s, hsx3 = x3 − x4 s, hsx4 = x4 + x3 s, hsu1 = u1 − u2 s, hsu2 = u2 + u1 s) sob o qual o problema é invariante e aplicando o Teorema de Noether (Teorema 88). Em Maple: > L:=u[1]^2+u[2]^2; L := u1 2 + u2 2 > phi:=[x[3],x[4],-x[1]*(x[1]^2+x[2]^2)+u[1],-x[2]*(x[1]^2+x[2]^2)+u[2]]; ϕ := x3 , x4 , −x1 x1 2 + x2 2 + u1 , −x2 x1 2 + x2 2 + u2 120 Controlo Óptimo > SimetriaCO(L, phi, t, [x[1],x[2],x[3],x[4]], [u[1],u[2]]); (C2 + C1 ) ψ3 Ψ1 = C1 ψ2 , X3 = C1 x4 , X4 = −C1 x3 , U2 = C2 u1 + 1/2 , X1 = C1 x2 , X2 = −C1 x1 , ψ0 (C2 + C1 ) ψ4 , Ψ4 = −C1 ψ3 , Ψ3 = C1 ψ4 , T = C3 Ψ2 = −C1 ψ1 , U1 = −C2 u2 − 1/2 ψ0 > NoetherCO(L, phi, t, [x[1],x[2],x[3],x[4]], [u[1],u[2]], %); 2 2 C1 x2 (t)ψ1 (t) − C1 x1 (t)ψ2 (t) + C1 x4 (t)ψ3 (t) − C1 x3 (t)ψ4 (t) − ψ0 (u1 (t)) + (u2 (t)) 2 2 + x3 (t)ψ1 (t) + x4 (t)ψ2 (t) + −x1 (t) (x1 (t)) + (x2 (t)) + u1 (t) ψ3 (t) 2 2 + −x2 (t) (x1 (t)) + (x2 (t)) + u2 (t) ψ4 (t) C3 = const Com as substituições > subs(C[1]=-1,C[3]=0, %); −x2 (t)ψ1 (t) + x1 (t) ψ2 (t) − x4 (t) ψ3 (t) + x3 (t)ψ4 (t) = const chegamos à lei de conservação definida pelo primeiro integral (3.83). O Exercı́cio 30 ilustra bem a efectividade do Lema 87 na descoberta de um grupo de transformações hs que deixem o problema invariante: é relativamente fácil determinar hs para a qual a condição (3.73) é satisfeita, enquanto a verificação de (3.72), mesmo à posteriori, é tarefa muito mais trabalhosa. Exercı́cio 30 (n = 4, r = 2). Considere agora o problema ẋ1 = u1 (1 + x2 ) ẋ = u x 2 ẋ3 ẋ4 1 3 = u2 = u1 x23 com L = u21 + u22 . Use o Lema 87 para obter a condição necessária e suficiente para a trans formação uni-paramétrica hs = hst , hsx1 , hsx2 , hsx3 , hsx4 deixar o problema invariante. Mostre que a condição é satisfeita com ∂hsu1 ∂hsu2 d ∂hst = −u1 , = −u2 , = 2, ∂s s=0 ∂s s=0 dt ∂s s=0 ∂hsx2 ∂hsx3 ∂hsx4 ∂hsx1 = 3x1 , = 2 (1 + x2 ) , = x3 , = 3x4 . ∂s s=0 ∂s s=0 ∂s s=0 ∂s s=0 3.8 Leis de Conservação 121 Mostre depois, usando directamente a definição de invariância (Definição 86) que as transformações hst = t(1 + 2s), hsu1 = u1 (1 − s), hsu2 = u2 (1 − s), hsx1 = x1 (1 + 3s), hsx2 = x2 + 2s(1 + x2 ), hsx3 = x3 (1 + s), hsx4 = x4 (1 + 3s), que possuem os geradores acima indicados, constituem uma simetria para o problema. Por fim, aplique o Teorema de Noether (Teorema 88) e obtenha o seguinte primeiro integral: 3ψ1 (t)x1 (t) + 2ψ2 (t)(1 + x2 (t)) + ψ3 (t)x3 (t) + 3ψ4 (t)x4 (t) − 2tH , (3.85) onde H = ψ0 (u1 (t))2 + (u2 (t))2 + ψ1 (t)u1 (t) (1 + x2 (t)) + ψ2 (t)u1 (t)x3 (t) + ψ3 (t)u2 (t) + ψ4 (t)u1 (t) (x3 (t))2 . Com as nossas definições em Maple, as simetrias do problema do Exercı́cio 30 e respectivas leis de conservação são facilmente obtidas. > L:=u[1]^2+u[2]^2; phi:=[u[1]*(1+x[2]),u[1]*x[3],u[2],u[1]*x[3]^2]; L := u1 2 + u2 2 ϕ := [u1 (1 + x2 ) , u1 x3 , u2 , u1 x3 2 ] > SimetriaCO(L, phi, t, [x[1],x[2],x[3],x[4]], [u[1],u[2]]); {X2 = 2/3 C1 + 2/3 C1 x2 , X3 = 1/3 C1 x3 , U2 = −1/3 C1 u2 , U1 = −1/3 u1 C1 , Ψ1 = −C1 ψ1 , Ψ4 = −C1 ψ4 , Ψ3 = −1/3 C1 ψ3 , Ψ2 = −2/3 C1 ψ2 , T = 2/3 C1 t + C2 , X4 = C1 x4 + C3 , X1 = C1 x1 + C4 } > NoetherCO(L, phi, t, [x[1],x[2],x[3],x[4]], [u[1],u[2]], %); (C1 x1 (t) + C4 ) ψ1 (t) + (2/3 C1 + 2/3 C1 x2 (t)) ψ2 (t) + 1/3 C1 x3 (t)ψ3 (t) + (C1 x4 (t) + C3 ) ψ4 (t) 2 2 − ψ0 (u1 (t)) + (u2 (t)) + ψ1 (t)u1 (t) (1 + x2 (t)) + ψ2 (t)u1 (t)x3 (t) 2 + ψ3 (t)u2 (t) + ψ4 (t)u1 (t) (x3 (t)) (2/3 C1 t + C2 ) = const Com as substituições > subs(C[1]=3,C[2]=0,C[3]=0,C[4]=0, %); 2 2 3 x1 (t)ψ1 (t) + (2 + 2 x2 (t)) ψ2 (t) + x3 (t)ψ3 (t) + 3 x4 (t)ψ4 (t) − 2 ψ0 (u1 (t)) + (u2 (t)) 2 + ψ1 (t)u1 (t) (1 + x2 (t)) + ψ2 (t)u1 (t)x3 (t) + ψ3 (t)u2 (t) + ψ4 (t)u1 (t) (x3 (t)) t = const temos a lei de conservação definida pelo primeiro integral (3.85). 122 Controlo Óptimo Observação 89. Todas as leis de conservação que obtivemos nos exercı́cios anteriores são não-evidentes e inesperadas à priori. No entanto, uma vez obtidas, elas podem ser verificadas, por diferenciação, usando o correspondente sistema adjunto ψ̇ = − ∂H ∂x e a condição de estacionaridade ∂H ∂u = 0. Vamos ilustrar esta questão para o problema do Exercı́cio 30. Do sistema adjunto obtemos que ψ1 e ψ4 são constantes, enquanto ψ2 (t) e ψ3 (t) satisfazem ψ˙2 (t) = −ψ1 u1 (t), ψ˙3 (t) = −ψ2 (t)u1 (t) − 2ψ4 u1 (t)x3 (t). Tendo em mente que o problema é autónomo, e que por conseguinte o Hamiltoniano H é constante ao longo das extremais (cf. Exemplo 78), a diferenciação de (3.85) permite-nos escrever que 3ψ1 u1 (t) (1 + x2 (t)) − 2ψ1 u1 (t) (1 + x2 (t)) + 2ψ2 (t)u1 (t)x3 (t) − ψ2 (t)u1 (t)x3 (t) − 2ψ4 u1 (t) (x3 (t))2 + ψ3 (t)u2 (t) + 3ψ4 u1 (t) (x3 (t))2 − 2H = 0 , isto é, ψ1 (1 + x2 (t)) u1 (t) + ψ2 (t)x3 (t)u1 (t) + ψ3 (t)u2 (t) + ψ4 (x3 (t))2 u1 (t) = 2H . Da definição do Hamiltoniano, a igualdade (3.86) é equivalente a H = −ψ0 (3.86) (u1 (t))2 + (u2 (t))2 , uma relação sustentada pela condição de estacionaridade: 2ψ u (t) + ψ (1 + x (t)) + ψ (t)x (t) + ψ (x (t))2 = 0 0 1 1 2 2 3 4 3 2ψ u (t) + ψ (t) = 0 0 2 3 ψ (1 + x (t)) u (t) + ψ (t)x (t)u (t) + ψ (x (t))2 u (t) = −2ψ (u (t))2 1 2 1 2 3 1 4 3 1 0 1 ⇒ ψ (t)u (t) = −2ψ (u (t))2 . 3 2 0 2 Vamos agora considerar problemas do controlo óptimo como o do Exercı́cio 29: problemas em que o sistema de controlo é afim no controlo, ϕ(x, u) = f (x) + g(x) · u, com rumo (drift) f (x) não nulo. Exercı́cio 31 (n = 2, r = 1). Considere-se o problema (3.53) com L = u2 , ϕ1 = 1 + y 2 e ϕ2 = u : Z b a (u(t))2 dt −→ min , ẋ(t) = 1 + (y(t))2 , ẏ(t) = u(t) . Usando o Lema 87 obtenha as condições que as transformações uni-paramétricas hs = hst , hsx , hsy devem satisfazer para o problema ser invariante. Mostre que essas condições são satisfeitas com hst = t(1 − 2s), hsu = u(1 + s), hsx = x + 2s(t − 2x), e hsy = y(1 − s). Pelo Teorema de Noether obtenha a lei de conservação 2ψx (t − 2x(t)) − ψy (t)y(t) + 2Ht ≡ constante , h i onde H = ψ0 (u(t))2 + ψx 1 + (y(t))2 + ψy (t)u(t). (3.87) 3.8 Leis de Conservação 123 Podemos obter a lei de conservação (3.87) com a ajuda do Maple: > L:=u^2; phi:=[1+y^2,u]; L := u2 ϕ [1 + y 2 , u] := > SimetriaCO(L, phi, t, [x,y], u); {Ψ2 = −1/4 C1 ψ2 , X2 = 1/4 C1 y, U = −1/4 C1 u, T = 1/2 C1 t + C2 , X1 = −1/2 C1 t + C1 x + C3 , Ψ1 = −C1 ψ1 } > NoetherCO(L, phi, t, [x,y], u, %); 2 2 (−1/2 C1 t + C1 x(t) + C3 ) ψ1 (t) + 1/4 C1 y(t)ψ2 (t) − ψ0 (u(t)) + ψ1 (t) 1 + (y(t)) + ψ2 (t)u(t) (1/2 C1 t + C2 ) = const > subs(C[1]=-4,C[2]=0,C[3]=0,%); 2 2 (2 t − 4 x(t)) ψ1 (t) − y(t)ψ2 (t) + 2 ψ0 (u(t)) + ψ1 (t) 1 + (y(t)) + ψ2 (t)u(t) t = const Nos próximos dois exemplos, estabelecemos leis de conservação para o problema de tempo mı́nimo. Exercı́cio 32 (n = 4, r = 1). Considere-se o problema de tempo mı́nimo ( com sistema de controlo RT 0 1dt → min) x˙1 (t) = 1 + x2 (t) , x˙ (t) = x (t) , 2 3 x˙3 (t) = u(t) , x˙ (t) = (x (t))2 − (x (t))2 . 4 3 2 Neste caso o Lagrangeano é dado por L = 1. Mostre que o problema é invariante, no sentido da Definição 86, sob hsx1 = (x1 − t)s + x1 , hsx2 = x2 (s + 1), hsx3 = x3 (s + 1), hsx4 = x4 (2s + 1), hsu = u(s + 1). Obtenha do Teorema 88 a lei de conservação ψ1 (t) (x1 (t) − t) + ψ2 (t)x2 (t) + ψ3 (t)x3 (t) + 2ψ4 (t)x4 (t) ≡ constante . (3.88) 124 Controlo Óptimo Podemos também resolver o Exercı́cio 32 com o Sistema de Computação Algébrica Maple e as definições do Apêndice F. > L:=1; phi:=[1+x[2],x[3],u,x[3]^2-x[2]^2]; L := 1 ϕ [1 + x2 , x3 , u, x3 2 − x2 2 ] := > SimetriaCO(L, phi, t, [x[1],x[2],x[3],x[4]], u); {Ψ4 = −C2 ψ4 , Ψ1 = −1/2 C2 ψ1 − C1 ψ4 , Ψ2 = −1/2 C2 ψ2 , Ψ3 = −1/2 C2 ψ3 , X2 = −1/2 C1 + 1/2 C2 x2 , X3 = 1/2 C2 x3 , X4 = −C1 t + C1 x1 + C2 x4 + C3 , X1 = (−1/2 C2 − 1/2 C1 ) t + 1/2 C2 x1 + C4 , T = C5 , U = 1/2 uC2 } > NoetherCO(L, phi, t, [x[1],x[2],x[3],x[4]], u, %); ((−1/2 C2 − 1/2 C1 ) t + 1/2 C2 x1 (t) + C4 ) ψ1 (t) + (−1/2 C1 + 1/2 C2 x2 (t)) ψ2 (t) + 1/2 C2 x3 (t)ψ3 (t) + (−C1 t + C1 x1 (t) + C2 x4 (t) + C3 ) ψ4 (t) 2 2 − ψ0 + (1 + x2 (t)) ψ1 (t) + x3 (t)ψ2 (t) + ψ3 (t)u(t) + (x3 (t)) − (x2 (t)) ψ4 (t) C5 = const Escolhendo as constantes apropriadas > subs(C[1]=0,C[2]=2,C[3]=0,C[4]=0,C[5]=0,%); (−t + x1 (t)) ψ1 (t) + x2 (t)ψ2 (t) + x3 (t)ψ3 (t) + 2 x4 (t)ψ4 (t) = const obtemos a lei de conservação (3.88). Exercı́cio 33 (n = 3, r = 1). Considere o problema de tempo mı́nimo (L = 1) com sistema de controlo 2 2 ẋ = 1 + y − z , ẏ = z , ż = u . Prove que o problema é invariante com hst = t, hsx = 2(x − t)s + x, hsy = y(s + 1), hsz = z(s + 1) e hsu = u(s + 1). Obtenha o respectivo primeiro integral: 2ψx (x − t) + ψy y + ψz z . (3.89) 3.8 Leis de Conservação 125 Obtenhamos (3.89) por intermédio do Maple: > L:=1; phi:=[1+y^2-z^2,z,u]; L := 1 ϕ [1 + y 2 − z 2 , z, u] := > SimetriaCO(L, phi, t, [x,y,z], u); {T = C2 , Ψ1 = −C1 ψ1 , U = 1/2 C1 u, Ψ3 = − 1/2 C1 ψ3 , Ψ2 = −1/2 C1 ψ2 , X3 = 1/2 C1 z, X1 = −C1 t + C1 x + C3 , X2 = 1/2 C1 y} > NoetherCO(L, phi, t, [x,y,z], u, %); (−C1 t + C1 x(t) + C3 ) ψ1 (t) + 1/2 C1 y(t)ψ2 (t) + 1/2 C1 z(t)ψ3 (t) 2 2 − ψ0 + ψ1 (t) 1 + (y(t)) − (z(t)) + ψ2 (t)z(t) + ψ3 (t)u(t) C2 = const As substituições > subs(C[1]=2,C[2]=0,C[3]=0, %); (−2 t + 2 x(t)) ψ1 (t) + y(t)ψ2 (t) + z(t)ψ3 (t) = const convertem a lei de conservação na prevista no Exercı́cio 33. 3.8.4 Exemplos: leis de conservação no Cálculo das Variações Como vimos em §3.1, os problemas do cálculo das variações são casos particulares do problema de controlo óptimo. Por este motivo, as nossas definições em Maple dos comandos SimetriaCO e NoetherCO podem ser usadas para a obtenção de leis de conservação (primeiros integrais das equações de Euler-Lagrange) no Cálculo das Variações ou na Mecânica. Exemplo 90. ([42, pp. 210 e 214]) Começamos com um exemplo muito simples em que o Lagrangeano depende apenas de uma variável dependente (n = 1) e não existem derivadas de ordem superior à primeira (m = 1): L(t, x, ẋ) = tẋ2 . Com a definição Maple > L:=t*u^2; u:=v; phi:=u; 126 Controlo Óptimo L := tv 2 u := v ϕ := v o nosso procedimento SimetriaCO determina os geradores infinitesimais das simetrias do problema do cálculo das variações em consideração: > SimetriaCO(L,phi,t,x,u); {U = −vC1 , T = tC1 , Ψ = 0, X = C2 } A lei de conservação correspondente a estes geradores é facilmente obtida por intermédio do Teorema de Noether e do nosso procedimento NoetherCO: > NoetherCO(L,phi,t,x,u,%); 2 C2 ψ(t) − ψ0 t (v(t)) + ψ(t)v(t) tC1 = const > LC:=subs(v(t)=diff(x(t),t),%); LC := C2 ψ(t) − ψ0 t ! 2 d d x(t) + ψ(t) x(t) tC1 = const. dt dt É, neste caso, muito fácil verificar a validade da lei de conservação obtida. Por definição, basta mostrar que a igualdade é verificada ao longo das extremais. A equação de Euler-Lagrange é a equação diferencial de 2a ordem (no Apêndice E definimos o comando Maple EulerLagrange) > EulerLagrange(L,t,x,v); d2 d −2 x (t) − 2 t 2 x (t) = 0 dt dt e as extremais de Euler-Lagrange são as suas soluções: > dsolve(%); {x(t) = C1 + C2 ln(t)} Outra forma de obter a trajectória extremal x(·) consiste em determinar o par (x(·), ψ(·)) que satisfaz o sistema adjunto e a condição de estacionaridade, de acordo com o princı́pio do máximo Pontryagin. Para que a condição de máximo se verifique, é necessário que a derivada do Hamiltoniano, relativamente à variável de controlo, seja nula. Assim, definido o Hamiltoniano (fazemos ψ0 = 1 pois como vimos – cf. Corolário 58 – não existem extremais anormais para os problemas do cálculo das variações) 3.8 Leis de Conservação 127 > H:=L+psi(t)*phi; H := tv 2 + ψ(t)v e igualando a zero a sua derivada, obtemos, usando o sistema adjunto, que > {diff(H,u)=0, diff(psi(t),t)=-diff(H,x)}; d ψ(t) = 0, 2 tv + ψ(t) = 0 dt Podemos então obter as extremais de Pontryagin resolvendo o sistema de equações diferenciais > sist:=subs(v=diff(x(t),t),%); sist := d d ψ(t) = 0, 2 t x(t) + ψ(t) = 0 dt dt > extr:=dsolve(%); extr := {x(t) = C1 , ψ(t) = 0} , {ψ(t) = 0, x(t) = x(t)} , {ψ(t) = C2 , x(t) = −1/2 C2 ln(t) + C1 } Embora nos deparemos com três possı́veis extremais do problema, podemos ignorar a primeira solução do sistema, por ser um caso particular da terceira solução apresentada, e a segunda, por não ser solução do sistema de equações diferenciais, como se comprova com o comando que se segue > map(odetest,[extr],sist); d {0} , 0, 2 t x (t) , {0} dt Assim, considerando apenas a terceira solução, obtemos, para a variável de estado x(t), a extremal de Euler-Lagrange. Substituindo agora na lei de conservação a extremal encontrada, obtemos, como esperado, uma proposição verdadeira > expand(subs(extr[3],LC)); C2 C2 + 1/4 C1 C2 2 = const Se substituirmos apenas ψ0 e ψ(t) na lei de conservação LC > expand(subs({psi[0]=1,psi(t)=_C2},LC)); 128 Controlo Óptimo C2 C2 − t2 C1 e simplificarmos as constantes, 2 d d x(t) − tC1 C2 x(t) = const dt dt > subs(C[2]*_C2=0,C[1]=-1,%); t2 d x (t) dt 2 + t C2 d x (t) = const dt obtemos então lei de conservação descrita em [42, pp. 210 e 214]. Exemplo 91. (Problema de Kepler – [42, p. 217]) Analisamos agora as simetrias e leis de conservação do problema de Kepler [42, p. 217]. Neste caso o Lagrangeano tem duas variáveis dependentes (n = 2) e não envolve derivadas de ordem superior (m = 1): L(t, q, q̇) = K m 2 . q̇1 + q̇22 + p 2 2 q1 + q22 Vamos determinar a fórmula geral das leis de conservação. Neste caso não é possı́vel validar a lei de conservação por aplicação directa da definição, como fizemos para o exemplo anterior, pois o Maple não é capaz de resolver o respectivo sistema de equações de Euler-Lagrange > L:= m/2*(v[1]^2+v[2]^2)+K/sqrt(q[1]^2+q[2]^2); x:=[q[1],q[2]]; u:=[v[1],v[2]]; phi:=[v[1],v[2]]; K := 1/2 m v1 2 + v2 2 + p q1 2 + q2 2 x := [q1 , q2 ] L u := [v1 , v2 ] ϕ := [v1 , v2 ] > EulerLagrange(L,t,x,u); 2 2 d Kq1 (t) Kq2 (t) d −m 2 q1 (t) − q (t) − = 0, −m = 0 2 3/2 3/2 dt dt2 2 2 2 2 q1 (t) + q2 (t) q1 (t) + q2 (t) > SimetriaCO(L, phi, t, x, u); n (C1 − C2 ) ψ2 , Ψ2 = C1 ψ1 , Ψ1 = −C1 ψ2 , X1 = −C1 q2 , T = C3 , U1 = −C2 v2 + ψ0 m o (C1 − C2 ) ψ1 U2 = C2 v1 − , X2 = C1 q1 ψ0 m 3.8 Leis de Conservação 129 > LC:=NoetherCO(L, phi, t, x, u, %); LC := −C1 q2 (t)ψ1 (t) + C1 q1 (t)ψ2 (t) − 2 ψ0 1/2 m (v1 (t)) + (v2 (t)) 2 K +q 2 2 (q1 (t)) + (q2 (t)) ! + ψ1 (t)v1 (t) + ψ2 (t)v2 (t) C3 = const Usando as equações que derivam da condição de máximo determinamos os multiplicadores de Pontryagin (ψ1 (t), ψ2 (t)). > H:=L+Vector[row]([psi[1](t), psi[2](t)]).Vector(phi); H := 2 1/2 m v1 + v2 2 +p K q1 2 + q2 2 ! + v1 ψ1 (t) + v2 ψ2 (t) > solve({diff(H,v[1])=0,diff(H,v[2])=0},{psi[1](t), psi[2](t)}); {ψ1 (t) = −mv1 , ψ2 (t) = −mv2 } Substituindo agora, em LC, ψ1 (t) e ψ2 (t) pelos valores encontrados, e v1 (t) e v2 (t) respectivamente por ẋ1 (t) e ẋ2 (t) > expand(subs(%,v[1](t)=v[1],v[2](t)=v[2],v[1]=diff(q[1](t),t),v[2]=diff(q[2](t),t),LC)); C1 q2 (t)m d d q1 (t) − C1 q1 (t)m q2 (t) + 1/2 C3 m dt dt 2 2 d d q1 (t) + 1/2 C3 m q2 (t) dt dt C3 K = const −q 2 2 (q1 (t)) + (q2 (t)) obtemos a lei de conservação do problema de Kepler. Exemplo 92. Vejamos o caso de um Lagrangeano com duas variáveis dependentes (n = 2) e com derivadas de ordem superior (m = 2): L(t, x, ẋ, ẍ) = ẋ21 + ẍ22 De acordo com as substituições sugeridas na secção 3.1, fazemos > L:=v[1]^2+a[2]^2; xx:=[x[1],x[2],v[1],v[2]]; u:=[a[1],a[2]]; phi:=[v[1],v[2],a[1],a[2]]; 130 Controlo Óptimo L := v1 2 + a2 2 xx := [x1 , x2 , v1 , v2 ] u := [a1 , a2 ] ϕ := [v1 , v2 , a1 , a2 ] > SimetriaCO(L, phi, t, xx, u); {X3 = −C3 v1 , X4 = C1 + C3 v2 , U2 = −C3 a2 + C2 ψ3 , U1 = −3 C3 a1 − 2 ψ0 C2 a2 − C2 ψ4 , Ψ4 = −C3 ψ4 , Ψ3 = C3 ψ3 , Ψ1 = −C3 ψ1 , Ψ2 = −3 C3 ψ2 , T = 2 C3 t + C4 , X1 = C3 x1 + C5 , X2 = tC1 + 3 C3 x2 + C6 } Na lei de conservação LC que resulta do procedimento NoetherCO, retomamos os valores de v1 (t), v2 (t), a1 (t) e a2 (t), respectivamente: ẋ1 (t), ẋ2 (t), ẍ1 (t) e ẍ2 (t). > NoetherCO(L, phi, t, xx, u, %): > LC:=subs(v[1](t)=diff(x[1](t),t), v[2](t)=diff(x[2](t),t), a[1](t)=diff(x[1](t),t$2), a[2](t)=diff(x[2](t),t$2),%); d x1 (t) ψ3 (t) + dt 2 2 2 ! d d d d C1 + C3 x2 (t) ψ4 (t) − ψ0 + ψ1 (t) x1 (t) x1 (t) + x2 (t) 2 dt dt dt dt ! d2 d2 d + ψ2 (t) x2 (t) + ψ3 (t) 2 x1 (t) + ψ4 (t) 2 x2 (t) (2 C3 t + C4 ) = const dt dt dt LC := (C3 x1 (t) + C5 ) ψ1 (t) + (tC1 + 3 C3 x2 (t) + C6 ) ψ2 (t) − C3 Tal como no Exemplo 90, também aqui é possı́vel verificar a validade da lei de conservação, directamente da definição, determinando a extremal de Pontryagin e substituindo-a na lei de conservação: > H:=L+vpsi.Vector(phi); H := v1 2 + a2 2 + v1 ψ1 (t) + v2 ψ2 (t) + a1 ψ3 (t) + a2 ψ4 (t) > {diff(H,u[1])=0, diff(H,u[2])=0, diff(vpsi[1],t)=-diff(H,xx[1]), diff(vpsi[2],t)= -diff(H,xx[2]), diff(vpsi[3],t)=-diff(H,xx[3]), diff(vpsi[4],t)=-diff(H,xx[4])}: > subs(v[1]=diff(x[1](t),t), a[2]=diff(x[2](t),t$2), %); d d d d d ψ3 (t) = −2 x1 (t) − ψ1 (t), ψ2 (t) = 0, ψ4 (t) = −ψ2 (t), ψ3 (t) = 0, ψ1 (t) = 0, dt dt dt dt dt d2 2 2 x2 (t) + ψ4 (t) = 0 dt 3.8 Leis de Conservação 131 Resolvendo o sistema de equações que deriva da condição de máximo e do sistema adjunto > dsolve(%); n x1 (t) = −1/2 C6 t + C4 , ψ2 (t) = C5 , x2 (t) = C1 t + C2 + 1/12 C5 t3 − 1/4 C3 t2 , ψ3 (t) = 0, o ψ1 (t) = C6 , ψ4 (t) = − C5 t + C3 obtém-se a extremal que, substituı́da em LC, > expand(subs(%,LC)); C6 C3 C4 + C6 C5 + 3 C5 C3 C2 + C5 C6 + C1 C3 + C3 C1 C3 + 1/4 C6 2 C4 + 1/4 C3 2 C4 − C5 C1 C4 = const conduz a uma proposição verdadeira. Se, finalmente, substituirmos apenas os multiplicadores de Pontryagin, > subs({psi[1](t)=_C6, psi[3](t)=0, psi[4](t)=-_C5*t+_C3, psi[2](t)=_C5}, LC); d (C3 x1 (t) + C5 ) C6 + (C1 t + 3 C3 x2 (t) + C6 ) C5 + C1 + C3 x2 (t) (− C5 t + C3 ) dt 2 2 2 ! d d d d − ψ0 + C6 x1 (t) + C5 x2 (t) x1 (t) + x2 (t) 2 dt dt dt dt ! d2 + (− C5 t + C3 ) 2 x2 (t) (2 C3 t + C4 ) = const dt obtemos a lei de conservação na notação do Cálculo das Variações. Exemplo 93. (Emden-Fowler – [42, p. 220]) Consideremos o problema variacional definido pelo Lagrangeano > L:= t^2/2*(v^2-(1/3)*x^6); L := t2 v 2 − 2 x6 3 A respectiva equação diferencial de Euler-Lagrange é conhecida na astrofı́sica como a equação de Emden-Fowler [42, p. 220]: > EL := EulerLagrange(L,t,x,v); 132 Controlo Óptimo 2 d 5 2 d 2 EL := −2 t x (t) − t 2 x (t) − t (x (t)) = 0 dt dt Encontramos os geradores infinitesimais, que conduzem a uma simetria variacional para a funcional de Emden-Fowler, por intermédio da nossa função SimetriaCO: > SimetriaCO(L, v, t, x, v); {Ψ = −ψ C1 , U = 3 C1 v, T = −2 tC1 , X = C1 x} Aplicando o Teorema de Noether (Teorema 88), estabelecemos a seguinte lei de conservação: > LC:=NoetherCO(L,v,t,x,v,%); 2 6 LC := C1 x(t)ψ(t) + 2 1/2 ψ0 t2 (v(t)) − 1/3 (x(t)) + ψ(t)v(t) tC1 = const Da condição de estacionaridade determinamos o valor de ψ(t) > H:=L+psi(t)*v; H := 1/2 t2 v 2 − 1/3 x6 + ψ(t)v > solve(diff(H,v)=0,{psi(t)}); ψ(t) = −t2 v e podemos obter a lei de conservação na notação do Cálculo das Variações: > subs(%,v(t)=diff(x(t),t),v=diff(x(t),t),LC): expand(%); −C1 x(t)ψ0 t2 d x(t) − t3 C1 ψ0 dt 2 d 6 x(t) − 1/3 t3 C1 ψ0 (x(t)) = const dt Atribuindo o valor apropriado à variável de integração > subs(C[1]=-3/psi[0],%); 3 x(t)t2 d x(t) + 3 t3 dt 2 d 6 x(t) + t3 (x(t)) = const dt obtemos a lei de conservação de Emden-Fowler. Exemplo 94. (Thomas-Fermi – [42, p. 220]) Mostramos agora um exemplo de um problema do cálculo das variações que não possui nenhuma simetria variacional. Seja 3.8 Leis de Conservação 133 > L:=1/2 * v^2 + 2/5 * (x^(5/2))/(sqrt(t)); 5 2 x2 v2 + √ L := 2 5 t A equação de Euler-Lagrange associada a este Lagrangeano corresponde à equação diferencial de Thomas-Fermi [42, p. 220]: > EL := EulerLagrange(L,t,x,v); EL := ( ) 3 d2 (x (t)) 2 − 2 x (t) + √ =0 dt t A nossa função SimetriaCO devolve, neste caso, geradores nulos. Isto significa que este problema não admite simetrias. > SimetriaCO(L, v, t, x, v); {U = 0, T = 0, Ψ = 0, X = 0} Se usarmos a função NoetherCO obtemos neste caso um truı́smo: 0 = const. Exemplo 95. (Oscilador Harmónico com Amortecimento – [20, pp. 432–434]) Consideremos um oscilador harmónico com força de restituição −kx, submerso num lı́quido de tal modo que o movimento da massa m é amortecido por uma força proporcional à sua velocidade. Recorrendo à segunda lei de Newton obtém-se, como equação de movimento, a equação diferencial de Euler-Lagrange associada ao seguinte Lagrangeano [20, pp. 432–434]: > L:=1/2 * (m*v^2-k*x^2)*exp((a/m)*t); L := at 1 mv 2 − kx2 e m 2 Para determinar um primeiro integral da equação de Euler-Lagrange, encontramos os gerR adores infinitesimais sob os quais a funcional integral J[x(·)] = Ldt é invariante: > SimetriaCO(L,v,t,x,v); (−C4 − C2 − C3 ) a − 2 mC1 + C3 + C2 + C4 , X = C1 x Ψ = −ψ C1 , U = C1 v, T = a > simplify(%); 2 mC1 Ψ = −ψ C1 , U = C1 v, T = − , X = C1 x a Pelo Teorema de Noether (Teorema 88) obtemos o primeiro integral 134 Controlo Óptimo > LC:=NoetherCO(L,v,t,x,v,%); at 2 2 LC := C1 x(t)ψ(t) + 2 1/2 ψ0 m (v(t)) − k (x(t)) e m + ψ(t)v(t) mC1 a−1 = const O valor de ψ(t) pode, mais uma vez, ser obtido por recurso à condição de máximo. > H:=psi[0]*L+psi(t)*v; at H := 1/2 ψ0 mv 2 − kx2 e m + ψ(t)v > solve(diff(H,v)=0,{psi(t)}); n o at ψ(t) = −ψ0 mve m > simplify(subs(%,v(t)=diff(x(t),t),v=diff(x(t),t),LC)); −C1 ψ0 me at m x(t) ! 2 d d 2 x(t) a + m x(t) + k (x(t)) a−1 = const dt dt Dando, por fim, um valor apropriado à constante de integração > subs(C[1]=a/(2*m*psi[0]),%); −1/2 e at m x(t) ! 2 d d 2 = const x(t) a + m x(t) + k (x(t)) dt dt obtemos a lei de conservação para o Oscilador Harmónico com Amortecimento. Capı́tulo 4 Um problema da Economia Para terminar o curso escolhemos um problema da Economia, retirado de [19], e ilustramos como ele pode ser abordado usando cada um dos três paradigmas da Optimização Dinâmica: Cálculo das Variações, Controlo Óptimo e Programação Dinâmica. O Cálculo das Variações (Capı́tulo 2) deve muito ao matemático do século XVIII Euler, mas muito do seu desenvolvimento foi feito nos séculos posteriores. O Cálculo das Variações continua hoje uma área de investigação muito activa. A teoria do Controlo Óptimo (Capı́tulo 3), desenvolvida por Pontryagin e seus colaboradores em finais dos anos cinquenta do século XX, pode ser vista como uma generalização do Cálculo das Variações: não apenas o seu campo de aplicação foi alargado, mas também os problemas são olhados de uma perspectiva diferente. A Programação Dinâmica foi desenvolvida por Bellman, também nos finais dos anos cinquenta do século XX. Foi pensada primeiramente para lidar com problemas de optimização em tempo discreto (secção 1.5), mas o famoso princı́pio da optimalidade de Bellman também se aplica, como vimos em §3.4, a problemas de tempo contı́nuo. Nesta abordagem a equação de Hamilton-Jacobi-Bellman assume o papel central. O exemplo escolhido mostra bem a ligação da teoria do Controlo Óptimo ao Cálculo das Variações e à Programação Dinâmica, realçando o facto das diferentes abordagens conduzirem ao mesmo resultado. As abordagens do Cálculo das Variações e Controlo Óptimo permitem fazer facilmente todos os cálculos exclusivamente com papel e lápis. Assim o fazemos. Em simultâneo, mostramos também como os resultados podem ser obtidos através do uso do Sistema de Computação Algébrica Maple. A abordagem da Programação Dinâmica conduznos à resolução de uma equação diferencial às derivadas parciais muito difı́cil, o que nos leva a considerar uma versão mais simples do problema. Em §3.1 vimos como todo o problema do Cálculo das Variações pode ser facilmente escrito como um problema de Controlo Óptimo. Sob certas condições, é também possı́vel rescrever um problema de Controlo Óptimo como um problema do Cálculo das Variações. Vejamos 135 136 Um problema da Economia como. No Capı́tulo 3 estudámos o problema de encontrar um par de funções (x(·), u(·)) que minimiza ou maximiza uma funcional integral Z T L (t, x(t), u(t)) dt (4.1) a sob as condições ẋ(t) = ϕ (t, x(t), u(t)) , x(a) = xa , x(T ) = xT , (4.2) (4.3) com u(t) a tomar valores num dado conjunto U . Se assumirmos que U é um conjunto aberto e que a equação (4.2) pode ser invertida de modo a ser possı́vel obter uma igualdade do tipo u(t) = φ (t, x(t), ẋ(t)) , (4.4) podemos substituir (4.4) em L(t, x, u) obtendo L (t, x(t), u(t)) = L (t, x(t), φ (t, x(t), ẋ(t))) . (4.5) O segundo membro de (4.5) é uma função de t, x(t) e ẋ(t). Denotemos esta função por f (t, x(t), ẋ(t)). O problema de Controlo Óptimo (4.1)-(4.3) pode então ser escrito como um problema do Cálculo das Variações: encontrar a função x(·) (e por conseguinte ẋ(·)) que minimiza ou maximiza Z T f (t, x(t), ẋ(t)) dt a quando sujeita às condições de fronteira x(a) = xa , x(T ) = xT . Assumimos que f (·, ·, ·) possui derivadas parciais contı́nuas de segunda ordem. Nos proble- mas de Controlo Óptimo é usual assumir que as funções x(·) são meramente seccionalmente diferenciáveis: x(·) ∈ P C 1 ([a, T ]). No Cálculo das Variações clássico é comum restringir-se mais a classe das funções admissı́veis, exigindo-se normalmente que as funções x(·) possuam derivadas contı́nuas de segunda ordem para todo o t ∈ [a, T ]: x(·) ∈ C 2 ([a, T ]). É esta última suposição a considerada aqui. 4.1 O problema O problema consiste em encontrar u : [0, T ] → R+ que maximiza V [u(·)] = Z T 0 e−δt ln (u(t)) dt (4.6) 4.2 Determinação da extremal via Cálculo das Variações 137 sujeita a ẋ(t) = rx(t) − u(t) , x(0) = x0 , (4.7) x(T ) = xT , (4.8) com δ > 0, r, x0 e xT dados. O controlo toma valores num aberto: u(t) > 0 para todo o t ∈ [0, T ]. O significado económico do problema é explicado em [19, Cap. 5]. 4.2 Determinação da extremal via Cálculo das Variações Antes de mais, temos de escrever o problema (4.6)-(4.8) no formato do Cálculo das Variações. É muito fácil, de (4.7), tirar o controlo em função da variável de estado e sua derivada: u(t) = rx(t) − ẋ(t) . (4.9) Usando o método descrito na introdução a este capı́tulo, obtemos o seguinte problema equivalente: J[x(·)] = Z T 0 e−δt ln (rx(t) − ẋ(t)) dt −→ max , x(0) = x0 , x(T ) = xT , δ > 0. (4.10) (4.11) Aplicando a equação de Euler-Lagrange (2.2) a (4.10) obtemos e−δt r (rx − ẋ)−1 = d −δt −e (rx − ẋ)−1 = δe−δt (rx − ẋ)−1 + e−δt (rx − ẋ)−2 (rẋ − ẍ) , dt que conduz à equação diferencial linear de segunda ordem r = δ + (rx − ẋ)−1 (rẋ − ẍ) ⇔ (r − δ)(rx − ẋ) = rẋ − ẍ ⇔ ẍ − rẋ + r2 x − rẋ − rδx + δ ẋ = 0 (4.12) ⇔ ẍ − (2r − δ) ẋ + r (r − δ) x = 0 . O polinómio caracterı́stico é λ2 − (2r − δ)λ + r(r − δ) = 0, que tem raı́zes λ = r − δ e λ = r: λ= (2r − δ) ± p √ (2r − δ)2 − 4r(r − δ) (2r − δ) ± 4r2 − 4rδ + δ 2 − 4r2 + 4rδ = 2 2 2r − δ ± δ ⇔λ= . 2 Em Maple determinamos as raı́zes fazendo: > solve(lambda^2 - (2*r - delta) * lambda + r*(r - delta) = 0,lambda); 138 Um problema da Economia r,r − δ Por conseguinte, a solução geral da equação diferencial ordinária (4.12) é dada por x(t) = αert + βe(r−δ)t , com α e β constantes, a determinar por intermédio das condições de fronteira (4.11): x0 = α + β , xT = αerT + βe(r−δ)T . (4.13) Resolvendo (4.13) em ordem a α e β obtemos: α= xT e−rT − x0 e−δT , 1 − e−δT β= A extremal de Euler-Lagrange é então: x(t) = x0 − xT e−rT . 1 − e−δT xT e−rT − x0 e−δT rt x0 − xT e−rT (r−δ)t e + e . 1 − e−δT 1 − e−δT (4.14) O correspondente controlo extremal u(t) é facilmente obtido usando a expressão (4.9). Podemos obter facilmente (4.14) por intermédio do Maple: basta resolver a equação diferencial (4.12) com as condições de fronteira (4.11): > eqEL := diff(x(t),t,t)-(2*r-delta)*diff(x(t),t)+r*(r-delta)*x(t) = 0: > dsolve({eqEL,x(0)=x[0],x(T)=x[T]},x(t)); x0 e(r−δ)T − xT ert −xT + erT x0 e(r−δ)t x (t) = − + erT − e(r−δ)T erT − e(r−δ)T Ainda outra maneira, seria usar a função Maple EulerLagrange definida no Apêndice E: > L := exp(-delta*t)*ln(r*x-v): > dsolve({EulerLagrange(L,t,x,v),x(0)=x[0],x(T)=x[T]},x(t)); −x0 e(−δ+r)T + xT ert xT − erT x0 e(−δ+r)t x (t) = − + −erT + e(−δ+r)T −erT + e(−δ+r)T 4.3 Determinação da extremal via Controlo Óptimo O Hamiltoniano (3.7) associado ao problema (4.6)-(4.8) é dado por H(t, x, u, ψ0 , ψ) = ψ0 e−δt ln(u) + ψ (rx − u) . Se quisermos usar o Maple, podemos usar a função PMP definida por nós no Apêndice F: 4.3 Determinação da extremal via Controlo Óptimo 139 > restart; > L := exp(-delta*t)*ln(u): > phi := r*x-u: > PMP(L,phi,t,x,u,evalH); ψ0 e−δ t ln (u) + (rx − u) ψ A condição de máximo do Princı́pio do Máximo de Pontryagin implica a condição de estacionaridade ∂H ∂u = 0: ψ0 e−δt − ψ(t) = 0 . u(t) (4.15) Usando o nossa função PMP fazemos: > PMP(L,phi,t,x,u,evalH); > R := PMP(L,phi,t,x,u,evalSyst): Em conformidade com o descrito no Apêndice F, R é uma lista com 3 elementos: o primeiro elemento é o sistema de controlo, o segundo elemento o sistema adjunto e o terceiro a condição de estacionaridade. A igualdade (4.15) é então obtida fazendo > R[3]; ψ0 e−δ t −ψ =0 u Para visualizarmos a variável independente t usamos o parâmetro opcional showt: > PMP(L,phi,t,x,u,evalSyst,showt)[3]; ψ0 e−δ t − ψ (t) = 0 u (t) Concluı́mos de imediato que não existem extremais anormais: se ψ0 fosse zero então a igualdade (4.15) implicaria que ψ ≡ 0, o que não é uma possibilidade admitida pelo Princı́pio do Máximo de Pontryagin – os multiplicadores não podem ser todos simultaneamente nulos. Em termos da nossa função PMP, significa que podemos (e devemos) usar o parâmetro noabn (“no abnormal”). Logo, ψ(t) = e−δt . u(t) (4.16) O sistema adjunto toma a forma ψ̇(t) = −rψ(t) (4.17) 140 Um problema da Economia cuja solução é ψ(t) = ψ(0)e−rt . (4.18) Em Maple podemos fazer > sa := PMP(L,phi,t,x,u,evalSyst,showt,noabn)[2]; d − ψ (t) = rψ (t) dt > dsolve(sa); ψ (t) = C1 e−rt Substituindo (4.18) em (4.16) obtemos o controlo extremal: u(t) = e−δt 1 (r−δ)t ⇔ u(t) = e . −rt ψ(0)e ψ(0) (4.19) A trajectória extremal é obtida substituindo (4.19) em (4.7): ẋ(t) − rx(t) = − (ψ(0))−1 e(r−δ)t . (4.20) A equação homogénea, ẋ(t) − rx(t) = 0, tem solução xh (t) = Aert . Uma solução particular de (4.20) é e(r−δ)t , δψ(0) pelo que a solução geral da equação diferencial ordinária (4.20) é dada por x(t) = xh (t)+xp (t): xp (t) = x(t) = e(r−δ)t + Aert . δψ(0) (4.21) As constantes A e ψ(0) são determinadas usando as condições de fronteira (4.8): 1 x + A, = δψ(0) 0 (r−δ)T x + AerT . =e T δψ(0) Resolvendo estas duas equações obtemos 1 x0 − xT e−rT = , δψ(0) 1 − e−δT A= xT e−rT − x0 e−δT , 1 − e−δT e concluı́mos que a trajectória extremal de Pontryagin (4.21) coincide com a extremal de Euler-Lagrange (4.14). As extremais de Pontryagin encontradas são facilmente determinadas com a ajuda da nossa função PMP (Apêndice F): > PMP(L,phi,t,x,u,showt,noabn,explicit); ( −rt ψ (t) = C2 e 1 , x (t) = , u (t) = − C2 e−rt eδ t e−t(δ+r) + C1 − δ C2 e−rt ! rt e ) 4.4 Determinação da extremal via Programação Dinâmica 4.4 141 Determinação da extremal via Programação Dinâmica Para um problema Z T 0 L (t, x(t), u(t)) dt −→ max , ẋ(t) = ϕ (t, x(t), u(t)) , x(0) = x0 , u(t) ∈ U , x(T ) = xT que não admita extremais anormais (ψ0 = 1), como é o caso do problema estudado neste capı́tulo, a equação de Hamilton-Jacobi-Bellman toma a forma ∂S ∂S (t, x) + max H t, x, u, (t, x) = 0 , u∈U ∂t ∂x (4.22) com H(t, x, u, ψ) = L(t, x, u) + ψϕ(t, x, u) o Hamiltoniano. A equação (4.22) é uma equação às derivadas parciais, uma vez que envolve as derivadas parciais de S(t, x) em ordem a t e a x. De um modo geral (o que acontece aliás para o problema concreto (4.6)-(4.8) que estudamos) este tipo de equação é difı́cil de resolver, mesmo quando L(·, ·, ·) e ϕ(·, ·, ·) são funções simples. Para o problema (4.6)-(4.8) fazemos: > restart; > L := (t,x,u) -> exp(-delta*t)*ln(u): > phi := (t,x,u) -> r*x-u: > H := (t,x,u,psi) -> L(t,x,u) + psi*phi(t,x,u): > HJB := diff(S(t,x),t)+H(t,x,u,diff(S(t,x),x)); ∂ S (t, x) + e−δ t ln (u) + ∂t ∂ S (t, x) (rx − u) ∂x A condição necessária de primeira ordem dá-nos u em função de t e x > u := solve(diff(HJB,u)=0,u); u := e−δ t ∂ ∂x S (t, x) e a equação de Hamilton-Jacobi-Bellman a resolver toma a forma > simplify(HJB=0); ∂ S (t, x) + e−δ t ln ∂t e−δ t ∂ ∂x S (t, x) ! + rx ∂ S (t, x) − e−δ t = 0 ∂x O Maple não é capaz de resolver tal equação diferencial (não devolve nada): 142 Um problema da Economia > pdsolve(%); Para ilustrar o uso da Programação Dinâmica em tempo contı́nuo precisamos de considerar um problema mais simples. Vamos considerar o problema que se obtém de (4.6)-(4.8) fazendo δ = r = 0: V [u(·)] = Z T ln (u(t)) dt −→ max , 0 ẋ(t) = −u(t) , x(0) = x0 , (4.23) x(T ) = xT . A equação de Hamilton-Jacobi-Bellman diz-nos que temos de maximizar em u, para todo o u > 0, a expressão > restart; > L := (t,x,u) -> ln(u): > phi := (t,x,u) -> -u: > H := (t,x,u,psi) -> L(t,x,u) + psi*phi(t,x,u): > HJB := diff(S(t,x),t)+H(t,x,u,diff(S(t,x),x)); ∂ S (t, x) + ln (u) − ∂t A condição necessária de primeira ordem dá-nos ∂ S (t, x) u ∂x > u := solve(diff(HJB,u)=0,u); u := −1 ∂ S (t, x) ∂x e o método resume-se a resolver a equação às derivadas parciais > eq := simplify(HJB=0); ∂ S (t, x) + ln ∂t −1 ! ∂ S (t, x) −1=0 ∂x Resolvendo a equação diferencial anterior obtemos S(t, x) e, deste modo, u = > s := pdsolve(eq,build); S (t, x) = −t ln c 2 −1 + t + C1 + c 2 x + C2 ∂S −1 : ∂x 4.5 Conclusão 143 > S(t,x) := rhs(s): > u; 1 c2 Temos então que o controlo extremal é uma constante. Substituindo a expressão de u no sistema de controlo, obtemos uma equação diferencial ordinária cuja solução nos conduz à trajectória extremal: > edo := diff(x(t),t) = phi(t,x(t),u): > ext := dsolve(edo); x (t) = − t + C1 c2 As constantes c2 e C1 são determinadas pelas condições de fronteira: > x := unapply(rhs(ext),t): > const := solve({x(0)=x[0],x(T)=x[T]},{_c[2],_C1}); C1 = x0 , c 2 = − T −x0 + xT Concluı́mos então que a trajectória extremal para o problema (4.23) é > subs(const,x(t)); (−x0 + xT ) t + x0 T e o controlo extremal dado por > subs(const,u); − 4.5 −x0 + xT T Conclusão O Cálculo das Variações, a Programação Dinâmica e o Controlo Óptimo – os três paradigmas da Optimização Dinâmica – proporcionam três abordagens diferentes ao problema, mas 144 Um problema da Economia equivalentes. A abordagem da Programação Dinâmica torna-se a mais complicada, no sentido que envolve a resolução da equação de Hamilton-Jacobi-Bellman, que é uma equação às derivadas parciais. A resolução de equações às derivadas parciais sai fora do âmbito deste curso e recorremos, para isso, ao Sistema de Computação Algébrica Maple. Note-se que apenas encontrámos a extremal, isto é, o candidato a maximizante. Não demonstrámos que a extremal encontrada é de facto solução do problema. Nas aplicações, isto é normalmente suficiente: a extremal tem um tal significado (económico, neste caso) que se torna evidente estarmos realmente perante a solução – veja-se [19, Cap. 5]. Apêndice A Exemplo da componente teórica dos exames A componente teórica dos exames tem a duração de 2 horas. 1. Reescreva o problema do Cálculo das Variações com derivadas de ordem superior (com derivadas até à ordem r, r ≥ 1) no formato do Controlo Óptimo. Use depois o Princı́pio do Máximo de Pontryagin para o caso particular r = 1 (problema fundamental do Cálculo das Variações) e obtenha a condição necessária de Euler-Lagrange. 2. Considere o problema de Controlo Óptimo sem restrições nos valores do controlo. Usando o Princı́pio do Máximo de Pontryagin (em particular o sistema Hamiltoniano e a condição de estacionaridade) demonstre que ao longo das extremais de Pontryagin a derivada total do Hamiltoniano em relação à variável independente t é igual à derivada parcial do Hamiltoniano em relação a t. Obtenha depois a condição necessária clássica de DuBois-Reymond, aplicando a propriedade que acabou de demonstrar ao problema fundamental do Cálculo das Variações. 3. Considere o problema fundamental do Cálculo das Variações. Mostre que quando o Lagrangeano f (x, y, y ′ ) não depende explicitamente da variável independente x (caso autónomo), então f − ∂f ′ ∂y ′ y define uma lei de conservação. 4. Determine as extremais para os seguintes problemas do Cálculo das Variações: 1 + y ′′ (x)2 dx −→ extr, y(0) = 0, y(1) = 1, y ′ (0) = 1, y ′ (1) = 1. R1 R1 1 , y(0) = 0, y(1) = 41 . (b) 0 y ′ (x)2 dx −→ extr, 0 y(x) − y ′ (x)2 dx = 12 (a) R1 0 145 146 Exemplo da componente teórica dos exames 5. Considere o seguinte problema do Cálculo das Variações: Z 1 p F [y(·)] = x 1 + y ′ (x)2 dx −→ extr , −1 y(−1) = α , y(1) = β . Mostre, usando a condição necessária de segunda ordem de Legendre, que este problema não admite nem mı́nimo nem máximo. Apêndice B Exemplo da componente prática dos exames A componente prática dos exames tem a duração de 1 hora e é realizada com o auxı́lio do computador, com recurso ao Sistema de Computação Algébrica Maple. 1. Usando o método dos multiplicadores de Lagrange determine o(s) candidato(s) a extremante (candidato(s) a minimizante ou maximizante) para o seguinte problema: 4 ln x1 + 2x2 + 8x3 −→ extr , 8 − x1 − x2 − 2x3 = 0 , 1 1 − x1 − x3 = 0 . 2 2. Considere o seguinte problema do Cálculo das Variações: Z 3π 2 ẋ2 (t) − x2 (t) dt −→ min , 0 3π 2 ;R , 0, x(·) ∈ C 2 3π x(0) = 0 , x = 0. 2 I[x(·)] = (a) Determine a extremal de Euler-Lagrange x̃(·). (b) Compare o valor de I[x̃(·)] com o valor de I[x̂(·)], onde x̂(t) = sin 2t . Repare 3 3π 3π ∞ que x̂(·) é admissı́vel: x̂(·) ∈ C [0, 2 ]; R , x̂(0) = 0, x̂ 2 = 0. O que pode concluir? Explique. 147 148 Exemplo da componente prática dos exames 3. Considere o seguinte problema de Controlo Óptimo: ẋ (t) = x (t) , 1 2 2 u (t)dt −→ min , 0 ẋ2 (t) = −x1 (t) + u(t) , π π 2 x1 (0) = 0 , x2 (0) = 0 , x1 = 1 , x2 = . 2 2 π Z π 2 (a) Determine as extremais de Pontryagin. (b) Reescreva o problema como um problema do Cálculo das Variações. Determine as extremais de Euler-Lagrange. (c) Escreva a equação de Hamilton-Jacobi-Bellman e, usando o conhecimento da alı́nea (a), determine a sua solução. Obtenha depois o controlo extremal em malha fechada (closed loop) e mostre que ele é equivalente ao controlo extremal em malha aberta (open loop) que obteve na alı́nea (a). Soluções 1. Existe um ponto crı́tico (normal): (x1 , x2 , x3 ) = 1, 6, 21 . 2. (a) Extremal de Euler-Lagrange: x̃(t) ≡ 0. (b) O problema não tem solução. 3. (a) x1 (t) = 2 sin(t)t ; π x2 (t) = 2 sin(t) π + 2 cos(t)t ; π u(t) = 4 cos(t) ; π ψ2 (t) = 2u(t); ψ1 (t) = −ψ̇2 (t). (b) Extremal de Euler-Lagrange: x (t) = 2 sin(t)t . π (c) Equação de Hamilton-Jacobi-Bellman: 1 4 2 ∂S ∂S (t, x1 , x2 ) + (t, x1 , x2 ) x2 ∂x2 ∂x1 ∂S 1 ∂S ∂S + (t, x1 , x2 ) −x1 − (t, x1 , x2 ) + (t, x1 , x2 ) = 0 . ∂x2 2 ∂x2 ∂t 149 Solução da equação de Hamilton-Jacobi-Bellman: h S(t, x1 , x2 ) = −4 8 t + 2 (x1 (t))2 π 2 t + 2 (x2 (t))2 π 2 t + 2 π 2 t − 4 cos (t) x2 (t) π 2 t − 4 tx1 (t) sin (t) π 2 − 8 tx2 (t) π sin (t) + 8 tx1 (t) π cos (t) + 8 sin (t) cos (t) − π 3 (x1 (t))2 + 8 π (cos (t))2 − 4 π − π 3 − 2 (x1 (t))2 sin (t) cos (t) π 2 − π 3 (x2 (t))2 − 8 cos (t) x2 (t) π + 2 cos (t) x2 (t) π 3 + 4 sin (t) x2 (t) π 2 + 2 x1 (t) sin (t) π 3 + 2 (x2 (t))2 sin (t) cos (t) π 2 − 2 π 2 cos (t) sin (t) i i h − 4 π 2 x1 (t) (cos (t))2 x2 (t) / −4 (cos (t))2 + π 2 − 4 π t + 4 t2 π 2 . Controlo extremal em malha fechada h u(t) = −4 −2 tx2 (t) π + 2 tπ cos (t) + 4 t sin (t) + π 2 x2 (t) + 4 cos (t) − π 2 cos (t) − 2 sin (t) π − 2 x2 (t) sin (t) cos (t) π i h i + 2 π x1 (t) (cos (t))2 / π −4 (cos (t))2 + π 2 − 4 π t + 4 t2 . Possı́vel resolução > restart: > # Problema 1 > f := 4*ln(x1)+2*x2+8*x3: > g1 := 8-x1-x2-2*x3: > g2 := 1-(1/2)*x1-x3: > L := lambda0*f+lambda1*g1+lambda2*g2: > eqs := {diff(L,x1)=0,diff(L,x2)=0,diff(L,x3)=0,g1=0,g2=0}: > pc := solve(eqs); > x1 , x2 = 6, λ0 = 0, λ1 = 0, λ2 = 0, x1 = x1 }, 2 1 {λ1 = 2 λ0, x2 = 6, λ2 = 4 λ0, x1 = 1, x3 = , λ0 = λ0} 2 # a primeira soluç~ ao n~ ao interessa, pois > # todos os multiplicadores s~ ao nulos > # a segunda soluç~ ao implica que n~ ao existe caso anormal: > # lambda0 = 0 => lambda1 = 0 > # Logo podemos fazer lambda0 = 1 > v := subs(lambda0=1,pc[2]); pc := {x3 = 1 − e lambda2 = 0. 1 v := {1 = 1, x2 = 6, x1 = 1, x3 = , λ1 = 2, λ2 = 4} 2 150 Exemplo da componente prática dos exames > # ponto crı́tico: (x1,x2,x3) = (1,6,1/2) > #----------------------------------------- > # Problema 2 > > L := (t,x,v) -> v^2-x^2: EL := L -> diff(D[3](L)(t,x(t),diff(x(t),t)),t) - > D[2](L)(t,x(t),diff(x(t),t)) = 0: > #--------------- > # 2(a) > eqEL := EL(L); 2 d eqEL := 2 ( dt 2 x(t)) + 2 x(t) = 0 > dsolve({eqEL,x(0)=0,x((3*Pi)/2)=0}); # extremal de Euler-Lagrange x(t) = 0 > #--------------- > # 2(b) > integral := (x,L) -> int(L(t,x,diff(x,t)),t=0..3*Pi/2): > integral(0,L); # valor da funcional ao longo da extremal de E-L 0 > integral(sin(2*t/3),L); > 5π 12 # a extremal n~ ao pode ser minimizante! > # O problema n~ ao tem soluç~ ao... > #----------------------------------------- > # Problema 3 > restart; > L := u^2: > phi := [x2,-x1+u]: > H := psi0*L+psi1*phi[1]+psi2*phi[2]; − H := ψ0 u2 + ψ1 x2 + ψ2 (−x1 + u) > #--------------- > # 3(a) > S := {x1=x1(t),x2=x2(t),u=u(t),psi1=psi1(t),psi2=psi2(t)}: > ce := subs(S,diff(H,u)=0); ce := 2 ψ0 u(t) + ψ2(t) = 0 > sa1 := diff(psi1(t),t) = - subs(S,diff(H,x1)); 151 sa1 := > d dt ψ1(t) = ψ2(t) sa2 := diff(psi2(t),t) = - subs(S,diff(H,x2)); sa2 := d dt ψ2(t) = −ψ1(t) > # n~ ao existe caso anormal: > u(t) := solve(subs(psi0=-1,ce),u(t)); 1 u(t) := ψ2(t) 2 psis := dsolve({sa1,sa2}); > psi0=0 => psi2=0 => psi1=0 psis := {ψ1(t) = C1 sin(t) + C2 cos(t), ψ2(t) = C1 cos(t) − C2 sin(t)} > sc := diff(x1(t),t)=subs(S,phi)[1],diff(x2(t),t)=subs(S,phi)[2]; 1 d d sc := dt x1(t) = x2(t), dt x2(t) = −x1(t) + ψ2(t) 2 assign(psis); > sc; > > 1 1 C1 cos(t) − C2 sin(t) 2 2 xs := dsolve({sc,x1(0)=0,x2(0)=0,x1(Pi/2)=1,x2(Pi/2)=2/Pi}); 2 sin(t) t 2 sin(t) 2 cos(t) t + , x1(t) = xs := x2(t) = π π π assign(xs); > u(t) := diff(x2(t),t)+x1(t); d dt > x1(t) = x2(t), d dt x2(t) = −x1(t) + u(t) := 4 cos(t) π > #--------------- > # 3(b) > # do sistema de controlo tiramos > # u(t) = diff(x2(t),t)+x1(t) e x2(t) = diff(x1(t),t) > # logo u(t) = diff(x1(t),t,t)+x1(t) > # obtemos ent~ ao o problema do CV escalar > # com derivadas de segunda ordem > # L = (x(t) + diff(x(t),t,t))^2 > LCV := (t,x,v,a) -> (x+a)^2: > arg := (t,x(t),diff(x(t),t),diff(x(t),t,t)); arg := t, x(t), d dt x(t), d2 dt2 x(t) > eqEP := L -> > diff(D[4](L)(arg),t,t)-diff(D[3](L)(arg),t)+D[2](L)(arg)=0: > eqEP := eqEP(LCV); 2 4 d d eqEP := 4 ( dt 2 x(t)) + 2 ( dt4 x(t)) + 2 x(t) = 0 152 Exemplo da componente prática dos exames > dsolve({eqEP,x(0)=0,x(Pi/2)=1,D(x)(0)=0,D(x)(Pi/2)=2/Pi}); > 2 sin(t) t π # Como esperado, x é igual ao x1 encontrado na alı́nea (a) > #--------------- > # 3(c) > restart; > L := u^2: > > phi := [x2,-x1+u]: HJB := > L+D[2](S)(t,x1,x2)*phi[1]+D[3](S)(t,x1,x2)*phi[2]+D[1](S)(t,x1,x2): > > u := solve(diff(HJB,u)=0,u); 1 u := − D3 (S)(t, x1 , x2 ) 2 # Sabendo S sabemos o controlo extremal u > # obtém-se S resolvendo a seguinte PDE > eq := HJB=0; x(t) = 1 1 D3 (S)(t, x1 , x2 )2 + D2 (S)(t, x1 , x2 ) x2 + D3 (S)(t, x1 , x2 ) (−x1 − D3 (S)(t, x1 , x2 )) 4 2 + D1 (S)(t, x1 , x2 ) = 0 > # como a resoluç~ ao da PDE é difı́cil, eq := > # determinamos S a partir da definiç~ ao, > # usando o PMP (alı́nea (a)), e verificando que tal > # S satisfaz a equaç~ ao de Hamilton-Jacobi-Bellman acima > sc := diff(x1(tau),tau) = x2(tau), diff(x2(tau),tau) = > > -x1(tau)+1/2*_C1*cos(tau)-1/2*_C2*sin(tau); 1 1 d d x1(τ ) = x2(τ ), dτ x2(τ ) = −x1(τ ) + C1 cos(τ ) − C2 sin(τ ) sc := dτ 2 2 xs := dsolve({sc,x1(t)=x1t,x2(t)=x2t,x1(Pi/2)=1,x2(Pi/2)=2/Pi}): > assign(xs); > u := diff(x2(tau),tau)+x1(tau): > S := simplify(int(u^2,tau=t..Pi/2)): > S := unapply(S,t,x1t,x2t): > S(t,x1(t),x2(t)); 153 −4(8 t + 2 π 2 t + 2 π 2 x1(t)2 t + 2 π 2 x2(t)2 t − 8 t x2(t) π sin(t) + 8 t x1(t) π cos(t) − 4 cos(t) x2(t) π 2 t − 4 t x1(t) sin(t) π 2 + 8 π cos(t)2 − π 3 − π 3 x2(t)2 − π 3 x1(t)2 + 2 π 2 sin(t) x2(t)2 cos(t) − 4 π + 2 cos(t) x2(t) π 3 − 8 cos(t) x2(t) π + 4 sin(t) x2(t) π 2 − 2 π 2 x1(t)2 sin(t) cos(t) + 8 sin(t) cos(t) + 2 x1(t) sin(t) π 3 . − 4 π 2 x1(t) cos(t)2 x2(t) − 2 π 2 cos(t) sin(t)) ((−4 cos(t)2 + π 2 − 4 π t + 4 t2 ) π 2 ) > # verificamos agora que o S encontrado satisfaz a equaç~ ao de HJB > simplify(eq); 0=0 > # Vamos agora mostrar que o controlo extremal > # u = -(1/2)*D[3](S) obtido pela PD > # coincide com o controlo extremal obtido > # anteriormente pelo PMP e pelo CV > u := simplify(-(1/2)*D[3](S)(t,x1(t),x2(t))); u := −4(−2 π x2(t) t + 4 t sin(t) + 2 t π cos(t) + π 2 x2(t) − 2 π sin(t) x2(t) cos(t) − cos(t) π 2 . + 4 cos(t) − 2 sin(t) π + 2 π x1(t) cos(t)2 ) (π (−4 cos(t)2 + π 2 − 4 π t + 4 t2 )) > # Reparar que existe uma grande diferença > # entre a PD e o método do CO: > # em PD o controlo é dado em funç~ ao > # das variáveis de estado ("closed loop"; controlo em malha fechada); > # em oposiç~ ao ao CO ("open loop"; controlo em malha aberta). > # Substituindo o x1(t) e o x2(t) encontrado pelo CO e CV > # obtemos a mesma express~ ao para o controlo extremal u xs := {x2(t) = 2*sin(t)/Pi+2*cos(t)/Pi*t, x1(t) = > > > 2*sin(t)/Pi*t}; 2 sin(t) t 2 sin(t) 2 cos(t) t + , x1(t) = xs := x2(t) = π π π simplify(subs(xs,u)); 4 cos(t) π Apêndice C Matemática elementar em Maple O curso proposto faz uso do Sistema de Computação Algébrica Maple olhando-o como uma ferramenta ao serviço do ensino e da aprendizagem da Matemática. Damos aqui uma introdução elementar ao Maple, remetendo o leitor interessado num estudo mais aprofundado deste Sistema de Computação Algébrica para [1, 10, 30, 40]. Breve apresentação do Maple O Maple faz parte de uma famı́lia de ambientes computacionais apelidados de Sistemas de Computação Algébrica. Trata-se de uma ferramenta matemática muito poderosa, que permite realizar uma mirı́ade de cálculos simbólicos. Depois de se iniciar uma sessão Maple, o sistema oferece-nos uma “linha de comandos”, muito ao jeito do velhinho DOS (Disk Operating System): > O Maple encontra-se então à espera de ordens. Vejamos, nesta secção introdutória, algumas potencialidades do Maple. Façamos n tomar o valor de 70! (setenta factorial), isto é, o número que resulta do produto dos primeiros 70 inteiros positivos (70! = 1 · 2 · 3 · · · 69 · 70): > n := 70!; n := 1197857166996989179607278372168909873645893814254 6425857555362864628009582789845319680000000000000000 155 156 Matemática elementar em Maple Decomponhamos agora 70! em factores primos (atenção, o Maple é sensı́vel às minúsculasmaiúsculas): > ifactor(n); (2)67 (3)32 (5)16 (7)11 (11)6 (13)5 (17)4 (19)3 (23)3 (29)2 (31)2 (37) (41)(43)(47)(53)(59)(61)(67) Na contra-capa das “Notices of the American Mathematical Society”, Vol. 50, Nr. 1, de Janeiro de 2003, ao fazer-se publicidade a certo livro, aparece a seguinte questão: Quantos dı́gitos tem 100! ? A resposta é facilmente obtida por intermédio do Maple: > length(100!); 158 Vejamos quais os primeiros 200 dı́gitos de π: > evalf(Pi,200); 3.1415926535897932384626433832795028841971693993751058209749445923078164062 862089986280348253421170679821480865132823066470938446095505822317253594081 284811174502841027019385211055596446229489549303820 Podemos achar a expansão de expressões como (a + √ b)15 : > expand((a + sqrt(b))^15); √ a15 + 15 ba14 + 105 ba13 + 455 b3/2 a12 + 1365 b2 a11 + 3003 b5/2 a10 + 5005 b3 a9 +6435 b7/2 a8 + 6435 b4 a7 + 5005 b9/2 a6 + 3003 b5 a5 + 1365 b11/2 a4 + 455 b6 a3 +105 b13/2 a2 + 15 b7 a + b15/2 calcular o valor de somatórios > s := Sum(i^3 * 7^i,i=1...k); 157 k X s := i3 7i i=1 > value(s); 7 k+1 91 k+1 7 k+1 91 7 (k + 1) − 7 − 7 (k + 1)2 + 1/6 (k + 1)3 7k+1 + 9 216 12 216 Muitas outras operações são possı́veis. Vamos dar apenas mais alguns exemplos ilustrativos. Podemos determinar o limite lim x→∞ 3x − 1 x arctan(x) + ln(x) > limit((3*x-1)/(x*arctan(x)+ln(x)),x=infinity); 6 1 π a derivada de cos x3 ln(1 − x5 ) > diff(cos(x^3*ln(1-x^5)),x); a primitiva x7 − sin(x ln(1 − x )) 3 x ln(1 − x ) − 5 1 − x5 3 5 2 5 > p := Int(x^3 * sqrt(x^4 - a^4),x); p := > value(p); Z x3 p x4 − a4 dx 3/2 1 4 x − a4 6 Podemos igualmente resolver o sistema de equações lineares 5x − 3y = 2z + 1 −x + 4y = 7z 3x + 5y = z 158 Matemática elementar em Maple > equacoes := {5*x-3*y=2*z+1,-x+4*y=7*z,3*x+5*y=z}: Todos os comandos em Maple terminam com ; (ponto e vı́rgula) ou com : (dois pontos). Usamos a terminação “:” quando não estamos interessados em ver o resultado do comando. > solve(equacoes,{x,y,z}); 22 1 31 ,y = − ,z = − x= 255 255 15 Por último esboçamos o gráfico da função sin(x3 ) ln(1 + x2 ), x ∈ [−2, 2] > plot(sin(x^3)*ln(1+x^2),x=-2...2); 1.5 1 0.5 –2 –1 0 1 x –0.5 –1 –1.5 Expressões Aritméticas A aritmética em Z é trivial com o Maple. > 5+3; 8 > 5 > > > + 3 ; 2 159 8 São possı́veis várias operações em simultâneo: > 1+10+100+1000; 1111 O que acontece se ocorrer um erro sintáctico? Por exemplo a expressão 5 + +3 não é válida: > 5++3; Error, ‘+‘ unexpected O Maple escreve uma mensagem de erro e posiciona o cursor imediatamente atrás do primeiro caracter incorrecto (neste caso o cursor fica posicionado entre os dois sinais de mais). O Maple diagnostica um erro de cada vez. Por este motivo, eliminar todos os erros sintácticos de uma expressão pode requerer várias fases. Os caracteres + - * / denotam as quatro operações aritméticas básicas: adição, subtracção, multiplicação e divisão, respectivamente. Uma expressão pode conter um número arbitrário de operadores, o que pode criar um problema de representação. Por exemplo o significado das expressões Maple > 8+4+2: > 8*4*2: é claro. Mas o que significa a seguinte expressão Maple? > 8/4/2: Traduzindo literalmente para a notação matemática, obtemos um objecto bizarro: 8 4 2 A ambiguidade surge porque a divisão, ao contrário da adição e multiplicação, e tal como a subtracção, não é associativa: (a/b)/c é, em geral, diferente de a/(b/c). > (8/4)/2; 1 160 Matemática elementar em Maple > 8/(4/2); 4 O Maple realiza sempre a divisão da esquerda para a direita: > 8/4/2; 1 O Maple é muito tolerante a parênteses redundantes: > (((((8/((((4)))))))))/(((2))); 1 Apenas parênteses curvos são permitidos. Os parênteses rectos e as chavetas têm, como veremos mais tarde, um significado especial em Maple e, por isso, não podem ser usados para colocar expressões entre parêntesis. Às vezes o Maple insiste que os parênteses sejam usados, mesmo se a ambiguidade esteja, em princı́pio, resolvida. Por exemplo, não podemos escrever 3 × (−2) sem parêntesis, embora a expressão tenha apenas uma interpretação que conduz ao valor −6: > 3*-2; Error, ‘-‘ unexpected O operador exponenciação é representado pelo caracter ^ . Por exemplo 2^14 significa 214 . A exponenciação não é associativa mas, de modo diferente ao que acontece com a divisão e subtracção, o Maple exige que se usem parênteses numa sequência de exponenciais: > 2^2^3; Error, ’ˆ’ unexpected > 2^(2^3); 256 161 > (2^2)^3; 64 O Maple não é uma calculadora normal. Isso torna-se claro quando calculamos algo como > 2^1279-1; e recebemos como resposta um número com 386 dı́gitos. Como o resultado não cabe em apenas uma linha, o Maple usa o caracter \ para indicar a continuação na linha seguinte. > 100 > 00 + 1; Error, unexpected number Obtemos um mensagem de erro pois 100 00+1 não é uma expressão válida. Usando o caracter de continuação de linha obtemos: > 100\ > 00 + 1; 10001 A expressão 2^1279-1 acima contém dois operadores distintos: exponenciação e subtracção. Qual das duas possibilidades é considerada pelo Maple: 21279 − 1 ou 21279−1 = 21278 ? O Maple dá prioridade à exponenciação: > 3-2^5; −29 > (3-2)^5; 1 No caso de existir mais do que um operador, a ordem de cálculo da expressão é: (1) exponenciação (2) multiplicação, divisão 162 Matemática elementar em Maple (3) adição, subtracção, negação (mudança de sinal) Se aparecer mais do que um operador com a mesma prioridade, o cálculo é realizado da esquerda para a direita para as operações dos grupos (2) e (3). Sequências do operador exponenciação não são, como já mencionámos, válidas: devem ser usados parênteses. Uma sub-expressão entre parênteses é sempre realizada em primeiro lugar e, se existir mais do que uma, com prioridade da esquerda para a direita. Exemplo 96. Uma expressão Maple correspondente à expressão matemática 23×4−5 + 6 7×8 (C.1) é obtida usando, pelo menos, três parênteses (verifique que não é possı́vel obter (C.1) com menos do que três parênteses): > (2^(3*4-5)+6)/(7*8); 67 28 Variáveis e Comentários O caracter % é chamado de variável ditto e pode ser usado em qualquer expressão para representar o valor do resultado do último comando (tem, por isso, um significado completamente distinto da percentagem das máquinas de calcular!): > 51^2+80^2-1; 9000 > %/1000; 9 Reparar que no último comando não é necessário parênteses: é o valor que é substituı́do e não a expressão. O Maple suporta as seguintes variáveis ditto: % (valor do resultado do último comando); %% (valor do resultado do penúltimo comando); %%% (valor do resultado do antepenúltimo comando). Quatro ou mais sinais de percentagem não têm significado. Exemplo 97. O valor da expressão (123 + 13 ) − (103 + 93 ) pode ser calculado com recurso a variáveis ditto da seguinte maneira (repare que não é usado qualquer parênteses): 163 > 12^3+1^3: > 10^3+9^3: > %%-%; 0 Exemplo 98. O valor da expressão aninhada ((((1 + 1) × 2 + 1) × 3 + 1) × 4 + 1) × 5 pode ser calculado da seguinte maneira: > 1: (%+1)*2: (%+1)*3: (%+1)*4: (%+1)*5; 325 O exemplo anterior mostra que são possı́veis vários comandos numa mesma linha de entrada. É também possı́vel um único comando apresentar vários valores à saı́da. O próximo exemplo mostra dois comandos na mesma linha de entrada: o primeiro comando não apresenta saı́da (termina com dois pontos) e o segundo apresenta dois valores de saı́da (notar o uso da vı́rgula) > 1+1: %/2, %; 1, 2 Comparar o exemplo anterior com o seguinte: > 1+1: %/2; %%; 1 2 Os comentários são inseridos através do caracter # > 1+1; # isto deve dar dois 2 Podem ser inseridos comentários na saı́da usando aspas: > "um mais um sao dois", 1+1; # isto e’ um comentario 164 Matemática elementar em Maple ”um mais um sao dois”, 2 O Maple oferece grande liberdade na escolha de nomes para as variáveis. Os nomes das variáveis devem começar por uma letra e podem depois ser seguidos por letras, dı́gitos, hı́fens, etc. O Maple é sensı́vel a minúsculas-maiúsculas, pelo que Aa aA aa AA são nomes de variáveis diferentes. Vejamos alguns exemplos: > primeiro_quadrado := 15140424455100^2: > SegundoQuadrado := 158070671986249^2: > 109 * primeiro_quadrado - SegundoQuadrado; −1 Não podem ser usadas variáveis cujo nome coincide com uma palavra reservada do Maple ou com funções pré-definidas (e.g., and from sin cos tan): > and := 3; Error, reserved word ‘and‘ unexpected Vejamos a diferença entre pi e Pi: > pi := 3; # a variavel cujo nome e’ o caracter grego pi, toma o valor 3 π := 3 > Pi := 3; Error, attempting to assign to ‘Pi‘ which is protected > evalf(Pi,5); 3.1416 > evalf(pi,5); 165 π Uma variável volta ao seu estado indeterminado através do uso de plicas: > a := 3: > 2-a^a; −25 > a := ’a’: # Retorna a ao seu estado indeterminado > 2-a^a; 2 − aa > y := 3: > y + ’y’; 3+y Atenção ao uso de definições recursivas. O comando que se segue faz todo o sentido > y := 2: y:= y + 1; y := 3 mas o próximo não! (perceba porquê) > perigosa:= perigosa + 1; Error, recursive assignment Substituições A função do Maple subs permite substituir sub-expressões numa expressão: > s := x+y+x^2+y^2+x*y; s := x + y + x2 + y 2 + xy 166 Matemática elementar em Maple > subs(x=100,y=99,s); 29900 > s; x + y + x2 + y 2 + xy > subs(x=1,s) - subs(y=z^2,s); 2 + 2 y + y 2 − x − z 2 − x2 − z 4 − xz 2 > x:=100:y:=99:s; 29900 > x:=’x’: y:=’y’: s; x + y + x2 + y 2 + xy Existem dois tipos de substituições: as substituições sequenciais (em que a ordem importa) > subs(a=b,b=c,a+b+c); 3c > subs(b=c,a=b,a+b+c); b + 2c e as substituições múltiplas (que se obtêm por recurso às chavetas) em que a ordem é irrelevante. Vejamos a diferença: > subs(a=b,b=c,c=a,a^3+b^2+c); # substituicao simultanea a3 + a2 + a > subs({a=b,b=c,c=a},a^3+b^2+c); # substituicao multipla b3 + c2 + a 167 Exemplo 99. O valor de 4 1 1 2 −a +b − a2 b4 1 (b−1)2 9a −b+1 para a = 2 e b = −1 pode ser calculado da seguinte maneira: > 1/a^2-a: > 4*%*subs(a=-b^2,%)-9*a/subs(a=b-1,%): > subs(a=2,b=-1,%); −22 Expressões Relacionais Problema 100. Qual dos dois é maior: 21000 ou 3600 ? Uma maneira óbvia de resolver o problema é: > 2^1000 - 3^600; 1071508607186265447020721164266013135159412775893191176596847289092195254433 9378013021020630393279855155792260144674660521283480997012761366896884455647 4896643683504041891476004774607370328258849808361835448896312841168479736329 34417856017249719920313704260788202771289845415370457786694613325762937375 Como o resultado é um número positivo, concluı́mos que 21000 > 3600 . A desvantagem desta resolução é que calculamos um número com 302 dı́gitos quando na verdade apenas precisávamos de saber o seu sinal! O Maple oferece a possibilidade de obter respostas directas a questões deste tipo, através da função evalb (“evaluate to boolean”): > evalb(2^1000 > 3^600); true A expressão 2^1000 > 3^600 é um exemplo de uma expressão relacional : uma expressão que liga dados numéricos e lógicos. De uma maneira geral, uma expressão relacional consiste de duas expressões aritméticas que são comparadas por meio de um operador relacional. Existem três possibilidades: 168 Matemática elementar em Maple 1. A relação é satisfeita: o Maple retorna true; 2. A relação não é satisfeita: o Maple retorna f alse; 3. O Maple tem dificuldade em decidir e retorna F AIL. Os operadores relacionais do Maple mais usados são: = <> < > <= >= Para calcular o valor de uma expressão relacional é necessário usar a função evalb > evalb(-3 < -2), evalb(-3 = -2); true, f alse Deste modo temos a possibilidade de lidar com equações ou inequações e manipulá-las algebricamente > 1 + 1 = z; x < -3*y^2; 2=z x < −3 y 2 > %% + %; 2 + x < z − 3 y2 Para calcular distâncias usamos a função valor absoluto que é implementada em Maple por abs > abs(-12), abs(53*9100^2 - 66249^2); 12, 1 Exemplo 101. Seja n = 100100 . Qual dos números n1 = 10199 ou n2 = 99101 está mais próximo de n? 169 > n := 100^100: n1 := 101^99: n2 := 99^101: > evalb(abs(n-n1)<abs(n-n2)); true Concluı́mos então que n1 está mais próximo de n do que n2 . Divisibilidade Dados dois inteiros d e n dizemos que d divide n (ou que d é divisor de n; ou que n é múltiplo de d) se existir um inteiro q tal que n = dq. A q chamamos quociente da divisão de n por d. Quando d divide n escrevemos d|n Podemos então escrever, por exemplo, que 3|21. Um inteiro é par se é divisı́vel por 2; ı́mpar se não. Se d|n então −d|n. Por esta razão é usual considerar apenas os divisores positivos. Um divisor próprio d de n é um divisor diferente de 1 e diferente de n. Exemplo 102. O 0 tem infinitos divisores; 1 tem 1 divisor; 12 tem 6 divisores (1,2,3,4,6,12) – quatro dos quais são próprios; 11 tem dois divisores (nenhum divisor próprio). A divisibilidade tem uma interpretação geométrica simples: se d|n então podemos organizar n pontos no plano de forma a formar um array rectangular com d linhas. Se mudarmos linhas e colunas (se rodarmos o array de 90o ) obtemos um novo array com q = Desta interpretação geométrica concluı́mos que os divisores vêm aos pares: d|n ⇒ Uma vez que a cada divisor d de n corresponde o divisor gémeo n d, n d linhas. n d |n. podemos concluir que o número de divisores de um inteiro é par? A resposta é não. Isto pelo simples facto que d e n d podem coincidir. Isto acontece quando n é um quadrado. Teorema 103. Um inteiro é um quadrado se, e somente se, tem um número ı́mpar de divisores. O emparelhamento dos divisores tem uma implicação importante. Suponhamos que d|n 2 √ √ com d2 ≤ n ⇔ d ≤ n. Então dn2 ≥ 1 e concluı́mos que nd ≥ n ⇔ nd ≥ n. Isto significa que para encontrarmos todos os divisores de n apenas precisamos de testar a divisibilidade √ dos inteiros d para os quais 1 ≤ d ≤ n. Exemplo 104. Para encontrar todos os divisores de 30 testamos a divisibilidade para d = 1, 2, 3, 4, 5. Os divisores são (1, 30), (2, 15), (3, 10) e (5, 6). Para encontrar os divisores de 36 testamos a divisibilidade para d = 1, 2, 3, 4, 5, 6. Os divisores de 36 são (1, 36), (2, 18), (3, 12), (4, 9) e 6 (número ı́mpar de divisores porque 36 = 62 ). 170 Matemática elementar em Maple Quociente e Resto Para todo o d ∈ N e n ∈ N0 existe um único q e um único r tais que 0≤r<d n = dq + r O q é chamado de quociente e r de resto. Um divisor comum a dois inteiros é um inteiro que divide ambos. Por exemplo, como 3|12 e 3|21 então 3 é divisor comum a 12 e 21. Tem especial interesse o máximo divisor comum entre dois inteiros x e y, denotado usualmente por gcd(x, d) (“greatest common divisor”), que é o maior número entre os divisores comuns de x e y. Por definição, gcd(x, y) = gcd(|x|, |y|); gcd(x, 0) = |x|; gcd(0, 0) = 0. Existe uma relação ı́ntima entre o conceito de divisibilidade e o conceito de gcd. Teorema 105. Se 0 < a ≤ b, então a|b ⇔ gcd(a, b) = a. A definição de máximo divisor comum é extendida a mais do que dois inteiros da maneira óbvia. Dizemos que os inteiros x1 , . . . , xn são primos entre si quando o gcd(x1 , · · · , xn ) = 1. Muito importante também, é o conceito de mı́nimo múltiplo comum entre x e y, denotado usualmente por lcm(x, y) (“least common multiple”): o menor inteiro positivo divisı́vel por x e y. Funções do Maple associadas à divisibilidade Note que nesta secção todas as funções Maple começam com i (o prefixo significa “integer”). O máximo divisor comum e mı́nimo múltiplo comum estão implementados em Maple pelas funções igcd(x1,...,xn) e ilcm(x1,...,xn): > igcd(-15,21), igcd(1,-7), igcd(0,7); 3, 1, 7 Os números 14 e 15 são primos entre si: > igcd(14,15); 1 Repare que 10, 15 e 18 são primos entre si embora nenhum par formado entre eles seja primo entre si: 171 > igcd(10,15,18), igcd(10,15), igcd(10,18), igcd(15,18); 1, 5, 2, 3 Pelo Teorema 105 podemos usar o igcd para testar a divisibilidade. Exemplo 106. 2191 − 1 é divisı́vel por 383? Uma maneira de responder à questão é através do seguinte comando Maple: > evalb(igcd(383,2^191-1) = 383); true O mı́nimo múltiplo comum entre 12 e 21 é 84 > ilcm(12,21); 84 O mı́nimo múltiplo comum entre x (x inteiro arbitrário) e zero é zero: > ilcm(x,0); 0 O quociente e resto da divisão inteira são obtidos, respectivamente, pelas funções iquo e irem. (O Maple também disponibiliza as funções quo e rem, mas elas operam com polinómios e não com inteiros.) As funções do Maple também aceitam argumentos negativos. A definição é: n = dq + r 0 ≤ |r| ≤ |d| , nr ≥ 0 O resto é negativo sempre que n é negativo; o quociente é negativo se n e d têm sinais opostos: > iquo(23,7), iquo(23,-7), iquo(-23,7), iquo(-23,-7); 3, −3, −3, 3 > irem(23,7), irem(23,-7), irem(-23,7), irem(-23,-7); 172 Matemática elementar em Maple 2, 2, −2, −2 Podemos também usar a função irem para resolver o Exercı́cio 106: > evalb(irem(2^191-1,383) = 0); true Racionais que O conjunto Z não é fechado sob a divisão: dados a, b ∈ Z, b 6= 0, em geral não é verdade a b ∈ Z. Somos assim levados à introdução do corpo Q dos números racionais: b Q = x = : a, b ∈ Z e a 6= 0 a A definição de número racional cria um problema de representação: existem infinitos pares de inteiros (a, b) que representam o mesmo racional. Por exemplo, x= −2 2 −4 4 −6 6 = = = = = = ··· 3 −3 6 −6 9 −9 Para resolver este problema de representação, o Maple usa a chamada forma reduzida: dizemos que b a está na forma reduzida quando a é positivo e a e b são primos entre si. Por exemplo a forma reduzida do racional 4 −6 é −2 3 : > 4/(-6); −2 3 As funções numer e denom permitem-nos aceder respectivamente ao numerador e denominador de um racional: > 22/8: numer(%),denom(%); 11, 4 Todo o inteiro é racional. > denom(3); 173 1 Os racionais constituem um novo tipo de objecto em Maple – um novo tipo de dados. > whattype(2), whattype(2/3); integer, f raction Exemplo 107. Pretendemos responder à seguinte questão: 1111|111111111111? Começamos por definir os números inteiros em jogo: > n := 111111111111: d := 1111: Vejamos três maneiras de resolver o problema: > evalb(irem(n,d)=0); # maneira 1 true > evalb(whattype(n/d)=integer); # maneira 2 true > evalb(denom(n/d)=1); # maneira 3 true Dado x = b a ∈ Q podemos encontrar q e r tal que b = qa + r Dividindo por a obtemos: A q chamamos parte inteira de x e a r a b r =q+ a a parte fraccionária de x. A parte fraccionária de x é denotada por {x}. Por exemplo, 2 23 =3+ ⇒ 7 7 23 7 = 2 7 A função Maple frac devolve-nos a parte fraccionária de um racional: 174 Matemática elementar em Maple > frac(23/7); 2 7 Exemplo 108. Por definição, a função frac(x) pré-definida é equivalente ao comando Maple irem(numer(x),denom(x))/denom(x); Exemplo 109. Seja r1 = 21 34 , r2 = 55 89 , r3 = 34 55 . Pretende-se mostrar que r2 está entre r1 e r3 . Isso é conseguido por intermédio dos seguintes comandos Maple: > r1 := 21/34: r2 := 55/89: r3 := 34/55: > evalb(abs(r1-r3) = abs(r1-r2) + abs(r2-r3)); true A distância mı́nima entre dois inteiros é um. Em particular, 1 é o inteiro positivo mais pequeno. Não existe distância mı́nima entre dois racionais e, como consequência, não existe “o racional positivo mais pequeno”. Problema 110. Determinar um racional a uma distância de x = a b (racional dado) inferior a ε. Vejamos uma maneira de abordar o Problema 110. Para qualquer m > 0, x = e os racionais am+1 bm e am−1 bm estão a uma distância 1 bm a b = am bm de x. Escolhendo m suficientemente grande, podemos fazer esta distância tão pequena quanto queiramos. Exemplo 111. Pretendemos encontrar um racional a uma distância de x = 10−4 . Para isso encontramos o menor m para o qual bm > 96 145 inferior a 104 . > a := 96: b:= 145: m := iquo(10^4,b)+1: > (a*m+1)/(b*m); 1325 2001 Primos Um inteiro positivo n > 1 diz-se primo se ele tem precisamente 2 divisores: 1 e n (ou seja, se não tiver divisores próprios). Um número não primo diz-se composto. O Teorema 175 Fundamental da Aritmética diz que qualquer inteiro n maior que 1 pode ser expresso como um produto n = pe11 × pe22 × · · · × pekk (C.2) onde os pi ’s são números primos distintos e os ei ’s são inteiros positivos. Mais, afirma que esta factorização é única a menos da ordem dos factores. Por exemplo, 12 = 22 × 3. Por conveniência, não consideramos 1 como número primo (de outro modo, 12 = 1 × 22 × 3 era uma decomposição em primos diferente!). O número de divisores de n é dado por σ(n) = (e1 + 1) × (e2 + 1) × · · · × (ek + 1) Por exemplo, 84 = 22 × 31 × 71 (p1 = 2, p2 = 3, p3 = 7, e1 = 2, e2 = 1, e3 = 1). Concluı́mos então que 84 tem 12 divisores: σ(84) = 3 × 2 × 2 = 12. Exemplo 112. Pretende-se encontrar a estrutura de todos os inteiros n com 10 divisores. De modo a que (e1 + 1) × (e2 + 1) × · · · × (ek + 1) = 10 = 2 × 5 temos duas possibilidades: ou k = 1 ∧ e1 = 9 ⇒ n = p91 ; ou k = 2 ∧ e1 = 1 ∧ e2 = 4 ⇒ n = p1 × p42 . Em Maple a factorização (C.2) é obtida através da função ifactor: > ifactor(3^52-2^52); (5)(13)2 (53)(79)(1093)(13761229)(29927)(4057) Constata-se é que o Maple é algo desarrumado: os números primos não são mostrados por nenhuma ordem em especial. Exemplo 113. Pretende-se determinar se 31418506212244678577 é, ou não, primo. Uma maneira muito ineficiente de saber a resposta consiste em usar o ifactor: > ifactor(31418506212244678577); (7949)(7927)(7933)(7919)(7937) > expand(%); 31418506212244678577 É possı́vel decidir se um número é primo ou não sem calcular a sua factorização! (A factorização (C.2) é computacionalmente muito exigente, razão pela qual é muito usada nos métodos de criptografia.) Em Maple usamos a função isprime: 176 Matemática elementar em Maple > isprime(31418506212244678577); f alse Em abono da verdade, convém dizer que isprime, por razões de eficiência, executa um algoritmo probabilı́stico e que, por isso, o valor lógico retornado deve ser entendido à luz do “é muito provável que”. Sabe-se no entanto que o isprime, a falhar, será sempre para números com muitas centenas de dı́gitos. Conjuntos em Maple Um conjunto é uma colecção de objectos. A ordem na qual os elementos são listados é irrelevante e, por conseguinte, dois conjuntos são iguais se contêm os mesmos elementos. O Maple suporta o tipo de dados set com a sintaxe habitual da matemática. > T := {1,3,-4}: > whattype(%); set O Maple elimina os elementos repetidos num conjunto > {7,7,0,3,7}; {0, 3, 7} e pode reordenar os elementos: > {-4,3,1}; {−4, 1, 3} Para verificar quando um elemento pertence, ou não, a um conjunto, usamos a função member, que é uma função Booleana. > U := {a,{a,b}}: > member(a,U), member(b,U), member({b,a},U); 177 true, f alse, true O conjunto vazio ∅ é representado em Maple com o abrir e fechar de chavetas. > vazio := {}: Para contar o número de elementos de um conjunto, usamos a função nops (number of operands) > nops(U), nops(vazio); 2, 0 O Maple permite achar a reunião, intersecção e diferença de conjuntos por intermédio, respectivamente, dos operadores union, intersect e minus. A sintaxe é natural e ilustrada nos exemplos seguintes. > A := {1,{1,2}}: > B := {1,{1,3}}: > A union B; {1, {1, 2}, {1, 3}} > A intersect B; {1} > A minus B; {{1, 2}} > B minus A; {{1, 3}} Os conjuntos são muitas vezes definidos por operações sobre outros conjuntos. Por exemplo, sejam a e b reais tais que a < b. O intervalo [a, b[ é a intersecção dos dois conjuntos A e B definidos por A = {x ∈ R : x ≥ a} , B = {x ∈ R : x < b} . 178 Matemática elementar em Maple Da definição de intersecção de dois conjuntos, resulta que x ∈ [a, b[⇔ x ∈ A ∩ B. A condição x ∈ [a, b[ é testada em Maple através do valor (lógico) da expressão lógica > x >= a and x < b: A reunião de dois conjuntos requer uma construção idêntica com o and substituı́do por or; enquanto a diferença entre A e B é lida como x ∈ A and (not x ∈ B). Os operadores lógicos and e or, e o operador lógico unário not, relacionam expressões cujo valor é do tipo Booleano. As seguintes propriedades são satisfeitas: • x and y = y and x • x or y = y or x • not (x and y) = not(x) or not(y) • not (x or y) = not(x) and not(y) Ao existirem vários operadores lógicos numa mesma expressão, eles são considerados pela seguinte ordem: primeiro o not, depois o and, a seguir o or. Os parênteses são usados para alterar as prioridades. As expressões contendo operadores lógicos são identificadas pelo Maple como sendo do tipo lógico. Neste caso elas são calculadas automaticamente, não sendo necessário o uso do evalb. > not (true and false) = (not true) or (not false); true Proposição 114. Se A = {1, 2, 3} e B = {2, 3, 4} então 4 ∈ B \ A. Demonstração. > A := {1,2,3}: B := {2,3,4}: > member(4,B minus A); # 1a demonstracao true > member(4,B) and not member(4,A); # 2a demonstracao 179 true Proposição 115. 83|(341 − 1) e 83 ∤ (241 − 1). Demonstração. > irem(3^41-1,83)=0 and not irem(2^41-1,83)=0; true Reparar que na demonstração da Proposição 115 o comando Maple não necessita do evalb: embora o operador relacional = esteja envolvido, a presença dos operadores lógicos tornam o tipo Booleano da expressão inequı́voco e o Maple calcula o valor lógico automaticamente. Proposição 116. O número n = 10042 + 1 é um número primo da forma 7k + 3 ou 7k + 4 para algum inteiro k. Demonstração. Temos que testar que n é primo e verificar que ao dividirmos n por 7 obtemos resto 3 ou 4. > 1004^2 + 1: > isprime(%) and (irem(%,7)=3 or irem(%,7)=4); true O último comando Maple envolve duas vezes o mesmo cálculo. Podemos evitar o cálculo repetido. Uma demonstração alternativa seria: > 1004^2 + 1: > isprime(%) and member(irem(%,7),{3,4}); true 180 Matemática elementar em Maple Funções definidas pelo utilizador É possı́vel definir no Maple novas funções, a ser usadas em pé de igualdade com as funções pré-definidas. A construção mais simples de funções em Maple usa o operador ->. Vejamos um exemplo. A função f : Z \ {0} → Q x+1 x 7→ x é construı́da em Maple como se segue: > f := x -> (x+1)/x; f := x 7→ x+1 x Estamos perante um novo tipo de dados > whattype(%); procedure A partir do momento que a função é definida, passa a poder ser usada como qualquer uma das funções pré-definidas, substituindo qualquer expressão válida no seu argumento. No nosso exemplo, são válidas expressões aritméticas e algébricas: > f(2/3), f(a), f(ola), f(b^2-1); 5 a + 1 ola + 1 b2 , , , 2 2 a ola b −1 Resultados análogos a uma definição de procedure podem ser obtidos por via de substituições, embora isso seja, a maior parte das vezes, muito menos “elegante”. > f := (x+1)/x: > subs(x=2/3,f), subs(x=a,f), subs(x=ola,f), subs(x=b^2-1,f); b2 5 a + 1 ola + 1 , , , 2 2 a ola b −1 O nome do argumento da função (a variável que aparece imediatamente à esquerda do operador seta) é uma variável muda e, em particular, não está relacionada com nenhuma variável do mesmo nome que possa ter sido previamente definida (em linguagem de programação, diz-se que é uma variável local ). 181 > g := n -> 2*n: > h := oQueSeja -> 2*oQueSeja: > oQueSeja := 3: > g(2), h(2), g(oQueSeja), h(oQueSeja), g(n), h(n); 4, 4, 6, 6, 2n, 2n Erros frequentes são originados por afectações do tipo > erroFrequente(x) := 2*x + 1: O comando Maple é sintacticamente correcto mas não define uma função em Maple: > erroFrequente(x), erroFrequente(2), erroFrequente(1/y); 1 2x + 1, erroF requente(2), erroF requente y O Maple sabe o que é erroFrequente(x), mas nada mais. Esta possibilidade permite definir valores individuais de uma função: uma caracterı́stica útil, como veremos mais tarde, nas chamadas definições recursivas. A função caracterı́stica e a estrutura if Seja A um conjunto e C um seu subconjunto. A função caracterı́stica de C em A, denotada por χC , é definida como se segue: χC : A → {0, 1} 1 se x ∈ C x 7→ 0 se x ∈ /C (C.3) χC : A → {true, f alse} true se x ∈ C x 7→ f alse se x ∈ /C (C.4) Uma variante é a função caracterı́stica Booleana, dada por O cálculo do valor da função caracterı́stica (C.3) ou (C.4) para um determinado x ∈ A envolve um processo de decisão: é preciso decidir se x pertence, ou não, a C e afectar o valor à função χ de acordo. O caso Booleano é mais simples, uma vez que os valores true ou false podem ser 182 Matemática elementar em Maple obtidos por intermédio de uma expressão Booleana. Se o conjunto C for dado explicitamente, então χC (x) é representado em Maple pela expressão member(x,C). Se C é definido por uma certa propriedade, então traduzi-mo-la numa expressão lógica em Maple e adoptamos uma construção do tipo > chi := x -> expressaoLogica: que pode, ou não, requerer o uso do evalb. Exemplo 117. Seja n ∈ Z. Vamos construir a função par(n) cujo valor é true se n é par e false se n é ı́mpar. > par := n -> evalb(irem(n,2)=0): > par(1000), par (555); true, f alse Exemplo 118. Consideremos o intervalo [0, 1[. A sua função caracterı́stica é dada por > intervalo := x -> x >= 0 and x < 1: > intervalo(1/2), intervalo(4/3); true, f alse Notar que o evalb não é necessário aqui, uma vez que está presente o operador lógico and. Para implementarmos em Maple a função caracterı́stica não-Booleana (C.3), recorremos à estrutura if. A sua forma mais simples é: > if expressaoLogica then expressao1 else expressao2 fi: Se expressaoLogica resulta true, então a expressao1 é executada; se ela resulta false, então a expressao2 é executada. O valor da expressaoLogica é determinado automaticamente, i.e., não há necessidade de se usar o evalb. A estrutura if corresponde a um único comando Maple e por isso as expressões não necessitam ser terminadas por : ou ; Exemplo 119. Defina em Maple a função caracterı́stica 1 se x = 0 χ{0} : x 7→ 0 se x 6= 0 183 > chi := x -> if x = 0 then 1 else 0 fi: > chi(0), chi(1); 1, 0 A versão Booleana da mesma função não requer o uso da estrutura if: > chiBooleana := x -> evalb(x = 0): > chiBooleana(0), chiBooleana(1); true, f alse Exemplo 120. A função caracterı́stica Booleana do conjunto dos números primos é dada por isprime. A versão não-Booleana é construı́da com a ajuda do if: > chiPrimos := n -> if isprime(n) then 1 else 0 fi: > chiPrimos(4), chiPrimos(7); 0, 1 Exemplo 121. Vamos definir em Maple a função caracterı́stica de Z em Q: χ : Q → {0, 1} 1 se x ∈ Z x 7→ 0 se x ∈ / Z. Para isso notamos que um inteiro é um racional com denominador igual a 1. > chi := x -> if denom(x) = 1 then 1 else 0 fi: > chi(8/4), chi(8/3), chi(10000); 1, 0, 1 Exemplo 122. Pretende-se agora construir a função nint(x) que retorna o inteiro mais próximo do racional positivo x = ab . Usamos o seguinte raciocı́nio: se a parte fraccionária de x não excede 12 , então o inteiro mais próximo é dado pelo quociente da divisão de a por b; senão, é a mesma quantidade mais um. Para melhorar a legibilidade da definição da função nint, subdividimos o comando Maple por várias linhas de entrada. 184 Matemática elementar em Maple > nint := x -> if frac(x) <= 1/2 then > > iquo(numer(x),denom(x)) else > > iquo(numer(x),denom(x)) + 1 fi: > nint(1/3), nint(2/3); 0, 1 Funções de várias variáveis O operador seta pode ser usado para definir funções de várias variáveis: > f := (x,y) -> x * y: > f(3,z), f(3,5); 3z, 15 Exemplo 123. Queremos construir a função caracterı́stica do conjunto dZ formado pelos inteiros múltiplos de um dado inteiro não nulo d. Usando o facto que irem(x,d) é zero precisamente quando x é múltiplo de d, obtemos > multd := (x,d) -> if irem(x,d) = 0 then 1 else 0 fi: > multd(28,7), multd(29,7); 1, 0 Exemplo 124. Pretendemos agora definir a função caracterı́stica do conjunto dos divisores (positivos ou negativos) de um dado inteiro não nulo n. Uma possı́vel definição é: > divs := (x,n) -> if irem(n,x) = 0 then 1 else 0 fi: > divs(7,28), divs(7,29); 1, 0 Outra alternativa poderá ser > divs := (x,n) -> multd(n,x): 185 Mapeamento dos elementos de um conjunto A imagem f (A) de um conjunto A sob uma função f pode ser construı́da em Maple por intermédio de um comando map. No seguinte exemplo construı́mos a imagem do conjunto {−2, −1, 0, 1, 2} sob a função f : x 7→ x2 . > A := {-2,-1,0,1,2}: > f := x -> x^2: > map(f,A); {0, 1, 4} O primeiro argumento do map é uma expressão do tipo procedure enquanto o segundo argumento é um conjunto. Na situação anterior poderı́amos ter feito directamente: > map(x -> x^2,{-2,-1,0,1,2}); {0, 1, 4} Proposição 125. Seja A = {0, 1, 2, 3, 4, 5}. A função f :A→A x+5 x 7→ resto 6 é uma função sobrejectiva. Demonstração. Temos de mostrar que f (A) = A. > {0,1,2,3,4,5}: > evalb(map(x -> irem(x+5,6),%) = %); true Exemplo 126. Dado um conjunto de números inteiros A pretende-se construir uma função que devolve true se, e somente se, A contém um primo. > contemPrimo := A -> member(true,map(isprime,A)): > contemPrimo({4,6,10}), contemPrimo({3,5,7}); 186 Matemática elementar em Maple f alse, true Quando o primeiro argumento de map é uma função de várias variáveis, então o valor das variáveis que não a primeira devem ser fornecidas ao map numa sequência de argumentos opcionais. Vamos ilustrar esta construção com dois exemplos. Exemplo 127. Dado um conjunto finito A de inteiros e um inteiro n, o valor da expressão Maple map(igcd,A,n) é o conjunto constituı́do pelos máximos divisores comuns de n e cada elemento de A. > map(igcd,{2,3,5},2); {1, 2} Exemplo 128. Seja A um conjunto de inteiros e d um inteiro não nulo. Vamos definir uma função que constrói o conjunto dos racionais obtido dividindo cada elemento de A por d. > divPor := (A,d) -> map((x,y)->x/y,A,d): > divPor({2,4,8},2); {1, 2, 4} Sucessões em Maple Quando o domı́nio de uma função é o conjunto N dos números naturais dizemos que estamos perante uma sucessão. Deste modo uma sucessão f é uma função que associa a cada inteiro positivo n um elemento único f (n) de um dado conjunto. Quando uma função é uma sucessão, é usual em matemática escrever fn em vez de f (n). Na notação usual, f é uma função; n é um elemento do domı́nio; {fn } é a imagem. A restrição do domı́nio de uma sucessão a N pode ser relaxada. Por exemplo, pode ser conveniente restringir o domı́nio a um subconjunto de N; considerar o domı́nio como sendo o conjunto Z dos inteiros, etc. Uma sucessão definida explicitamente por uma expressão, é representada em Maple por uma função tomando inteiros como argumentos: > f := n -> expressao que depende de n: 187 Tal função pode ser, evidentemente, uma função Maple pré-definida ou uma função definida pelo utilizador. A maneira mais fácil de gerar os elementos da sucessão, f1 , f2 , f3 , . . . , fk , . . . é através da chamada à função Maple seq. Vejamos um exemplo. Suponhamos que queremos gerar os primeiros 20 números primos, através da função pré-definida ithprime. Para isso fazemos > seq(ithprime(n),n=1..20); 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71 O comando Maple anterior é equivalente à sucessão de expressões ithprime(1), ithprime(2), . . ., ithprime(20). Exemplo 129. Consideremos a sucessão definida pela função caracterı́stica Booleana do conjunto dos números primos em N: p : N → {true, f alse} true se n é primo n 7→ f alse se n não é primo Pretendemos gerar os elementos p100 , . . . , p120 desta sucessão. O problema é facilmente resolvido em Maple: > seq(isprime(n),n=100..120); f alse, true, f alse, true, f alse, f alse, f alse, true, f alse, true, f alse, f alse, f alse, true, f alse, f alse, f alse, f alse, f alse, f alse, f alse Exemplo 130. Pretendemos gerar os primeiros 15 elementos da sucessão f : n 7→ n+1 , n2 n ≥ 1. O problema é resolvido definindo a função f em Maple e recorrendo depois a um comando seq: > f := n -> (n+1)/(n^2): > seq(f(n),n=1..15); 188 Matemática elementar em Maple 2, 3 4 5 6 7 8 9 10 11 12 13 14 15 16 , , , , , , , , , , , , , 4 9 16 25 36 49 64 81 100 121 144 169 196 225 Exemplo 131. Pretende-se definir em Maple o conjunto C formado pelas primeiras 30 potências não negativas de 2. > C := {seq(2^j,j=0..29)}; C := {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912} O comando seq tem a sintaxe seq(expressao,i=a..b), onde a e b são inteiros (ou expressões que resultam em inteiros). Antes de executar o comando seq o Maple expande a..b numa sucessão de inteiros. Esta sucessão pode ser conseguida explicitamente com o operador $ > $1..15; 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 O seguinte comando Maple gera uma sucessão de conjuntos: > seq({$1..n},n=0..6); {} , {1} , {1, 2} , {1, 2, 3} , {1, 2, 3, 4} , {1, 2, 3, 4, 5} , {1, 2, 3, 4, 5, 6} Quando a > b, a..b resulta numa sucessão NULL. A sucessão NULL pode ser usada explicitamente, o que é útil em inicializações > s := NULL; s := > s := s,1,2,3; s := 1, 2, 3 189 Exemplo 132. Pretendemos construir a função divisores(n) cujo valor é o conjunto dos divisores de um dado inteiro positivo n. (O Maple já disponibiliza esta função no package numtheory. Veja no manual online do Maple o comando divisors. Vamos, mesmo assim, implementá-la. É um bom treino!) Uma maneira fácil (embora extremamente ineficiente...) de resolver o problema consiste em aplicar a função x -> igcd(x,n) ao conjunto dos primeiros n inteiros positivos. Este último conjunto é obtido através do operador $. A aplicação da função a todos os elementos do conjunto é conseguida por intermédio da função map já introduzida anteriormente. Uma vez que o igcd é uma função de duas variáveis, a segunda variável é fornecida como terceiro argumento do map: > divisores := n -> map(igcd,{$1..n},n): > divisores(99); {1, 3, 9, 11, 33, 99} Vamos agora proceder a alguns melhoramentos na eficiência computacional da função divisores acima definida. Em primeiro lugar notamos que estamos a chamar a função igcd n vezes. Além dos divisores triviais 1 e n, todos os outros divisores de n estão entre 2 e n/2. Podemos assim poupar metade do tempo gasto nos vários cálculos do igcd. > divisores := n -> map(igcd,{$2..iquo(n,2)},n) union {1,n}: √ Um melhoramento mais substancial é conseguido calculando os divisores d entre 2 e n e √ depois “emparelhando-os” com os seus divisores gémeos n/d. Para calcular n usamos a função raiz quadrada inteira isqrt. > gemeos := (x,n) -> (igcd(x,n),n/igcd(x,n)): > divisores := n -> map(gemeos,{$2..isqrt(n)},n) union {1,n}: Esta última definição da função divisores é já muito mais eficiente. Ainda temos um pequeno senão que é a função gemeos fazer duas vezes a mesma chamada ao igcd. Veremos mais tarde como resolver este problema, quando dermos alguns elementos rudimentares de programação. Já agora, atente bem ao modo como a função gemeos foi definida. > gemeos(2,16); 2, 8 190 Matemática elementar em Maple Gráficos dos elementos de uma sucessão O Maple disponibiliza a função plot que permite fazer os mais variados gráficos (trata-se de uma função extremamente versátil). Entre as inúmeras possibilidades, o plot permite representar um conjunto discreto de pontos do plano (x1 , y1 ) , (x2 , y2 ) , . . . , (xn , yn ) . (C.5) Um ponto (x, y) do plano Cartesiano é representado como uma lista de dois elementos. A lista é um novo tipo de dados disponibilizado pelo Maple, que consiste numa sucessão de objectos entre parênteses rectos. O ponto (x, y) é então representado em Maple na forma [x,y]. Os pontos (C.5) que pretendemos esboçar por meio do plot, devem também ser organizados numa lista: [[x1 , y1 ] , [x2 , y2 ] , . . . , [xn , yn ]] . Os seguintes comandos geram um quadrado com vértices nos pontos (−1, −1), (1, 0), (0, 2), (−2, 1). > v := [[-1,-1],[1,0],[0,2],[-2,1],[-1,-1]]: > plot(v); 2 1.5 1 0.5 –2 –1.5 –1 –0.5 0 0.5 –0.5 1 –1 > whattype(v); list O Maple liga automaticamente os pontos com um segmento. De modo a obtermos um quadrado introduzimos o vértice (−1, −1) duas vezes. Para fazer-mos um gráfico com os valores u1 , u2 , . . . , un de uma sucessão, consideramos os pontos de coordenadas Cartesianas (1, u1 ) , (2, u2 ) , . . . , (n, un ) . 191 Exemplo 133. Vamos ilustrar graficamente a sucessão n 7→ un = pn+1 − pn (1, 2, . . .), onde pn representa o n-ésimo primo, visualizando os primeiros 300 elementos da sucessão. > u := n -> ithprime(n+1)-ithprime(n): > dados := [seq([n,u(n)],n=1..300)]: > plot(dados,style=POINT,title="Distancia entre primos"); Distancia entre primos 30 25 20 15 10 5 0 50 100 150 200 250 300 A opção style=POINT mostra pontos desconectados. Por defeito o Maple usa a opção style=LINE. No exemplo acima usámos também a opção title que nos permite associar um tı́tulo ao gráfico. Uma análise da figura obtida permite-nos concluir que com o aumento do n aparecem maiores distâncias entre os primos, embora de uma maneira muito irregular. A maior distância entre os dados considerados está localizada entre os primos p200 e o p250 . Para a localizar-mos com maior precisão, vamos fazer um zoom do gráfico, usando agora a estilo LINE para uma melhor visualização. > plot(dados,200..250,15..35,style=LINE,title="Distancia entre primos"); Distancia entre primos 34 32 30 28 26 24 22 20 18 16 200 210 220 230 240 250 192 Matemática elementar em Maple O segundo e terceiro argumentos do plot definem os intervalos respectivamente dos eixos horizontal e vertical. Todas as outras opções devem ser colocadas depois da especificação dos intervalos dos eixos (veja o manual online do Maple para mais informação). Sucessões Periódicas e Definições Recursivas Uma sucessão {an }∞ n=1 diz-se periódica se consistir numa repetição infinita do mesmo padrão finito: a1 , . . . , ak , ak+1 , ak+2 , . . . , ak+T , ak+1 , ak+2 , . . . , ak+T , ak+1 , ak+2 , . . . , ak+T , . . . | {z } | {z } | {z } Vamos chamar transição ao número k e perı́odo ao número T . A periodicidade é expressa concisamente pela notação recursiva an+T = an , n ≥ k + 1. (C.6) A sucessão {an } fica completamente definida por (C.6) especificando os valores de ai para i = 1, . . . , k + T . Exemplo 134. Seja a : N → {−1, 1} n 7→ (−1)n A sucessão é periódica com transição nula (k = 0) e perı́odo dois (T = 2): −1, 1, −1, 1, −1, 1, . . . | {z } | {z } | {z } A sucessão é definida recursivamente como se segue: a1 = −1, a2 = 1 an+2 = an (condições iniciais) n ≥ 1 . (fórmula recursiva) Exemplo 135. Consideremos a sucessão definida pela função caracterı́stica do subconjunto {0} em N0 : > chi := n -> if n = 0 then 1 else 0 fi: A sucessão é periódica com transição 1 e perı́odo 1. > seq(chi(i),i = 0..19); 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 193 Problema 136. Para cada natural n seja Fn o conjunto dos números racionais no intervalo [0, 1] cujo denominador não excede n. Este conjunto, conhecido como conjunto de Farey, pode ser definido como se segue: Fn = p ∈ Q : 1 ≤ q ≤ n, 0 ≤ p ≤ q q . Nesta definição algumas fracções aparecem várias vezes, mas as múltiplas ocorrências são eliminadas de acordo com a definição de conjunto. A função n 7→ Fn define uma sucessão de conjuntos finitos cada um deles contido no seguinte: F1 ⊂ F2 ⊂ F3 ⊂ . . . Os primeiros 3 termos da sucessão são: 0 1 F1 = , 1 1 0 1 1 F2 = , , 1 2 1 0 1 1 2 1 F3 = , , , , 1 3 2 3 1 Pretendemos construir em Maple uma função F(n) cujo valor é o conjunto de Farey Fn . Como sempre, é boa estratégia construir a função passo a passo, o que nos permite ir testando as funcionalidades pretendidas com alguns exemplos e detectar possı́veis erros de estratégia. No final podemos juntar todos os passos numa única definição. Para começar construı́mos uma sucessão contendo todas as fracções com um dado denominador q. Vamos excluir os elementos 0 e 1 para diminuir o número de fracções repetidas na definição da função F(n). > q := 10: > seq(p/q,p=1..q-1); 1 1 3 2 1 3 7 4 9 , , , , , , , , 10 5 10 5 2 5 10 5 10 De seguida vamos incorporar o comando Maple acima numa outra expressão seq que faz variar o valor q (q = 2, . . . , n). Reparar que o q abaixo é uma variável muda (variável local), não dependendo da afectação à variável q que fizemos anteriormente! > n := 3: > seq(seq(p/q,p=1..q-1),q=2..n); 1 1 2 , , 2 3 3 Por fim adicionamos os valores 0 e 1 em falta: 194 Matemática elementar em Maple > {0,1,seq(seq(p/q,p=1..q-1),q=2..n)}; 1 1 2 0, 1, , , 2 3 3 O conjunto visualizado não é mais do que o F3 . Estamos em condições de definir em Maple a função F(n). > F := n-> {0,1,seq(seq(p/q,p=1..q-1),q=2..n)}: > F(5); 1 1 2 3 4 1 2 1 3 0, 1, , , , , , , , , 2 5 5 5 5 3 3 4 4 Definições Recursivas em Maple Até agora temos lidado com sucessões definidas explicitamente por intermédio de uma função: xn = uma função explı́cita de n, n ≥ 1. Esta construção nem sempre é possı́vel. Um caso particular muito interessante, e importante, é o das sucessões definidas recursivamente. Na sua forma mais simples, uma sucessão definida recursivamente tem a forma xn = uma função explı́cita de xn−1 , n ≥ 1, isto é, cada elemento da sucessão é definido de maneira explı́cita à custa do elemento anterior. Uma sucessão deste tipo é apelidada de sucessão recursiva de primeira ordem. As sucessões recursivas de primeira ordem são definidas a partir do momento que especificamos o elemento x0 , chamado de condição inicial. Concretamente, seja x0 = β e xn = f (xn−1 ), n ≥ 1. Os primeiros termos da sucessão são: x0 = β x1 = f (x0 ) = f (β) x2 = f (x1 ) = f (f (β)) x3 = f (x2 ) = f (f (f (β))) .. . Vemos que numa sucessão recursiva a regra que associa a n o elemento xn é: “aplica f a x0 n vezes”. 195 Exemplo 137. Seja f :Z→Z n 7→ −2n + 1 Com condição inicial x0 = −1, a sucessão recursiva correspondente é dada por: x0 = −1 , x1 = f (−1) = 3 , x2 = f (3) = −5 , x3 = f (−5) = 11 , . . . Em Maple podemos fazer: > f := n -> -2*n + 1: > x := -1; x := f(x); x := f(x); x := f(x); x := −1 x := 3 x := −5 x := 11 Outra maneira é usar variáveis ditto: > -1; f(%); f(%); f(%); −1 3 −5 11 Mudando a condição inicial obtemos, obviamente, valores diferentes: > Pi; f(%); f(%); f(%); π −2π + 1 4π − 1 −8π + 3 196 Matemática elementar em Maple Problema 138. Seja ΩA o conjunto de todas as palavras definidas sobre o alfabeto A. Para A = {a, b} definimos a função f : ΩA → ΩA cujo valor em p é a palavra cujas letras são obtidas a partir das de p substituindo cada a por b e cada b por ab. Por exemplo, se p = aaba então f (p) = bbabb. À custa da função f definimos recursivamente a seguinte sucessão: n ≥ 0. (C.7) a , b , ab , bab , abbab , bababbab , . . . (C.8) p0 = p , pn+1 = f (pn ) , Por exemplo para a condição inicial p = a temos: Pretendemos definir a sucessão (C.7) em Maple, representando as palavras como listas cujos elementos são as letras constituintes da palavra. Por exemplo a palavra p = abbb será representada em Maple como > p := [a,b,b,b]: A função f é definida em Maple à custa de uma substituição simultânea: > f := p -> subs({a=b,b=(a,b)},p): > f([a,b,b]); [b, a, b, a, b] Não avance sem perceber porque é que uma substituição sequencial não faz o que se pretende! Note também que a substituição de b por a,b requer o uso de parêntesis: sem eles o Maple dava um erro de sintaxe, pois a virgula é o separador dos elementos do conjunto e {a=b , b=a , b} não codifica uma substituição válida! A construção da sucessão recursiva (C.8) é obtida da maneira usual: > [a]; f(%); f(%); f(%); f(%); f(%); [a] [b] [a, b] [b, a, b] [a, b, b, a, b] [b, a, b, a, b, b, a, b] 197 No caso geral, uma sucessão definida recursivamente em N0 tem a seguinte estrutura: xn = f (xn−1 , xn−2 , . . . , xn−k , n) , n ≥ k. (C.9) A sucessão fica completamente especificada fixando os k valores iniciais x0 , . . ., xk−1 . O inteiro k define a ordem da recursividade. A função f diz-se autónoma quando não depende de n; não-autónoma no caso contrário. Exemplo 139. A sucessão factorial 0! = 1 (n + 1)! = (n + 1) n! , n≥0 é uma sucessão recursiva não-autónoma de primeira ordem. Na notação (C.9) temos f (xn−1 , n) = n xn−1 . Exemplo 140. A sucessão dos números de Fibonacci é definida recursivamente como se segue: F0 = 0 , F1 = 1 Fn+1 = Fn + Fn−1 , n ≥ 1. Na notação (C.9) temos f (xn−1 , xn−2 ) = xn−1 + xn−2 : trata-se de uma sucessão recursiva autónoma de segunda ordem (k = 2 e f não depende directamente de n). Vamos calcular F10 com o Maple: > 0:1:%+%%:%+%%:%+%%:%+%%:%+%%:%+%%:%+%%:%+%%:%+%%; 55 O Maple disponibiliza a função fibonacci no package combinat: > with(combinat): > fibonacci(10); 55 Composição de Funções Como observámos na página 194, numa sucessão recursiva x0 = β , xn = f (xn−1 ) , n ≥ 1 198 Matemática elementar em Maple o elemento xn é obtido aplicando f a x0 n vezes: xn = (f ◦ f ◦ · · · ◦ f )(x0 ) . | {z } n vezes A composição de funções de uma variável é disponibilizada em Maple através do sı́mbolo @, de tal modo que f @g significa f ◦ g ou, na notação de Leibniz, (f @g) (x) significa f (g(x)): no primeiro caso, f @g, não são necessários parêntesis; enquanto no segundo caso, (f @g) (x), ambos os pares parêntesis são necessários. Vejamos um exemplo: > restart; > f := x -> b*x*(1-x): g := x -> x^2: > gf := g@f: # g o f > gf(x); # g(f(x)) b2 x2 (1 − x)2 > (g@f)(x); b2 x2 (1 − x)2 > fg := f@g: > fg(x); bx2 1 − x2 bx2 1 − x2 > (f@g)(x); Composições múltiplas da mesma função são obtidas usando @@n, onde n é um inteiro. Por exemplo a composição de f (f ◦ f ◦ f ) (x) é conseguida em Maple fazendo > (f@@3)(x); b3 x (1 − x) (1 − bx (1 − x)) 1 − b2 x (1 − x) (1 − bx (1 − x)) O valor de x3 da sucessão do Exemplo 137 com x0 = −1 é obtido fazendo 199 > f := n -> -2*n + 1: > (f@@3)(-1); 11 De modo semelhante, o valor de p5 para a sucessão (C.7) do Problema 138 com condição inicial p0 = [a] obtém-se fazendo: > f := p -> subs({a=b,b=(a,b)},p): > (f@@5)([a]); [b, a, b, a, b, b, a, b] Gráficos de funções de variável real Já introduzimos a função plot para representar os elementos de uma sucessão. Para além de dados discretos, a função plot também pode ser usada para esboçar o gráfico de funções de variável real. Para isso o plot espera que lhe passemos a função e o seu domı́nio, respectivamente no primeiro e segundo argumentos. Vamos esboçar o gráfico de uma função com oscilações rápidas. > plot(sin(x)*sin(10*x)*sin(100*x),x=0..Pi); 1 0.5 0 –0.5 –1 0.5 1 1.5 x 2 2.5 3 200 Matemática elementar em Maple Suponhamos agora que queremos analisar a forma dos gráficos y = xk (1 − x)k , com k a variar entre 1 e 10. Para isso começamos por criar uma lista de gráficos para k = 1, 2, . . . , 10 e 0 ≤ x ≤ 1. > g := [seq(plot(x^k*(1-x)^k,x=0..1),k=1..10)]: O gráfico de y = x5 (1 − x)5 é obtido com o comando > g[5]; 0.0008 0.0006 0.0004 0.0002 0 0.2 0.4 x 0.6 0.8 1 Mas existem maneiras mais interessantes de usar a nossa lista de gráficos! Com a função display do package plots podemos visualizar os vários gráficos num mesmo esboço e fazer animações. > with(plots): > display(g); 0.25 0.2 0.15 0.1 0.05 0 0.2 0.4 x 0.6 0.8 1 201 Análise de uma expressão Como é que o Maple representa uma expressão como a + 2bc − b3 ? > x := a + 2*b*c - b^3: > whattype(x); + Antes de mais, o Maple olha para x como sendo do tipo soma. Para listar os operandos da expressão, usamos a função op. > op(x); a, 2bc, −b3 > whattype(%); exprseq Vemos que a + 2bc − b3 é representada como a soma de três operandos: a, 2bc e −b3 . A função Maple op permite analisar a estrutura de uma expressão. O comando > op(expressao); devolve os operandos da expressao na forma de uma “expressão sequência” (exprseq). A função op tem um primeiro argumento opcional: o comando > op(n,expressao); devolve o n-ésimo operando da expressão. Por exemplo, > op(2,x); 2bc O primeiro argumento de op pode definir também um intervalo: > op(2..3,x); 202 Matemática elementar em Maple 2bc, −b3 Vamos continuar a análise da expressão a + 2bc − b3 , olhando individualmente para os seus operandos. > primeiro := op(1,x): > segundo := op(2,x): > terceiro := op(3,x): O primeiro operando a não tem estrutura interna. O seu tipo de dados é primitivo > primeiro, op(primeiro), whattype(primeiro); a, a, symbol e a sua análise está, por conseguinte, completa. O segundo operando, 2bc, é uma expressão do tipo produto, consistindo de três operandos: > whattype(segundo); ∗ > op(segundo); 2, b, c Estes operandos são primitivos: > seq(whattype(z),z=%); integer, symbol, symbol O terceiro operando é também um produto > whattype(terceiro); ∗ > op(terceiro); 203 −1, b3 > seq(whattype(z),z=%); integer,ˆ A expressão b3 é do tipo exponenciação, com operandos b e 3: > op(op(2,terceiro)); b, 3 A análise da expressão a+2bc−b3 está agora completa. A sua estrutura pode ser representada numa árvore: o + UUUUUU UUUU ooo o o UUUU oo UUUU o o o UUUU o oo a ⋆? ⋆< || <<< ??? | | ?? << || ?? << || 2 b c −1 b ˆ;; ;;; ;; ; 3 Para alguns tipos de dados compostos, nomeadamente para as listas e conjuntos, o operador de selecção [ ] pode ser usado como alternativa ao op: > L := [um,dois,tres]: > L[3], op(3,L), L[1..2], [op(1..2,L)]; tres, tres, [um, dois], [um, dois] Quando a selecção é realizada especificando um intervalo, o operador de selecção [ ] junta os operandos seleccionados no tipo de dados original: > L[1..1]; [um] O operador de selecção pode ser também usado para afectar um novo valor a um elemento da lista: 204 Matemática elementar em Maple > L[2] := DOIS: > L; [um, DOIS, tres] A afectação directa de valores a elementos de uma lista não é, contudo, eficiente. É preferı́vel recorrer à função Maple subsop (“substitui operando”). Substituições (revisitadas) Já vimos a função subs que permite substituir expressões por outras expressões. A expressão a ser mudada deve aparecer como um operando da expressão original ou como operando de uma das suas sub-expressões. O seguinte exemplo ilustra como o subs opera. O resultado depende da estrutura da expressão. > restart: > expr1 := x*y + z: > expr2 := x*y*z: > whattype(expr1), whattype(expr2); +, ∗ > op(expr1); op(expr2); xy, z x, y, z Notar que xy é uma sub-expressão de expr1 mas não de expr2. Por este motivo, deve ser claro o resultado dos seguintes comandos Maple: > subs(x*y=a,expr1); a+z > subs(x*y=a,expr2); xyz Podemos usar o seguinte truque para substituir xy em expr2: 205 > subs(x=a/y,expr2); az Vejamos outro exemplo: > beta := a*b*c + b*c + (b*c)^3; β := abc + bc + b3 c3 > op(beta); abc, bc, b3 c3 Reparamos que a expressão bc não aparece como sub-expressão do terceiro operando, devido à simplificação realizada pelo Maple. > subs(b = y,beta); ayc + yc + y 3 c3 > subs(b*c = y,beta); abc + y + b3 c3 De modo a realizar uma substituição num operando particular de uma expressão, usa-se a já mencionada função subsop. Por exemplo, se quisermos substituir o terceiro operando de beta por tres fazemos: > subsop(3 = tres,beta); abc + bc + tres O tipo de dados f raction está reservado para os racionais. Uma fracção algébrica é representada pelo Maple como um produto: > 2/3: whattype(%), op(%); 206 Matemática elementar em Maple f raction, 2, 3 > a/b: whattype(%), op(%); ∗, a, 1 b > op(3,[%]): whattype(%), op(%); ˆ, b, −1 Resulta então que a/b é representado pelo Maple como a · b−1 . Funções que actuam sobre os operandos das expressões Existem várias funções em Maple que fazem uso implı́cito do op, actuando de variadas formas sobre os operandos de uma expressão. Vamos considerar aqui as seguintes funções: seq, map, select, remove, evalf. Outras funções (add, mul, sum, prod) serão tratadas em tempo oportuno. Já vimos que o segundo argumento da função seq pode ser um intervalo a..b, que é expandido numa “expressão sequência”; ou uma sequência propriamente dita. Tal argumento pode, contudo, ser uma expressão arbitrária, situação em que o Maple a converte na sequência dos respectivos operandos. Esta caracterı́stica faz do seq uma das funções mais úteis do Maple. Por exemplo, a seguinte função retorna uma sequência com os quadrados de todos os operandos de uma dada expressão: > quadrados := E -> seq(z^2,z=E): > quadrados([a,b,c,d,e]); a2 , b2 , c2 , d2 , e2 > quadrados(a^2 + b*c); a4 , b2 c2 Podemos usar uma expressão sequência directamente no segundo argumento de seq, recorrendo, para isso, a parênteses: 207 > seq(z-1,z=(1,2*4,delfim)); 0, 7, delf im − 1 Os parênteses não são necessários se a sequência for representada simbolicamente por intermédio de uma variável (incluindo as variáveis ditto) > s := 1,8,delfim: > seq(z-1,z=s); 0, 7, delf im − 1 A construção map(f,A) já foi por nós usada para obter a imagem do conjunto A por f . A função map permite, no entanto, um uso mais geral: o segundo argumento pode ser qualquer expressão, não apenas um conjunto. A função map actua sobre os vários operandos, preservando o tipo de dados. É instrutivo comparar o comportamento das funções map e seq, quando chamadas com argumentos similares. > f := x -> x^2: > map(f,a + b + c); a2 + b2 + c2 > seq(f(s),s = a + b + c); a2 , b2 , c2 Enquanto o map preserva a estrutura da expressão, o seq transforma-a numa expressão sequência (exprseq). Problema 141. Dada uma lista L com dados numéricos, pretende-se substituir cada elemento de L maior que o último elemento da lista, por esse valor. Por exemplo, dada a lista [1, 2, 3, 4, 5, 6, 7, 5] deveremos obter [1, 2, 3, 4, 5, 5, 5, 5]. O Problema 141 pode ser resolvido facilmente em Maple, por intermédio da seguinte função: > p := L -> map(min,L,op(nops(L),L)): > p([1,2,3,4,5,6,7,5]); 208 Matemática elementar em Maple [1, 2, 3, 4, 5, 5, 5, 5] O último elemento da lista L é dado por op(nops(L),L). O primeiro argumento da função min percorre todos os elementos de L enquanto o segundo argumento é fornecido como argumento opcional do map. Outra função muito útil do Maple é o select, que selecciona os operandos de uma expressão, de acordo com um certo critério. Este critério é especificado por uma função Booleana, que é aplicada a todos os operandos da expressão. Os operandos que dão valor true são os seleccionados. A expressão é, tipicamente, uma lista ou conjunto. Vejamos uma aplicação. Para calcular os primos entre a e b, construı́mos em primeiro lugar a lista de inteiros entre a e b: [$a..b]. Depois seleccionamos os primos na lista com a função Booleana isprime. > sp := (a,b) -> select(isprime,[$a..b]): > sp(100,110); [101, 103, 107, 109] A função select retorna uma expressão do mesmo tipo de dados da expressão passada no seu segundo argumento (uma lista no exemplo acima). A sintaxe do select é similar à do map, select(f,expr), e quando f requer mais que um argumento, os argumentos adicionais x2 , . . . , xk são fornecidos como argumentos opcionais do select: select(f,expr,x2,...,xn). Problema 142. Construa uma função que seleccione os operandos não-negativos de uma dada expressão arbitrária. O Problema 142 é resolvido pela função naoNeg. > naoNeg := E -> select(x -> evalb(x >= 0),E): > naoNeg({-3,5,0,-33}); {0, 5} A função remove é complementar ao select: remove (em vez de seleccionar) os operandos que satisfazem certo critério. A sua sintaxe é idêntica à do select. Resulta claro que tudo o que pode ser realizado com o remove pode ser realizado com o select e vice versa. Por exemplo, se L é uma lista de inteiros, as expressões remove(isprime,L) e select(x -> not isprime(x),L) terão o mesmo resultado. 209 > L := [$100..110]; > evalb(remove(isprime,L) = select(x -> not isprime(x),L)); true A função evalf também actua sobre os operandos, mas fá-lo de uma maneira mais selectiva que o map, seq ou select. > evalf(33*x^(1/3) + 22*x/4 - 13/5); 1 33.0 x 3 + 5.500000000 x − 2.600000000 Notamos que o evalf converteu para float apenas os coeficientes da expressão algébrica acima, não convertendo o expoente. A função evalf actua de modo similar sobre a parte real e imaginária de um número complexo. Polinómios e sua aritmética Sejam a0 , a1 , . . . , an n + 1 elementos de um certo anel ou corpo K (tipicamente Z, Q, R, ou C). Um polinómio p sobre K, na incógnita x e com coeficiente ai , i = 0, . . . , n, é a expressão p= n X ai xi . i=0 O inteiro n é o grau do polinómio (degree, em inglês) e an o coeficiente principal (leading coefficient, em inglês). Por definição, o coeficiente principal é não nulo: an 6= 0. O Maple disponibiliza as funções degree e lcoeff que devolvem, respectivamente, o grau e coeficiente de um dado polinómio: > p := 5 - 3*x^2 + 7*x^3: > degree(p), lcoeff(p); 3, 7 O conjunto de todos os polinómios sobre K na incógnita x é representado por K[x]. Os polinómios de grau 0 em K[x], dados por p = a0 x0 , são naturalmente identificados com os elementos a0 de K. Desde modo podemos olhar para um elemento de K como um elemento de K[x], resultando válida a inclusão k ⊂ K[x]. Por outro lado, se K1 ⊂ K2 , então K1 [x] ⊂ K2 [x] 210 Matemática elementar em Maple (qualquer polinómio com coeficientes em K1 é também um polinómio com coeficientes em K2 ). Normalmente olhamos para um polinómio em K[x] como um objecto aritmético e não como uma função de x. Isto significa que normalmente não estamos interessados em substituir x por um valor especı́fico. Por esse motivo, normalmente representamos em Maple os polinómios por expressões e não por funções (como fizemos no exemplo acima). Do ponto de vista aritmético, os polinómios comportam-se muito como os inteiros. Os elementos de K[x] podem ser somados, subtraı́dos e multiplicados sem qualquer restrição. Adição e subtracção O coeficiente do termo xi da soma (diferença) de dois polinómios p e q é dado pela soma (diferença) dos correspondentes coeficientes de p e q. Vejamos um exemplo. Seja p = −3 + 2x e q = −2x + 5x2 . Tal como com os inteiros, o Maple faz a soma e subtracção automática de polinómios: > p := -3 + 2*x: > q := -2*x + 5*x^2: > p + q, p - q; −3 + 5 x2 , −3 + 4 x − 5 x2 É óbvio que a soma e subtracção podem baixar o grau, por cancelamento do coeficiente principal. Vejamos um exemplo em que a soma de dois polinómios de grau 5 resulta num polinómio de grau 2: > p := 2 + 3*x^5: > q := x^2 - 3*x^5: > degree(p), degree(q), degree(p+q), degree(p-q); 5, 5, 2, 5 É também óbvio que a soma ou subtracção nunca podem aumentar o grau: degree(p ± q) ≤ max{degree(p), degree(q)} . Multiplicação Para encontrar o coeficiente de xi do produto de dois polinómios, multiplicamos o coeficiente de xj de um dos polinómios pelo coeficiente de xi−j do outro e depois adicionamos 211 todos estes produtos, para j = 0, 1, . . . , i. Contrariamente ao que acontece com os inteiros, o Maple não expande o produto de polinómios automaticamente. Para forçar a expansão usamos a função expand, que multiplica os factores e realiza depois as usuais simplificações. > p := 1 - 2*x + x^2: > q := 3 + 5*x^2 - x^3: > p*q; 1 − 2 x + x2 > expand(%); 3 + 5 x2 − x3 3 + 8 x2 − 11 x3 − 6 x + 7 x4 − x5 Notamos que o Maple não representa necessariamente um polinómio em potências crescentes da incógnita. O único caso em que o Maple faz a expansão automática do produto é quando um dos operandos tem grau zero: > 5*(x-2); 5x − 10 O grau do produto de dois polinómios é igual á soma dos graus dos operandos: degree(p × q) = degree(p) + degree(q) . Divisão Tal como acontece com os inteiros (K[x] é estruturalmente idêntico a Z), a divisão de dois polinómios pode, ou não, ser um polinómio. Dados dois polinómios p e q de K[x], dizemos que p divide q se existir um polinómio h em K[x] tal que p × h = q. Tal como para os inteiros, usamos a notação p | q para significar que p divide q. Vejamos um exemplo. Seja p = 1 − x e q = −1 + x2 . Então p divide q em Z[x], porque existe o polinómio h = −1 − x tal que p × h = q: > p := 1 - x: > q := -1 + x^2: > q/p; 212 Matemática elementar em Maple −1 + x2 1−x > simplify(%); −x − 1 Mais uma vez, o Maple não faz as simplificações automaticamente e temos de recorrer à função simplify para esse efeito. O máximo divisor comum de dois polinómios é o polinómio de maior grau que divide ambos. O menor múltiplo comum de dois polinómios é o polinómio de menor grau divisı́vel por ambos. Eles são únicos a menos de um factor constante. Em Maple estes polinómios são obtidos por intermédio das funções gcd e lcm (relembramos que o máximo divisor comum e o menor múltiplo comum de inteiros são dados em Maple respectivamente pelas funções igcd e ilcm). Tal como acontece com os inteiros, o número de divisores de um polinómio q é par, excepto quando q é um quadrado: se p divide q, então também q/p divide q. Assim, para o exemplo acima, quer p = 1 − x quer q/p = −1 − x divide q. A analogia entre polinómios e inteiros vai ainda mais longe. Teorema 143. Se f e g são polinómios sobre Q, R ou C, e g é não-nulo, então existem polinómios únicos q e r tais que f = gq + r , onde o grau de r é estritamente inferior ao de g. Os polinómios q e r do Teorema 143 são chamados respectivamente de quociente e resto da divisão de f por g. Notamos que o teorema não é válido em Z[x]. Consideremos, por exemplo, f = x2 − 1 e g = 2x − 2. Então g divide f em Q[x] mas não em Z[x]: > f := x^2 - 1: > f = factor(f); −1 + x2 = (−1 + x) (x + 1) pelo que 2 − 1} = (2x − 2) |x {z | {z } f g 1 1 x+ 2 2 . (A função Maple factor é a correspondente para polinómios da função para inteiros ifactor.) O Teorema 143 pode, no entanto, ser extendido a Z[x] se nos restringirmos aos polinómios com coeficiente principal igual a 1. 213 O quociente q e o resto r do Teorema 143 podem ser calculados em Maple por intermédio das funções quo(f,g,x) e rem(f,g,x), onde x representa a incógnita dos polinómios (relembramos que o quociente e resto de inteiros são dados em Maple pelas funções iquo(a,b) e irem(a,b)). Vejamos um exemplo. > f := x^5 - 1: > g := x^2 - x -1: > q := quo(f,g,x); q := x3 + x2 + 2x + 3 > r := rem(f,g,x); r := 2 + 5x > evalb(f = simplify(g * q + r)); true Em analogia com os inteiros, podemos introduzir o conceito de “polinómios primos”. Um polinómio sobre K[x] diz-se irredutı́vel se não puder ser expresso como o produto de dois polinómios de K[x] de grau menor. Por exemplo, o polinómio p = x2 − x − 2, de grau 2, não é irredutı́vel em Q[x], porque p = (x − 2)(x + 1) (p é o produto de dois polinómios de Q[x] de grau 1): > factor(x^2 - x - 2); (x − 2)(x + 1) Teorema 144 (Teorema fundamental da aritmética polinomial). Todo o polinómio sobre Q, R ou C pode ser expresso como o produto de irredutı́veis. Esta factorização é única a menos de factores constantes e da ordem dos factores. A factorização do Teorema 144 é obtida em Maple por intermédio da função factor. Resulta claro que estamos a convencionar que os factores constantes são ignorados quando se considera a questão da unicidade. Por exemplo, 1 + x = 2(1/2 + x/2) = 3(1/3 + x/3) = · · · Se não ignorarmos as constantes, que são polinómios de grau zero, então os polinómios teriam sempre infinitas representações em irredutı́veis. 214 Matemática elementar em Maple Exemplo 145. Tal como 2 e 3 são os factores primos de 6 em Z, assim também 1 − x e 1 + x + x2 são os factores irredutı́veis de 1 − x3 em Q[x]: > ifactor(6), factor(1-x^3); (2)(3), −(x − 1)(x2 + x + 1) O próximo exemplo mostra que o inteiro n e o polinómio de grau zero n = nx0 não são exactamente a mesma coisa. Exemplo 146. O Maple factoriza o inteiro 10 em Z, mas não factoriza o polinómio de grau zero 10 = 10x0 em Z[x]. > ifactor(10), factor(10); (2)(5), 10 Exemplo 147. Quociente e resto de polinómios. > f := x^4 + x + 1: > g := x^2 - 1: > quo(f,g,x); x2 + 1 > rem(f,g,x); 2+x Vamos agora verificar a igualdade f = gq + r do Teorema 143: > evalb(expand((g*%%+%)-f)=0); true Tal como fizemos para os inteiros, podemos usar o resto para testar a divisibilidade de polinómios. 215 Exemplo 148. A função que se segue retorna true se q divide p em Q[x] (q | p) e f alse caso contrário. > d := (q,p,x) -> evalb(rem(p,q,x)=0): > d(x-1,(x-1)*x,x); true > d(x-2,(x-1)*x,x); f alse Sucessões de polinómios Uma sucessão f0 , f1 , f2 , . . . de polinómios em K[x] é uma função que associa a cada número t em N0 um elemento de K[x]: f : N0 → K[x] t 7→ ft Notar que neste contexto f é uma função de t, não uma função de x. Por exemplo, seja f : N0 → Z[x] t 7→ x3 − t2 x + t − 1 . Obtemos a seguinte sucessão de polinómios em Z[x], todos de grau 3: x3 − 1, x3 − x, x3 − 4x + 1, x3 − 9x + 2, x3 − 16x + 3, . . . > restart; > f := t -> x^3 - t^2*x + t - 1: > seq(f(t),t=0..4); x3 − 1, x3 − x, x3 − 4 x + 1, x3 − 9 x + 2, x3 − 16 x + 3 No definição da função Maple f acima, a variável x não é passada à função como argumento. Dizemos que x é uma variável global. Isto significa que o seu valor pode ser mudado fora da função. As variáveis globais devem ser usadas com cuidado... > x := 1: > seq(f(t),t=0..4); 216 Matemática elementar em Maple 0, 0, −2, −6, −12 As sucessões de polinómios podem ser também definidas recursivamente, de uma maneira análoga às sucessões de inteiros. Na sua forma mais simples, uma sucessão recursiva em K[x] é definida pela condição inicial (caso base) f0 ∈ K[x] e por uma regra que define o elemento da sucessão ft+1 como uma função de ft (caso recursivo): f0 = f , ft+1 = F (ft ) , t = 0, 1, . . . Por exemplo, se f0 = x e ft+1 = x3 × ft2 − 2, t ∈ N0 , então os primeiros três termos da sucessão podem ser obtidos em Maple da seguinte maneira. > restart; > f := t -> if t=0 then x else x^3 * f(t-1)^2 - 2 fi: > seq(f(t),t=0..2); x, x5 − 2, x3 x5 − 2 2 −2 Funções racionais Tal como o conjunto dos números inteiros não é fechado em relação à divisão, e tal facto nos conduz à introdução dos números racionais, também existe uma necessidade similar de aumentar o conjunto K[x]. Por exemplo, x2 −1 x−1 é um polinómio, porque x − 1 | x2 − 1 > (x^2-1)/(x-1): > % = simplify(%); mas x2 −1 x−2 x2 − 1 =x+1 x−1 não é um polinómio, pois x − 2 ∤ x2 − 1 > simplify((x^2-1)/(x-2)); x2 − 1 x−2 Neste último caso dizemos que temos uma função racional. O conjunto das funções racionais sobre K, na incógnita x, será denotado por K(x) e representa o conjunto das fracções cujo numerador e denominador são elementos de K[x] e o denominador é não-nulo. Esta construção é idêntica à construção de Q a partir de Z. Em particular, K[x] ⊂ K(x) (todo o 217 polinómio é função racional). Vimos que o Maple simplifica os números racionais de tal modo que o denominador é positivo e o numerador e denominador são primos entre si. O Maple não simplifica as funções racionais, a não ser que a quantidade a ser simplificada já esteja factorizada. A função Maple simplify simplifica uma função racional em Q(x) de tal modo que o numerador e denominador são primos entre si e os seus coeficientes são inteiros. > p := (x-1)*(x-2)*(x-3): > q := (x-1)*(x+1): > p/q; (x − 2) (x − 3) x+1 > p/expand(q); (x − 1) (x − 2) (x − 3) x2 − 1 > simplify(%); (x − 2) (x − 3) x+1 A razão porque o Maple não faz a simplificação automaticamente, é a de que a simplificação nem sempre é desejável! Por exemplo, a função racional x100 − 1 x−1 é definida por dois polinómios com 4 coeficientes não nulos, enquanto a “simplificação” do polinómio envolve 100 coeficientes não nulos! > (x^100-1)/(x-1); x100 − 1 x−1 > simplify(%); 218 Matemática elementar em Maple 1+x+x2 +x99 +x97 +x98 +x96 +x95 +x94 +x93 +x92 +x91 +x90 +x89 +x88 +x87 +x86 +x85 + x84 + x83 + x82 + x81 + x80 + x79 + x78 + x77 + x76 + x75 + x74 + x73 + x72 + x71 + x70 + x69 + x68 + x67 + x66 + x65 + x64 + x63 + x62 + x61 + x60 + x59 + x58 + x57 + x56 + x55 + x54 + x53 + x52 + x51 + x50 + x49 + x48 + x47 + x46 + x45 + x44 + x43 + x41 + x40 + x39 + x42 + x38 + x36 + x35 + x34 + x33 + x32 + x37 + x31 + x29 + x28 + x27 + x26 + x25 + x24 + x23 + x22 + x30 + x21 + x19 + x18 + x17 + x16 + x15 + x14 + x13 + x12 + x11 + x10 + x9 + x8 + x7 + x6 + x5 + x4 + x3 + x20 > nops(%); 100 Manipulação básica de expressões Já vimos as funções expand e factor > p := (x-1)*(x^4 + 2*x + 1): > expand(p); x5 + 2 x2 − x − x4 − 1 > factor(p); > op(%); (x − 1) (x + 1) x3 − x2 + x + 1 x − 1, x + 1, x3 − x2 + x + 1 É possı́vel dizer ao Maple para deixar certas sub-expressões sem expansão, especificando-as por intermédio do segundo argumento opcional do expand: > p := (x+3)*(x-1)^2: > expand(p,x+3); (x + 3) x2 − 2 (x + 3) x + x + 3 219 > expand(p,x-1); (x − 1)2 x + 3 (x − 1)2 A função expand opera sobre potências positivas mas deixa intactas as potências negativas. > (x+1)^3; (x + 1)3 > expand(%); x3 + 3 x2 + 3 x + 1 > f := (x+1)^(-2); f := 1 (x + 1)2 > expand(f); 1 (x + 1)2 Neste caso a expansão do denominador deve ser explı́cita: > numer(f)/expand(denom(f)); x2 1 + 2x + 1 O próximo exemplo ilustra o comportamento diferente do expand sobre o numerador e denominador de uma fracção racional. > x*(x+1)/(x-1)^2; x (x + 1) (x − 1)2 > expand(%); 220 Matemática elementar em Maple x2 x 2 + (x − 1) (x − 1)2 A função simplify transforma uma função racional em Q para a forma numerador denominador com o numerador e denominador primos entre si e coeficientes inteiros. > x*(x+2/3*x^3)/(x+1/7); x x + 23 x3 x + 71 > simplify(%); 7 x2 3 + 2 x2 3 7x + 1 A função factor, quando aplicada a uma função racional, dá-nos uma expressão simplificada e completamente factorizada. Pode, por isso, ser usada como alternativa ao simplify. > x + 1/(x^2 + 1/(x^3 + 1/x^4)); 1 x+ x2 + 1 x3 + 1 x4 > simplify(%); x10 + x3 + x5 + x7 + 1 x2 (x7 + 1 + x2 ) > factor(%%); x10 + x3 + x5 + x7 + 1 x2 (x2 + x + 1) (x5 − x4 + x2 − x + 1) Para simplificação de expressões racionais, o Maple disponibiliza também a função normal (investigue os manuais online do Maple a este respeito). 221 Problema 149. Prove, usando o Maple, a igualdade (1 + x)3 + 1 1 = . (1 + x) + 1+x 1+x 2 Começamos por notar que as funções simplify e factor não ajudam na resolução do Problema 149: > p := (1+x)^2 + 1/(1+x): > simplify(p); x3 + 3 x2 + 3 x + 2 x+1 > factor(p); (x + 2) x2 + x + 1 x+1 O truque consiste em fazer uma substituição: > subs(1+x = y,p); y2 + 1 y > simplify(%); y3 + 1 y > subs(y=1+x,%); (x + 1)3 + 1 x+1 Uma representação importante, muito útil na primitivação de funções racionais, é a decomposição em fracções parciais. Vejamos um exemplo. > p := (x+1)/(x^4 - 2*x^3 + x^2 - 2*x); p := x+1 x4 − 2 x3 + x2 − 2 x 222 Matemática elementar em Maple > factor(p); x+1 x (x − 2) (x2 + 1) > convert(p,’parfrac’,x); 3 1 (−3 + x) 1 1 + 10 + 5 2 − 2 x x−2 x +1 Somas e produtos em Maple Vamos agora estudar as ferramentas do Maple que nos permitem somar e multiplicar um número finito de elementos de uma determinada sucessão. Desta maneira podemos construir sucessões a partir de outras. Consideremos uma sucessão {an }+∞ n=0 , a0 , a1 , a2 , . . . , cujos elementos an pertencem a um certo conjunto A onde estão definidas a operação de soma e multiplicação (e.g., A = N, Z, Q[x], etc.) A soma Sn = n X ai n≥0 (C.10) n Y ai n≥0 (C.11) i=0 e o produto Pn = i=0 +∞ são funções de n e, por conseguinte, definem novas sucessões {Sn }+∞ n=0 e {Pn }n=0 . Se a sucessão {ai } poder ser representada explicitamente através de uma função Maple a(i), então podemos usar as funções add e mul para gerar as respectivas sucessões soma e produto. A soma (C.10) é representada em Maple pelo comando > add(a(i),i=0..n); enquanto o produto (C.11) é representado por > mul(a(i),i=0..n); A sintaxe do add e do mul é idêntica à da função Maple seq. Em particular, os limites da soma e produto podem variar entre dois valores arbitrários m e n, m ≤ n, ou, de modo mais geral, podem ser substituı́dos por uma qualquer expressão expr 223 > add(a(i),i=expr); > mul(a(i),i=expr); situação em que a soma/produto é realizada calculando a(i) para cada operando i da expressão expr. Exemplo 150. Vamos calcular a soma dos cubos dos primeiros 100 inteiros positivos. Neste caso ai = i3 , i = 1, 2, . . . > a := i -> i^3: > add(a(i),i=1..100); 25502500 Alternativamente, podı́amos ter feito directamente > add(i^3,i=1..100); 25502500 Exemplo 151. Calcular o produto dos primeiros 20 números primos: > mul(ithprime(i),i=1..20); 557940830126698960967415390 Exemplo 152. Vamos verificar que o factorial de 333 é, de facto, o produto dos primeiros 333 inteiros positivos. Neste caso a sucessão {ai } coincide com a sucessão identidade (ai = i). > evalb(mul(i,i=1..333) = 333!); true > a := i -> i: > mul(a(i),i=1..333) - 333!; 0 224 Matemática elementar em Maple Seja A um subconjunto de N e χA a sua função caracterı́stica: 1 se i ∈ A χA (i) = 0 se i ∈ /A Neste caso a soma A(n) = n X χA (i) i=0 dá-nos o número de elementos em A não superiores a n. Por exemplo, se A for o conjunto dos primos, então A(n) é o número de primos que não excedem n. Problema 153. Defina em Maple a função pi(n) que devolve o número de primos da forma 4k + 1 não superiores a n. Para resolver o Problema 153 definimos a função caracterı́stica do conjunto de tais primos e depois somamos. > chi := i -> if irem(i,4) = 1 and isprime(i) then 1 else 0 fi: > pi := n -> add(chi(i),i=1..n): > pi(100); 11 Problema 154. Considere a seguinte sucessão de polinómios em Z[x] Sn = n X i=1 xi − ix + 1 n ∈ N. Mostre, usando o Maple, que o polinómio S5 é irredutı́vel. O Problema 154 é facilmente resolvido com a ajuda da função factor. > p := i -> x^i - i*x + 1: > S := n -> add(p(i),i=1..n): > S(5); 5 + x2 − 14 x + x3 + x4 + x5 > factor(%); 5 + x2 − 14 x + x3 + x4 + x5 225 Problema 155. Usando o Maple, transforme o polinómio 11 X xi i=0 na forma x2 + x + 1 x9 + x6 + x3 + 1 . Para resolver o Problema 155 começamos por factorizar o polinómio. > p := factor(add(x^i,i=0..11)); p := (x + 1) x2 + 1 1 + x + x2 x2 − x + 1 x4 − x2 + 1 A expressão obtida é do tipo * e tem 5 operandos: > whattype(p), nops(p); ∗, 5 A forma requerida consiste na factorização parcial do polinómio. Para a obtermos vamos juntar e multiplicar os operandos relevantes. > op(3,p) * expand(mul(op(i,p),i=[1,2,4,5])); 1 + x + x2 x9 + x3 + x6 + 1 Fórmulas explı́citas para somas e produtos Se os elementos an de uma sucessão são expressos por meio de uma função explı́cita de n, poderá a sucessão soma associada, Sn , ou a sucessão produto associada, Pn , ser expressa como uma função explı́cita de n? Isto é claramente possı́vel em certas situações, por exemplo, para a soma de uma progressão aritmética ou geométrica: n X i= i=1 (1 + n) n , 2 n X i=0 xi = 1 − xn+1 , 1−x x 6= 1 . Estas fórmulas explı́citas permitem-nos calcular as somas, para um dado valor de n, de uma maneira muito mais eficiente. Por exemplo, 100000 X i=1 i= (1 + 100000) 100000 = 5000050000 . 2 226 Matemática elementar em Maple O Maple disponibiliza as funções sum e product que permitem a realização, respectivamente, de somas simbólicas e produtos simbólicos, em vez de adicionar ou multiplicar um número concreto de termos (n dado). A sintaxe destes comandos é a mesma do add e mul, excepto que os limites do somatório/produtório podem agora ser simbólicos e não apenas numéricos. A função sum tenta “descobrir” a fórmula explı́cita sempre que é chamada com limites não numéricos. Este processo de “descoberta” demora o seu tempo, pelo que se os dados forem numéricos é preferı́vel usarem-se as funções add e mul que são muito mais eficientes. Vamos usar o Maple para descobrir as fórmulas das progressões aritméticas e geométricas: > restart; > add(i,i=1..n); Error, unable to execute add > sum(i,i=1..n); 1 1 1 (n + 1)2 − n − 2 2 2 > factor(%); 1 n (n + 1) 2 Agora que temos a fórmula, podemos calcular o valor da soma por meio do subs. > add(i,i=1..100000) = subs(n=100000,%); 5000050000 = 5000050000 A progressão geométrica é tratada com o Maple de modo semelhante. > add(x^i,i=1..n); Error, unable to execute add > sum(x^i,i=0..n); xn+1 1 − x−1 x−1 227 > simplify(%); xn+1 − 1 x−1 Descobrir uma fórmula explı́cita é, em geral, um problema muito difı́cil. Vejamos um exemplo. Os termos da soma Sn = n 2 X i i=1 i são dados por uma função explı́cita de i: 2 i i2 ! . = i! (i2 − i)! i Mas será que existe uma fórmula simples para Sn ? > a := i -> binomial(i^2,i): > sum(a(i),i=1..n); n X i=1 binomial i2 , i O Maple não é capaz de encontrar tal fórmula. Isto não significa, claro, que a fórmula não exista! Podemos substituir n por um valor concreto e obter o correspondente valor usando o eval (do inglês evaluation) > subs(n=4,%); 4 X i=1 binomial i2 , i > eval(%); 1911 embora neste caso, como o sum não conseguiu determinar a fórmula explı́cita, seja preferı́vel o uso do add. > add(a(i),i=1..4); 228 Matemática elementar em Maple 1911 As funções sum e product possuem uma versão inerte, respectivamente Sum e Product, que apenas indicam a operação em causa. A função value pode depois ser usada para obter o valor correspondente à forma inerte. > Sum(i^3,i=1..100); 100 X i3 i=1 > value(%); # o eval n{\~a}o funciona aqui 25502500 A forma inerte pode ser combinada com o value para obter uma saı́da aprazı́vel: > Sum(i^3,i=1..100): % = value(%); 100 X i3 = 25502500 i=1 Na próxima secção vamos ver mais aplicações destas funções inertes. Encadeamento de somas e produtos Vejamos agora expressões com um duplo somatório, do tipo S = Sm,n = m X n X aj,i = j=m0 i=n0 m X j=m0 n X aj,i i=n0 ! onde aj,i é uma função de j e i. Uma expressão deste tipo pode ser vista como uma soma de elementos de uma sucessão, elementos esses que são eles próprios somas: Sm,n = m X sj,n , sj,n = n X aj,i . i=n0 j=m0 Na situação mais geral, n0 e n podem ser funções de j: n0 = n0 (j), n = n(j). Quando n0 e n são constantes, a ordem da soma pode ser invertida: m X n X j=m0 i=n0 aj,i = n X m X i=n0 j=m0 aj,i . 229 De modo semelhante se comportam as expressões com um duplo produtório. Por exemplo, 2 3 Y Y aj,i = 3 Y (aj,1 aj,2 ) = a1,1 a1,2 a2,1 a2,2 a3,1 a3,2 . j=1 j=1 i=1 Quando os ı́ndices são independentes, como acontece no exemplo acima, a ordem dos produtórios pode ser trocada. É também possı́vel combinar somatórios e produtórios numa mesma expressão. Claro que neste caso o intercâmbio de somatórios e produtórios altera completamente o significado da expressão! Vejamos alguns exemplos com o Maple. Problema 156. Determine o valor da seguinte expressão: ! j 4 Y X (i + j)2 . j=1 i=1 O Problema 156 é facilmente resolvido em Maple. > Product(Sum((i+j)^2,i=1..j),j=1..4): % = value(%); j 4 X Y j=1 (i + j) i=1 2 ! = 1339800 Se combinarmos a função activa product (ou, melhor ainda, mul) com a função inerte Sum obtemos: > mul(Sum((i+j)^2,i=1..j),j=1..4); 1 X (i + 1)2 i=1 ! 2 X i=1 (i + 2)2 ! 3 X i=1 (i + 3)2 ! 4 X i=1 (i + 4)2 ! O próximo comando Maple permite-nos calcular o valor de cada um dos operandos na expressão acima: > seq(x = value(x),x=%); 1 X (i + 1)2 = 4, i=1 2 X i=1 (i + 2)2 = 25, 3 X i=1 (i + 3)2 = 77, 4 X (i + 4)2 = 174 i=1 Podemos calcular o valor final, extraindo o valor de cada uma das somas e multiplicando-os. > seq(op(2,k),k=[%]); 230 Matemática elementar em Maple 4, 25, 77, 174 > convert([%],‘*‘); 1339800 Somas e produtos como sucessões recursivas As igualdades (C.10) e (C.11) podem ser reescritas da seguinte maneira: ! n n−1 X X Sn = ai = ai + an = Sn−1 + an , Pn = i=0 n Y ai = i=0 i=0 n−1 Y ai i=0 ! × an = Pn−1 × an . ∞ Podemos então definir as sucessões {Sn }∞ n=0 e {Pn }n=0 recursivamente: S0 = a0 , Sn = an + Sn−1 , n ≥ 1, P0 = a0 , Pn = an × Pn−1 , n ≥ 1. Exemplo 157. Seja a0 = 2, ai = 1 − a2i−1 , i = 1, 2, . . . Pretendemos calcular S5 = 5 X ai . i=0 Podemos calcular o valor com a ajuda da função add > a := i -> if i = 0 then 2 else 1-a(i-1)^2 fi: > Sadd := n -> add(a(i),i=0..n): > Sadd(5); −15749063 ou através do método recursivo > SRec := n -> if n = 0 then a(0) else a(n)+SRec(n-1) fi: > SRec(5); −15749063 231 Elementos de Programação As ferramentas universais da programação são: (i) iteração (a estrutura do); (ii) execução condicional (a estrutura if); (iii) procedimentos (funções definidas pelo utilizador). Em relação ao Maple, apenas a primeira é para nós verdadeira novidade. A estrutura if já foi introduzida no contexto das funções caracterı́sticas (e usada na definição de sucessões recursivas); e temos usado extensivamente o operador seta -> para a definição de funções que consistem de um único comando Maple. Iteração A estrutura do permite a execução repetitiva de um comando ou bloco de comandos. A sintaxe geral da estrutura do é for variavel from inicio by passo to fim do comando 0; ... comando n od; A variável de controlo variavel é inicializada com o valor inicio e incrementada por passo até o seu valor exceder o de fim (ou até se tornar mais pequeno que fim, se o passo for negativo). As expressões inicio, passo e fim podem ser inteiros, racionais ou valores em vı́rgula flutuante. O corpo da estrutura do consiste num número arbitrário de comandos (possivelmente vazio), cada comando do bloco a ser executado em correspondência com o valor assumido por variavel. A variável de controlo variavel pode ser usada como qualquer outra variável, mas o seu valor não pode ser mudado dentro do ciclo. O último comando do corpo não precisa (mas pode) terminar em ponto e vı́rgula ou dois pontos. A saı́da é independente do terminador dos vários comandos no corpo (: ou ;), dependendo do terminador de od (a saı́da é visualizada se od é seguido de ponto e vı́rgula e suprimida quando od é seguido de dois pontos). As opções from e by podem ser omitidas, caso em que o valor quer de inicio quer de passo é 1. Se a variável de controlo variavel não for necessária, a opção for pode ser omitida: o Maple define a sua própria variável de controlo. A opção to também pode ser omitida, obtendo-se então um “ciclo infinito”. 232 Matemática elementar em Maple Vejamos alguns exemplos. Começamos por ilustrar o uso da estrutura do na obtenção de termos de uma sucessão recursiva. Pretendemos verificar que o quarto termo a3 da sucessão recursiva de inteiros a0 = 1 , an+1 = f (an ) = a5n + 1 , n = 0, 1, 2, . . . tem 8 dı́gitos decimais. Para isso definimos a função f e iteramos as vezes pretendidas com o valor inicial a0 = 1. > f := a -> a^5 + 1: > a := (a0,n) -> (f@@n)(a0): > length(a(1,3)); 8 A composição da função f é facilmente implementada por intermédio da estrutura do: > a := 1: > to 3 do # repete 3 vezes > a := f(a) > od: > length(a); 8 Consideremos agora o problema da construção do triângulo de Pascal. Relembramos que a n-ésima linha do triângulo de Pascal é dada por n n n ,··· , , n 1 0 que é facilmente obtida em Maple pela função > l := n -> seq(binomial(n,k),k=0..n): As primeiras 8 linhas do triângulo de Pascal podem então ser obtidas através dos comandos > l(0); l(1); l(2); l(3); l(4); l(5); l(6); l(7); 1 1, 1 1, 2, 1 1, 3, 3, 1 233 1, 4, 6, 4, 1 1, 5, 10, 10, 5, 1 1, 6, 15, 20, 15, 6, 1 1, 7, 21, 35, 35, 21, 7, 1 ou, de um modo mais elegante, por intermédio da estrutura do (usamos agora apenas um comando Maple, em vez dos 8 comandos anteriores): > for n from 0 to 7 do l(n) od; 1 1, 1 1, 2, 1 1, 3, 3, 1 1, 4, 6, 4, 1 1, 5, 10, 10, 5, 1 1, 6, 15, 20, 15, 6, 1 1, 7, 21, 35, 35, 21, 7, 1 Neste caso o comando repetido não é exactamente igual, mas depende de um ı́ndice n que varia, em passos unitários, entre 0 e 7. Os próximos exemplos permitem ilustrar os valores assumidos pela variável de controlo à saı́da do ciclo. > for i from 2 by 2 to 7 do i od; 2 4 6 > i; 8 > for i from 2 by -3 to -1 do i od; 2 −1 234 Matemática elementar em Maple > i; −4 Se o intervalo for vazio, o ciclo não é executado e o valor da variável de controlo não é modificado: > for i from 2 by -1 to 3 do i od; > i; 2 Para visualizar a saı́da de certos comandos no corpo do ciclo (em vez de todos ou de nenhum, conforme determinado pelo terminador de od), o Maple disponibiliza a função print. > x := 1: > for n to 3 do > x := x + igcd(n,x); > print(n,x) > od: 1, 2 2, 4 3, 5 Façamos agora uma comparação instrutiva entre duas construções similares: uma usando o do, a outra o seq. > 2: > for i to 3 do > % * i > od; 2 4 12 235 > 2: > seq(% * i,i=1..3); 2, 4, 6 Não avance sem ter a certeza que compreende o porquê dos resultados anteriores. É didáctico ver como construções já nossas conhecidas podem ser implementadas de modo convencional, via programação. O valor de uma soma pode ser obtido através da função add ou por intermédio da estrutura do. Imaginemos, por exemplo, que se pretende calcular o valor de 5 X n2 . n=0 Em Maple farı́amos > add(n^2,n=0..5); 55 ou então > s := 0: > for n from 0 to 5 do > s := s + n^2 > od: > s; 55 Vejamos mais um exemplo, antes de terminar esta secção. O valor de uma expressão do tipo 12 + 1 32 + 1 52 + 1 72 + 12 9 é usualmente obtido “de dentro para fora” por intermédio de um ciclo for: > 9^2: > for i from 7 by -2 to 1 do > i^2 + 1/% > od: > %; 236 Matemática elementar em Maple 997280 897949 A opção in Se nos lembrarmos que funções como seq, add, mul, etc., aceitam não só intervalos como segundo argumento, mas expressões genéricas, não é difı́cil adivinhar que tal também é possı́vel com a construção do. Por exemplo, > restart: > ifactor(3960); (2)3 (3)2 (5)(11) > [seq(expand(k),k=%)]; [8, 9, 5, 11] A função ifactor devolve uma expressão do tipo * com 4 operandos e o comando seq é usado para percorrer todos esses operandos, expandindo-os. Uma construção similar é possı́vel com um ciclo, usando a opção in: > L := NULL: > for k in ifactor(3960) do > L := L, expand(k) > od: > [L]; [8, 9, 5, 11] Vejamos outro exemplo simples. > seq(x+1,x=[1,2,3,4,5]); 2, 3, 4, 5, 6 > for x in [1,2,3,4,5] do x + 1 od; 237 2 3 4 5 6 A opção while A opção while disponibiliza uma maneira alternativa de terminar uma iteração. A sua sintaxe é while expressaoLogica do comandos od; Se expressaoLogica tiver valor true o corpo do ciclo é executado, a expressão lógica expressaoLogica testada de novo, etc. O ciclo termina quando o valor da expressão lógica é f alse. Não é necessário usar o evalb na expressão lógica. > x := 2: > while x < 100 do > x := x^2 > od; x := 4 x := 16 x := 256 A opção while pode ser usada em conjunção com as outras opções. Exemplo 158. Quantos primos existem menores que 100? > for n while ithprime(n) < 100 do od: > n-1; 25 238 Matemática elementar em Maple Exemplo 159. Qual é o menor inteiro positivo n tal que n! é maior que 5n ? > for n while n! <= 5^n do od; > n; 12 Execução condicional A forma geral da estrutura if é: if expressaoLogica1 then comandos1 elif expressaoLogica2 then comandos2 ... else comandosPorDefeito fi; Um exemplo de aplicação da estrutura if surge quando se pretende definir funções por secções (piecewise functions, em inglês): funções cujo valor é dado por expressões distintas em regiões distintas do domı́nio. Um exemplo particular de funções definidas por secções são as funções caracterı́sticas já estudadas. Vejamos um exemplo. Seja 1 se 0 ≤ x < 40 2 se 40 ≤ x < 50 3 se 50 ≤ x < 60 f (x) = 4 se 60 ≤ x < 70 5 se 70 ≤ x < 80 6 se 80 ≤ x ≤ 100 A função pode ser definida em Maple como se segue. > f := x -> if x<0 or x>100 then > "nao definida" > elif x<40 then > 1 > elif x<50 then 239 > 2 > elif x<60 then > 3 > elif x<70 then > 4 > elif x<80 then > 5 > else > 6 > fi: Uma maneira alternativa de definir f (x) é usar a função Maple piecewise, que possui a seguinte sintaxe: piecewise(cond1,f1,cond2,f2,...,condn,fn,porDefeito) Farı́amos então: > f := x -> piecewise(x<0 or x>100,"nao definida", > x<40,1,x<50,2,x<60,3,x<70,4,x<80,5,6): Procedimentos Uma função definida por intermédio do operador seta -> é um caso simples de uma construção mais geral chamada procedure. Por exemplo, a função > adicionaUm := obj -> map(x->x+1,obj): adiciona 1 a cada operando de um dado objecto arbitrário obj. A mesma função pode ser definida em Maple como um procedure: > adicionaUm := proc(obj) > map(x->x+1,obj) > end: O modo de utilização da função definida como procedure é precisamente o mesmo ao que já estamos habituados: > adicionaUm({1,0,-22,ola}); {−21, 1, 2, ola + 1} 240 Matemática elementar em Maple > adicionaUm(a=b); a+1=b+1 As vantagens em usar a construção proc são: (i) podemos definir funções com mais do que um comando Maple; (ii) podemos controlar o tipo de argumentos da função; (iii) podemos usar variáveis locais. A sintaxe pode ser descrita da seguinte maneira: nome := proc(arg1::tipo1,...,argn::tipon) local variaveis; option opcoes; comandos end; Vejamos alguns exemplos. Exemplo 160. Pretende-se construir em Maple uma função de nome coefPol que transforme uma lista de coeficientes, num polinómio numa dada incógnita fornecida também pelo utilizador. Um exemplo do funcionamento pretendido é: > coefPol([1,1,c^2+1,2],z); z 3 + z 2 + c2 + 1 z + 2 > coefPol := proc(listaCoef::list,x::symbol) > local i, grau: > grau := nops(listaCoef): > 0: > for i to grau do > > % + listaCoef[i]*x^(grau-i) od > end: > coefPol([1,1,c^2+1,2],z); z 3 + z 2 + c2 + 1 z + 2 241 Exemplo 161. O próximo procedimento gera a lista de primos entre dois inteiros a e b dados (a e b incluı́dos). > primosEntre := proc(a::integer,b::integer) > local L, p: > L := []: > p := nextprime(a-1): > while p <= b do > L := [op(L),p]: > p := nextprime(p) > od: > L > end: > primosEntre(1000,1100); [1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097] Uma função idêntica construı́da com o select, é mais simples e elegante, mas menos eficiente (mais lenta). Exemplo 162. Vamos agora definir em Maple a função freq que calcula a frequência de ocorrência dos elementos numa lista arbitrária. > freq := proc(L::list) > local r,x: > seq([x,nops(select((r,x)->evalb(r=x),L,x))],x={op(L)}) > end: > freq([a,b,ba,b,ba,b,ab,b]); [a, 1], [b, 4], [ab, 1], [ba, 2] Procedimentos recursivos Os procedimentos permitem implementar sucessões recursivas de um modo mais eficiente do que as suas congéneres definidas pelo operador seta ->. Consideremos, a tı́tulo de exemplo, a seguinte sucessão recursiva de primeira ordem: X0 = 1 , Usando o operador seta fazemos Xn = Xn−1 + 1 , n = 1, 2, . . . Xn−1 + 2 242 Matemática elementar em Maple > X := n-> if n=0 then 1 else (X(n-1)+1)/(X(n-1)+2) fi: > seq(X(i),i=0..10); 2 5 13 34 89 233 610 1597 4181 10946 , , , , , , , , , 3 8 21 55 144 377 987 2584 6765 17711 Dada um n > 0, o Maple calcula, recursivamente, 2 vezes o valor de cada X(n − 1). Uma 1, solução para evitar os cálculos repetidos será usar um procedimento, armazenando o valor de X(n − 1) numa variável e usando depois essa variável em vez de fazer nova chamada recursiva a X(n − 1). O Maple faz esta operação automaticamente se usarmos a opção remember. > X := proc(n::nonnegint) # n e’ um inteiro nao negativo > option remember: > if n=0 then 1 else (X(n-1)+1)/(X(n-1)+2) fi > end: Introdução elementar à Álgebra Linear em Maple Começamos por carregar a biblioteca de funções linalg (linear algebra) que coloca à nossa disposição 114 novas funções: > nops(with(linalg)); 114 Matrizes em Maple É possı́vel definir matrizes em Maple através de um array > array(1..2,1..2,[[1,2],[3,4]]); " 1 2 3 4 # ou então através do “tipo de dados” matrix, que não é mais do que um array de duas dimensões com ı́ndices linha e coluna indexados a partir de 1. > type(%,matrix); true 243 > A := matrix([[1,2],[3,4],[5,6]]); 1 2 3 4 5 6 > B:= matrix([[a,b],[c,d]]); " a b c d # As variáveis A e B acima não representam um objecto matriz, mas sim um ponteiro para o local de memória onde o Maple armazena o correspondente objecto matriz. Fica então claro o resultado do seguinte comando: > A + A; 2A Para acedermos ao objecto matriz através do nome que o referencia, recorremos ao comando evalm (evaluate matrix ). > evalm(%); 2 3 4 6 8 10 12 > evalm(3*A); 6 9 12 15 18 Para multiplicarmos matrizes em Maple temos de recorrer ao operador de multiplicação não comutativo &* > evalm(A &* B); 244 Matemática elementar em Maple a + 2c b + 2d 3a + 4c 3b + 4d 5a + 6c 5b + 6d > evalm(A * B); Error, (in evalm/evaluate) use the &* operator for matrix/vector multiplication A inversa de uma matriz quadrada invertı́vel, pode ser determinada por recurso à função Maple inverse. > iB := inverse(B); " d ad−bc c − ad−bc b − ad−bc bc ad−bc 0 a ad−bc # > evalm(B &* iB); " ad ad−bc − ad ad−bc 0 − bc ad−bc # > simplify(%); " 1 0 0 1 # Claro que os cálculos acima são formais, só fazendo sentido escrever a inversa de B quando ad − bc for diferente de zero: uma matriz é invertı́vel apenas quando o seu determinante for diferente de zero. > det(B); ad − bc Este tipo de análise é sempre da responsabilidade do utilizador do Maple e não do computador. Podemos aceder directamente a um elemento da matriz, bastando indicar a respectiva linha/coluna. Vamos imaginar que queremos mudar o elemento na linha 2 e coluna 1 da matriz A para β. 245 > A[2,1] := beta; A2,1 := β > evalm(A); 1 2 β 4 5 6 Para a definição de matrizes de alguma dimensão, cujas entradas satisfazem uma certa regra de formação, são úteis as construções do tipo seguinte. > matrix(3,4,(i,j)->i/j); 1 1 2 2 1 3 23 1 3 1 4 2 3 1 2 1 3 4 > f := (i,j)->x^(i+j): > matrix(2,2,f); " x2 x3 x3 x4 # Existem muitas outras maneiras de definir matrizes em Maple. Vejam-se os manuais online para as outras funcionalidades do comando Maple matrix. Seguem-se as funções mais comuns sobre matrizes ainda não mencionadas. O traço de uma matriz, isto é, a soma dos elementos na diagonal da matriz, é dado pelo comando trace. > trace(B); a+d Esta função é muito fácil de implementar. Para o exemplo acima farı́amos: > add(B[i,i],i=1..2); 246 Matemática elementar em Maple a+d A transposta de uma matriz é obtida através da função transpose > transpose(B); " a c b d # enquanto a caracterı́stica é determinada com recurso à função Maple rank > rank(A); 2 O polinómio caracterı́stico é obtido recorrendo ao charpoly (characteristic polynomial ), indicando a matriz e a variável com a qual se pretende escrever o polinómio caracterı́stico. Por exemplo, > charpoly(B,x); x2 − xd − ax + ad − bc Como sabemos, a matriz satisfaz o polinómio caracterı́stico. > subs(x=B,%); B 2 − Bd − aB + ad − bc > evalm(%); " 0 0 0 0 # Reparar também a ligação entre o polinómio caracterı́stico, o traço e o determinante. > collect(charpoly(B,x),x); x2 + (−d − a) x + ad − bc 247 > evalb(simplify(%=x^2-trace(B)*x+det(B))); true Damos agora um exemplo do cálculo dos valores próprios (eigenvalues) de uma matriz. > C := matrix([[0,1],[3,-1]]); " 0 1 3 −1 # > eigenvalues(C); 1 1√ 1 1√ 13 13 , − − − + 2 2 2 2 Vectores em Maple Podemos olhar para os vectores como casos particulares das matrizes (matrizes de uma coluna), pelo que podemos definir vectores em Maple por recurso à estrutura de dados array. > v := array(1..2); v := array(1..2, []) > evalm(v); [v1 , v2 ] > w := array([1,2]); w := [1, 2] > v[1] := 3: v[2] := 4: > v, w; v, w 248 Matemática elementar em Maple > evalm(v), evalm(w); [3, 4], [1, 2] Podemos, por exemplo, multiplicar uma constante por um vector, > -2*v: % = evalm(%); −2v = [−6, −8] somar vectores > evalm(v+w); [4, 6] ou achar o produto interno entre dois vectores > dotprod(v,w); 11 A norma p de um vector u, kukp = (|v1 |p + · · · + |vn |p )1/p , é dada em maple por norm(u,p). Por exemplo > norm(v,2); 5 Tal como o Maple disponibiliza a estrutura de dados matrix (que não passa de um caso particular de array) também disponibiliza o tipo de dados vector > type(v,vector); true Para o Maple, um vector não é mais do que um array uni-dimensional cujo ı́ndice começa em 1. 249 Multiplicação de uma matriz por um vector Embora o Maple mostre os vectores, na forma visual, como vectores linha, ele interpreta-os como vectores coluna. > evalm(C)*evalm(w) = evalm(C &* w); " 0 1 3 −1 # [1, 2] = [2, 1] Aplicação de uma função a todos os elementos de um array A já conhecida função map, pode ser também usada no contexto das matrizes. > h := y -> y^2: > map(h,C); " 0 1 9 1 # > u := array([x+1,x^2]): > map(h,u); i h (x + 1)2 , x4 > map(expand,%); [x2 + 2 x + 1, x4 ] Apêndice D Computação Algébrica em Maple: Programação Dinâmica Definimos procedimentos Maple para a resolução de problemas genéricos dos do tipo estudados na Secção 1.5. D.1 Problema de percurso Uma vez resolvido em §1.5.1 um problema de percurso pela técnica da Programação Dinâmica, usamos agora o Sistema de Computação Algébrica Maple para a implementação de um programa genérico que permite a resolução de um qualquer problema deste tipo. Convém esclarecer que nos casos em que há mais do que uma solução possı́vel para o problema (quando a solução não é única), o nosso programa apenas apresentará uma delas. > E := (i,P) -> P[3][i]: > pp := P -> P[-1][1][1]: # Ponto de Partida > pc := P -> P[-1][-1][1]: # Ponto de Chegada > c := (j,k,P) -> select(L->L[1]=j and L[2]=k,P[1])[1][3]: > ind := (e,L) -> if member(e,L,’i’) then i fi: > s := proc(i,j,P) > local PE, SC, k, melhor, pos: > PE := E(i+1,P): > SC := seq(c(j,k,P),k=PE): > melhor := map(P[2],SC): > pos := ind(melhor,[SC]): > return(PE[pos]); > end proc: 251 252 Computação Algébrica em Maple: Programação Dinâmica > sol := proc(i,j,k,P,flag) > local prox: > if j=pc(P) then > > if flag=custo then return(0) else return([j]) fi: elif member(k,E(i+1,P)) then > > if flag=custo then return(c(j,k,P)) else return([j,k]) fi: else > prox := s(i,j,P): > if flag=custo then > return(c(j,prox,P)+sol(i+1,prox,k,P,custo)) > else > return([j,op(sol(i+1,prox,k,P,flag))]): > > fi fi > end proc: > f := (i,j,k,P) -> sol(i,j,k,P,custo): > custoOptimo := P -> f(1,pp(P),pc(P),P): > solucaoOptima := P -> sol(1,pp(P),pc(P),P,caminho): Com o programa acima, a resolução de qualquer problema de percurso resume-se à interpretação adequada do enunciado e à introdução dos dados no Maple, chamando depois as funções custoOptimo e solucaoOptima. Os dados são introduzidos pelo utilizador sob a forma de uma lista, lista esta constituı́da por três elementos: • o primeiro elemento é uma lista constituı́da por sub-listas de três elementos: – o primeiro correspondente a um ponto de partida; – o segundo elemento correspondente a um ponto de chegada; – o terceiro elemento corresponde ao “custo” de ligação entre os respectivos pontos de partida e de chegada; • o segundo elemento define se o utilizador quer determinar o custo máximo ou o custo mı́nimo (do seguro de vida); • o terceiro elemento é uma lista de listas, com cada lista a definir uma etapa. O único elemento da primeira sub-lista define o ponto de partida do problema; o único elemento da última sub-lista define o ponto de chegada do problema. Para o Problema 22 fazemos: > custos := [[1,2,2],[1,3,4],[2,4,7],[2,5,7],[3,4,8],[3,5,5],[4,6,3],[5,6,4]]: D.2 Problema de investimento 253 > etapas := [[1],[2,3],[4,5],[6]]: > problema := [custos, min, etapas]: # segundo argumento = min ou max > custoOptimo(problema); 12 > solucaoOptima(problema); [1, 2, 4, 6] D.2 Problema de investimento O seguinte programa Maple permite a resolução de um qualquer problema de investimento. As definições Maple seguem as notações usadas em §1.5.2. > restart: > p := (m,x,P) -> select(i->i[1]=x and i[2]=m,P[m])[1][3]: > l := (i,x,P) -> if i = 1 then > p(1,x,P) > else > max(seq(p(i,y,P)+l(i-1,x-y,P),y=0..x)) > fi: > lucroMaximo := (P,inv) -> l(nops(P),inv,P): > q := (i,x,P) -> if i = 1 then > x > else > op(select(y->evalb(p(i,y,P)+l(i-1,x-y,P)=l(i,x,P)),[$0..x])) > fi: > investimentoOptimo := proc(P,inv) > local ni, R, i, x: > ni := nops(P): > R := NULL: > x := inv: > for i from ni to 1 by -1 do > R := q(i,x,P),R: > x := x - [R][1]: > od: 254 > Computação Algébrica em Maple: Programação Dinâmica return([R]); > end proc: Para o Problema 23 fazemos: > meio1 := [[0,1,0.00],[1,1,1.20],[2,1,2.70],[3,1,4.20],[4,1,6.00], > [5,1,7.65],[6,1,9.30],[7,1,11.06],[8,1,12.80],[9,1,14.40],[10,1,16.00]]: > meio2 := [[0,2,0.00],[1,2,2.00],[2,2,2.80],[3,2,4.65],[4,2,6.60], > [5,2,8.75],[6,2,10.80],[7,2,12.95],[8,2,15.20],[9,2,17.10],[10,2,19.00]]: > meio3 := [[0,3,0.00],[1,3,1.30],[2,3,2.90],[3,3,4.95],[4,3,7.00], > [5,3,8.50],[6,3,12.30],[7,3,15.05],[8,3,18.00],[9,3,20.70],[10,3,24.00]]: > meio4 := [[0,4,0.00],[1,4,1.15],[2,4,2.50],[3,4,4.20],[4,4,6.00],[5,4,8.10], > [6,4,10.50],[7,4,12.60],[8,4,15.20],[9,4,23.00],[10,4,23.50]]: > problema := [meio1,meio2,meio3,meio4]: > lucroMaximo(problema,5); 9.00 > investimentoOptimo(problema,5); [0, 1, 4, 0] > lucroMaximo(problema,10); 25.00 > investimentoOptimo(problema,10); [0, 1, 0, 9] Apêndice E Computação Algébrica em Maple: Cálculo das Variações EulerLagrange constrói o sistema de equações de Euler-Lagrange (2.29), dado um Lagrangeano de várias variáveis dependentes e com derivadas de ordem superior. Devolve: - conjunto/vector de equações de Euler-Lagrange. Forma de invocação: - EulerLagrange(L, t, x, x1, x2, ..., xm) Parâmetros: L - expressão do Lagrangeano; t - nome da variável independente; x - nome, lista de nomes ou vector de nomes das variáveis dependentes; xi - nome, lista de nomes ou vector de nomes das derivadas de ordem i das variáveis dependentes; EulerLagrange:=proc(L::algebraic,t::name,x0::{name,list(name), ’Vector[column]’(name)},x1::{name,list(name),’Vector[column]’(name)}) local xx,n,m,Lxi,xi,V,EL,i,j,k; if nargs<4 then print(‘Numero de args insuficiente.‘); return; elif not type([args[3..-1]],{’list’(name),’listlist’(name), ’list’(’Vector[column]’(name))}) then print(‘Erro na lista das var. depend. ou suas derivadas.‘); return; end if; 255 256 Computação Algébrica em Maple: Cálculo das Variações xx:=convert(x0,’list’)[]; n:=nops([xx]); m:=nargs-3; xi:=[seq(Vector(convert(args[i],’list’)),i=3..m+3)]; V:=[0$n]; for i from 1 to m do Lxi:=[seq(diff(L,k),k=convert(xi[i+1],’list’))]: Lxi:=subs({map(k->k=k(t),[xx])[]},Lxi); Lxi:=subs({seq(seq(xi[k+1][j]=diff(xi[1][j](t),t$k),j=1..n),k=1..m)}, Lxi); V:=V+(-1)^i*map(diff,Lxi,t$i); end do: EL:=[seq(diff(L,k),k=convert(xi[1],’list’))]; EL:=subs({map(k->k=k(t),[xx])[]},EL); EL:=subs({seq(seq(xi[k+1][j]=diff(xi[1][j](t),t$k),j=1..n),k=1..m)},EL); EL:=EL+V; if type(x0,’Vector’) then return convert(map(i->i=0,EL),’Vector[column]’); elif type(x0,’list’) then return convert(map(i->i=0,EL),’set’); else return op(EL)=0; end if; end proc: Para um exemplo do uso da função EulerLagrange acima definida veja-se, por exemplo, a secção 4.2. Apêndice F Computação Algébrica em Maple: Controlo Óptimo A função PMP, definida a seguir, usa o Maple na tentativa de encontrar as extremais de Pontryagin para um problema de Controlo Óptimo. Aplica o Princı́pio do Máximo de Pontryagin de acordo com o Teorema 56. A solução é encontrada resolvendo, com a ajuda do comando Maple dsolve, o sistema de equações diferenciais ordinárias que resulta da combinação do sistema Hamiltoniano com a condição de estacionaridade. Devolve: - as extremais de Pontryagin. Usando opções apropriadas, devolve uma lista com as equações que definem o sistema de controlo; o sistema adjunto; a condição de estacionaridade; ou o Hamiltoniano. Forma de invocação: - PMP(L,phi, t, x, u, opções) Parâmetros: L - expressão do Lagrangeano; phi - expressão ou lista de expressões do vector velocidade que define o sistema de controlo; t - nome da variável independente; x - nome, lista de nomes ou vector de nomes das variáveis de estado; u - nome, lista de nomes ou vector de nomes das variáveis de controlo; 257 258 Computação Algébrica em Maple: Controlo Óptimo opções - argumentos opcionais: evalH (com esta opção o procedimento PMP devolve o Hamiltoniano); evalSyst (devolve uma lista com o sistema de controlo, o sistema adjunto e a condição de estacionaridade, dispostas por esta ordem); showt (mostra a variável independente); noabn (o problema não admite extremais anormais – fixa ψ0 = −1); explicit (opção para o comando dsolve do Maple – respostas dadas, sempre que possı́vel, na forma explı́cita). PMP:=proc(L::algebraic, phi::{algebraic, list(algebraic)}, t::name, x0::{name,list(name)}, u0::{name,list(name)}) local n, xup, i, vpsi, lpsi, Hamilt, lphi, sisH, aux, sol, F; unassign(’psi’); n:=nops(x0); if n>1 then lphi:=phi; lpsi:=[seq(psi[i],i=1..n)] else lpsi:=[psi]; lphi:=[phi]; fi: xup:=op(x0),op(u0),op(lpsi); vpsi:=Vector[row](lpsi); if member(’noabn’,[args]) then Hamilt:=-L+vpsi.Vector(lphi); else Hamilt:=’psi_0’*L+vpsi.Vector(lphi); fi: if member(’evalH’,[args]) then sol:=Hamilt; else sisH:=[seq(diff(Hamilt,i), i=[op(x0),op(lpsi)]), seq(diff(Hamilt,i)=0,i=u0)]; F:=subs(select(type,[args],‘=‘), ncf); if F<>’ncf’ then if n=1 then F:=[F]; fi: sisH:=[op(sisH[1..n]-F), sisH[n+1..-1][]]; fi: sisH:=subs({map(i->i=i(t),[xup])[]}, sisH); aux:=[seq(diff(i(t),t), i=[-op(lpsi), op(x0)])]; sisH:=[seq(aux[i]=sisH[i], i=1..2*n), sisH[2*n+1..-1][]]; if member(’evalSyst’,[args]) then sol:=[{sisH[n+1..2*n][]}, {sisH[1..n][]}, {sisH[2*n+1..-1][]}]; else if member(’explicit’,[args]) then sol:=dsolve(sisH, [xup(t)], ’explicit’); else sol:=dsolve(sisH, [xup(t)]); fi: fi: sol:=subs({map(i->i(t)=i,[xup])[]},[sol])[]; fi: if member(’showt’,[args]) then sol:=subs({map(i->i=i(t),[xup])[]},[sol])[]; fi; sol:=subs(’psi_0’=’psi[0]’,select(type,[args],‘=‘),[sol])[]; return sol; end proc: Para um exemplo do uso da função PMP acima definida veja-se a secção 4.3. 259 Definimos agora, usando o sistema de computação matemática Maple, novas funções que permitem a determinação automática de simetrias e leis de conservação no controlo óptimo. Os procedimentos SimetriaCO e NoetherCO são de grande utilidade prática como ilustrado, por meio de exemplos concretos do controlo óptimo e calculo das variações, em §3.8.3 e §3.8.4. SimetriaCO determina os geradores infinitesimais de transformações de invariância de problemas do controlo óptimo sem restrições nos valores das variáveis de controlo, de acordo com a secção 3.8.2. Devolve: conjunto de geradores infinitesimais. Forma de invocação: SimetriaCO(L, ϕ, t, x, u, [all]) Parâmetros: L - expressão do Lagrangeano; ϕ - expressão ou lista de expressões das equações diferenciais ordinárias que descrevem o sistema de controlo; t - nome da variável independente; x - nome ou lista de nomes das variáveis de estado; u - nome ou lista de nomes das variáveis de controlo; all - (parâmetro opcional) usa-se, como último parâmetro, a palavra all para o caso de se pretender que a solução apresente todas as constantes de integração; caso contrário, constantes redundantes são eliminadas. SimetriaCO:=proc(L::algebraic, phi::{algebraic, list(algebraic)}, t::name, x0::{name,list(name)}, u0::{name,list(name)}) local n, m, xx, i, vX, vPSI, vU, vv, lpsi, H, eqd, syseqd, sol, conjGerad, lphi; unprotect(Psi); unassign(’T’); unassign(’X’); unassign(’U’); unassign(’Psi’); unassign(’psi’); n:=nops(x0); m:=nops(u0); if n>1 then lphi:=phi; lpsi:=[seq(psi[i],i=1..n)] else lphi:=[phi]; lpsi:=[psi]; fi; xx:=op(x0),op(u0),op(lpsi); vv:=Vector([seq(v||i,i=1..2*n+m)]); if n>1 then vX:=Vector([seq(X[i](t,xx), i=1..n)]); else vX:=Vector([X(t,xx)]); fi; if n>1 then vPSI:=Vector([seq(PSI[i](t,xx),i=1..n)]); else vPSI:=Vector([PSI(t,xx)]); fi; if m>1 then vU:=Vector([seq(U[i](t,xx), i=1..m)]); else vU:=Vector([U(t,xx)]); fi; H:=psi[0]*L+Vector[row](lphi).Vector(lpsi); eqd:=diff(H,t)*T(t,xx) +Vector[row]([seq(diff(H,i),i=x0)]).vX+Vector[row]([seq(diff(H,i), i=u0)]).vU+Vector[row]([seq(diff(H,xx[i]),i=n+m+1..n+m+n)]).vPSI -LinearAlgebra[Transpose](vPSI).vv[1..n]-Vector[row](lpsi).(map(diff,vX,t)+Matrix( [seq(map(diff,vX,i),i=xx)]).vv)+H*(diff(T(t,xx),t)+Vector[row]([seq(diff(T(t,xx),i), i=xx)]).vv); 260 Computação Algébrica em Maple: Controlo Óptimo eqd:=expand(eqd); eqd:=collect(eqd, convert(vv,’list’), distributed); syseqd:={coeffs(eqd, convert(vv,’list’))}: conjGerad:={T(t,xx)}union convert(vX,’set’) union convert(vU,’set’) union convert(vPSI,’set’); sol:=pdsolve(syseqd, conjGerad, HINT=‘+‘); sol:=subs(map(i->i=op(0,i),conjGerad),sol); sol:=subs(PSI=’Psi’,sol); if nargs<6 or args[6]<>‘all‘ then sol:=reduzConst(sol); fi; return sol; end proc: NoetherCO dados os geradores infinitesimais de transformações de invariância, determina a lei de conservação do problema de controlo óptimo associado, de acordo com o Teorema de Noether (Teorema 88). Devolve: lei de conservação. Forma de invocação: NoetherCO(L, ϕ, t, x, u, S) Parâmetros: L - expressão do Lagrangeano; ϕ - expressão ou lista de expressões das equações diferenciais ordinárias que descrevem o sistema de controlo; t - nome da variável independente; x - nome ou lista de nomes das variáveis de estado; u - nome ou lista de nomes das variáveis de controlo; S - conjunto de geradores infinitesimais (output do procedimento SimetriaCO). NoetherCO:=proc(L::algebraic, phi::{algebraic, list(algebraic)}, t::name, x0::{name,list(name)}, u0::{name,list(name)}, S::set) local n, xx, i, vX, vpsi, lpsi, H, LC, lphi; unassign(’T’); unassign(’X’); unassign(’psi’); n:=nops(x0); if n>1 then lphi:=phi; lpsi:=[seq(psi[i],i=1..n)] else lpsi:=[psi]; lphi:=[phi]; fi; xx:=op(x0),op(u0),op(lpsi); vpsi:=Vector[row](lpsi); if n>1 then vX:=Vector([seq(X[i], i=1..n)]); else vX:=Vector([X]); fi; H:=psi_0*L+vpsi.Vector(lphi); LC:=vpsi.vX-H*T=const; LC:=eval(LC, S); LC:=subs({map(i->i=i(t),[xx])[]},LC); LC:=subs(psi_0=psi[0],LC); return LC; end proc: Bibliografia [1] P. Adams, K. Smith, R. Výbormý. Introduction to Mathematics with Maple, World Scientific, 2004. [2] A. Agrachev, B. Bonnard, M. Chyba, and I. Kupka. Sub-Riemannian sphere in Martinet flat case, ESAIM Control Optim. Calc. Var., 2:377–448 (electronic), 1997. [3] Andrei A. Agrachev, Yuri L. Sachkov. Control theory from the geometric viewpoint, Encyclopaedia of Mathematical Sciences, 87. Control Theory and Optimization, II. SpringerVerlag, Berlin, 2004. [4] I. M. Azevedo do Amaral. Note sur la solution finie d’un problème de Newton, Ann. Ac. Pol. Porto, Vol. 8, pp. 207–209, 1913. [5] David H. Bailey and Jonathan M. Borwein, Experimental Mathematics: Examples, Methods and Implications, Notices of the AMS, Vol. 52, No. 5, May 2005, pp. 502–514. [6] N. Bebiano. Matemática ou mesas, cadeiras e canecas de cerveja, Gradiva, Lisboa, Fevereiro 2000. [7] B. Bonnard, M. Chyba, and E. Trélat. Sub-Riemannian geometry, one-parameter deformation of the Martinet flat case, J. Dynam. Control Systems, 4(1):59–76, 1998. [8] Bernard Dacorogna. Introduction to the Calculus of Variations, Imperial College Press, 2004. [9] F. S. David. O Cálculo Variacional Clássico e Algumas das suas Aplicações à Fı́sica Matemática, Gabinete de Planeamento de Centros Produtores, Electricidade de Portugal (EDP), 1986. [10] L. N. de Andrade. Introdução à Computação Algébrica com o Maple, IMPA, editora da Sociedade Brasileira de Matemática, 2004. [11] F. R. Dias Agudo. Análise Real, Volume III, Escolar Editora, 1992. 261 262 BIBLIOGRAFIA [12] H. Gardner Moyer. Deterministic Optimal Control – An Introduction for Scientists, Trafford, 2004. [13] Paulo D. F. Gouveia, Delfim F. M. Torres. Computação Algébrica no Cálculo das Variações: determinação de simetrias e leis de conservação, “Tendências em Matemática Aplicada e Computacional” (TEMA – revista da Sociedade Brasileira de Matemática Aplicada e Computacional), Vol. 6, 2005 (in press). [14] Paulo D. F. Gouveia, Delfim F. M. Torres. Automatic Computation of Conservation Laws in the Calculus of Variations and Optimal Control, Computational Methods in Applied Mathematics (CMAM), Vol.5, No.4, 2005 (in press). [15] Jürgen Jost, Xianqing Li-Jost. Calculus of variations, Cambridge Univ. Press, 1998. [16] Kenneth Lange. Optimization, Springer NY, 2004. [17] Leonid P. Lebedev, Michael J. Cloud. The Calculus of Variations and Functional Analysis – with Optimal Control and Applications in Mechanics, World Scientific, 2003. [18] Antonio Leitão. Cálculo Variacional e Controle Ótimo, Publicações Matemáticas, Instituto de Matemática Pura e Aplicada (IMPA), 2001. [19] Daniel Léonard, Ngo van Long. Optimal Control Theory and Static Optimization in Economics, Cambridge University Press, 1998. [20] J. D. Logan. Applied Mathematics – A Contemporary Approach, John Wiley & Sons, New York, 1987. [21] Charles R. MacCluer, Calculus of Variations – Mechanics, Control, and Other Applications, Pearson Prentice Hall, 2005. [22] Jack W. Macki, Aaron Strauss. Introduction to optimal control theory, Undergraduate Texts in Mathematics. Springer-Verlag, New York-Berlin, 1982. [23] Nuno M. M. Maia. Introdução à Dinâmica Analı́tica, IST Press, Colecção Ensino da Ciência e Tecnologia, 2000. [24] José Luiz Pastore Mello. A Rampa de Skate do Tempo Mı́nimo, Educação e Matemática – Revista da Associação de Professores de Matemática, Setembro-Outubro 2005, pp. 27– 31. [25] Mahmut Parlar. Interactive operations research with Maple. Methods and models, Birkhäuser Boston, Inc., Boston, MA, 2000. [26] Pablo Pedregal. Introduction to Optimization, Springer, 2004. BIBLIOGRAFIA 263 [27] Inês L. Pina. Programação Dinâmica com Maple, Monografia (orientador Delfim F. M. Torres), Seminário de Ensino de Matemática, 2004/2005, Outubro 2005. [28] L. S. Pontryagin, V. G. Boltyanskii, R. V. Gamkrelidze, E. F. Mishchenko. The mathematical theory of optimal processes, Interscience Publishers John Wiley & Sons, Inc. New York-London, 1962. [29] M. C. Povoas. Métodos Matemáticos da Fı́sica – Uma Introdução, Textos de Matemática, Volume 17, Departamento de Matemática, Faculdade de Ciências da Universidade de Lisboa, 2002. [30] D. Richards. Advanced Mathematical Methods With Maple, Cambridge University Press, 2002. [31] P. Rouchon. Flatness based design, Lecture notes, Summer School on Mathematical Control Theory SMR1327/17, The Abdus Salam International Centre for Theoretical Physics, Trieste, Italy, September 2001. [32] Jeffrey Shallit, Mathematics by Experiment and Experimentation in Mathematics, Notices of the AMS, Vol. 52, No. 8, September 2005, pp. 863–865. [33] Cristiana J. Silva. Abordagens do Cálculo das Variações e Controlo Óptimo ao Problema de Newton da Resistência Mı́nima, dissertação de Mestrado (orientador: Delfim F. M. Torres), Mestrado em Matemática 2003-2005, Universidade de Aveiro, 2005. [34] Cristiana J. Silva, Delfim F. M. Torres. On the Classical Newton’s Problem of Minimal Resistance, Third Junior European Meeting on Control, Optimization, and Computation, University of Aveiro, 6-8 September 2004, Portugal. M. Guerra and D.F.M. Torres eds., Research report CM05/I-04, Dep. Mathematics, Univ. Aveiro, February 2005, pp. 125– 133. [35] Gueorgui Smirnov, Vladimir Bushenkov. Curso de Optimização – Programação Matemática, Cálculo de Variações, Controlo Óptimo, Escolar Editora, 2005. [36] Moshe Sniedovich. Dynamic programming, Monographs and Textbooks in Pure and Applied Mathematics, 154. Marcel Dekker, Inc., New York, 1992. [37] João Luis Soares, Optimização Matemática, Gazeta de Matemática, Julho 2005, no 149, pp. 13–17. (Este texto está disponı́vel online em http://www.mat.uc.pt/~jsoares/) [38] H. J. Sussmann, G. Q. Tang. Shortest paths for the Reeds-Shepp car: A worked out example of the use of geometric techniques in nonlinear optimal control, Technical Report 91-10, Rutgers Center for Systems and Control, September 1991. 264 BIBLIOGRAFIA [39] H. J. Sussmann, J. C. Willems. 300 Anos de Controlo Optimal: da Braquistócrona ao Princı́pio do Máximo, Boletim da SPM, 2001, 45, pp. 21–54. [40] F. Vivaldi. Experimental mathematics with Maple, Chapman & Hall/CRC Mathematics, Chapman & Hall/CRC, Boca Raton, FL, 2001. [41] Vladimir M. Tihomirov. Extremal Problems – Past and Present, The Teaching of Mathematics, 2002, Vol. V, 2, pp. 59–69. [42] Bruce van Brunt. The Calculus of Variations, Springer-Verlag New York, 2004. Índice n-ésima aproximação da solução pelo método condição de Legendre, 66 de Ritz, 44 condição de Legendre fortalecida, 68 Maple, 5, 19, 24, 40, 41, 46, 50, 64, 80, 89, 91, condição de mı́nimo, 86–88, 92 98, 99, 112–115, 117, 119, 121, 123– condição de máximo, 86, 92, 139 125, 128, 135, 138, 144, 147, 155, 251, Condição necessária de 2a ordem, 66 259 condição necessária de DuBois-Reymond, 79 acção, 110 admissı́vel, 100, 104 algoritmo, 7, 44, 79, 112 anormal, 12, 13, 17, 57, 58, 75, 78, 79 astrofı́sica, 131 autónomo, 41, 43, 103, 107, 110, 116, 122 condição necessária de Euler-Lagrange, 38 condição necessária de optimalidade, 110, 115 condição necessária de Weierstrass, 87 Condição suficiente de Jacobi, 68 condição suficiente de optimalidade, 82 condições complementares, 15 condições de fronteira, 38, 40, 51, 53, 55, 57, 70, 76, 100, 103, 136, 138 Bellman, 18, 84, 135 Bernoulli, 36 condições de transversalidade, 38, 39, 52, 76, 77 Bolza, 100, 101 braquistócrona, 35, 36, 42, 43 condição necessária de DuBois-Reymond, 77, 110 caracterı́stica, 9, 246 condição necessária de Erdmann, 110, 115 carro, 71, 114 conservação da massa, 109 caso conservação da quantidade de movimento, 41, 110 flat, 116 não flat, 116 conservação de carga eléctrica, 109 caso anormal, 12, 13, 17, 75, 79 conservação de energia, 41, 110 caso normal, 13, 55, 75, 77, 79, 82, 107 conservativo, 109 catenária, 36 controlo, 100, 106 chattering, 74 controlo extremal, 81, 88, 94 Chyba, 261 controlo minimizante, 100 Ciências do Espaço, 69, 99 Controlo Óptimo, 72, 100, 110, 111, 135 closed loop, 148 controlo óptimo, 122 condição de estacionaridade, 76, 79, 87, 112, controlos, 18, 69, 71 119, 122, 126, 132, 139, 257 controlos bang-bang, 74 265 266 ÍNDICE controlos extremais, 79 etapa, 18 convexidade, 82 Euler, 38, 109, 110, 135 curva de Newton, 95, 97 extr, 9 custo, 105 extremais, 40, 41, 52, 66, 76, 79, 110, 114, 122 Cálculo das Variações, 110, 135 extremais anormais, 76, 77, 80, 87, 93 cálculo das variações, 110 extremais de Pontryagin, 86, 90, 93, 94, 107, da Vinci, 109 decisão, 18 Dido, 54 dinâmica, 69, 100 108, 112, 114, 115, 117, 140, 257 extremais normais, 82 extremais rı́gidas, 56–59 extremal normal, 76, 78 distância mı́nima entre dois pontos, 35, 41 Fı́sica, 109, 110 drift, 122 famı́lia de transformações paramétricas, 110, DuBois-Reymond, 77, 79, 110 Economia, 110, 135 Emden-Fowler, 131, 132 Emmy Noether, 110 energia cinética, 36 energia potencial, 36, 37 Engenharia, 110 equação de controlo, 92 equação de estado, 70 120 famı́lia de transformações uni-paramétrica, 110 Fermat, 2, 3, 50 flat, 116, 117 função de Lagrange, 8, 9, 11, 15, 16, 55 função valor, 84 funções base, 44, 46 funcional custo, 105 funcional de Emden-Fowler, 132 equação de Euler-Lagrange, 38, 39, 76, 77, Galileu, 109 Gamkrelidze, 106 126, 137 equação de Euler-Lagrange de ordem supe- geometria sub-Riemanniana, 116, 117 geradores infinitesimais, 111–113, 126, 132, rior, 53, 78, 79 equação de Euler-Poisson, 53, 78 133, 259, 260 equação de Hamilton-Jacobi-Bellman, 86, 107, Graves, 76 grupo uni-paramétrico de transformações, 111– 135, 141, 142, 144, 148, 149 equação de Jacobi, 68 equação diferencial de Newton, 94, 97 equação diferencial de Thomas-Fermi, 133 equações de Euler-Lagrange, 110, 128 equações de Hamilton-Jacobi, 85 equações diferenciais, 109, 110 equações de Euler-Lagrange, 109, 110 Erdmann, 110, 115 estado, 100, 102–104, 106 estados, 18 114, 119 gráfico com superfı́cie de revolução mı́nima, 35, 42 Hamilton, 75 Hamiltoniano, 41, 75, 76, 79, 86, 88, 93, 111, 116, 122, 138, 257 Hestenes, 75, 76 homogeneidade do tempo, 110 identidade de Jacobi, 108, 109 ÍNDICE 267 integral de energia, 109 malha fechada, 148, 149 invariante, 111, 112, 114, 116, 117 Martinet, 116, 117 invariante no tempo, 103, 110 Mayer, 101 invariantes, 110 Mecânica, 35, 41, 125 invariância, 110, 111, 113, 120–123 mecânica, 110 invariância no tempo, 110 mecânica clássica, 110 invariância rotacional, 110 mecânica quântica, 110 invariância translacional, 110 meio raro, 72 minimizante, 100 Jacobi, 67, 68, 108 Karush-Kuhn-Tucker, 12, 15, 16, 90 Kepler, 109, 128, 129 Klein, 110 Lagrange, 12, 53, 101, 105, 109, 110 minimizante anormal, 11–13, 57 minimizante global, 2, 7, 82, 94 minimizante local, 7 minimizante normal, 12, 57 minimizantes anormais, 57, 58 momento angular, 110 Lagrangeano, 41, 42, 49, 52, 61, 82, 100, 104, multiplicador de Lagrange, 11, 12 105, 107, 109, 110, 123, 255, 257, 259, multiplicadores, 78, 79 260 mı́sseis, 71, 99 Legendre, 66, 67 método de Poisson, 107 lei das áreas, 109 método de Ritz, 44, 45 lei de conservação, 94, 106–110, 112–115, 117, método dos multiplicadores de Lagrange, 8, 12–14, 55, 56, 147 118, 120, 121, 123–132, 134, 260 lei de conservação geral, 114 lei de conservação normal, 107 lei de inércia, 109 lei do rendimento/riqueza, 110 Leibniz, 2 leis de conservação, 109, 110, 122, 123 leis de conservação normais, 107 leis de conservação, 122, 123 Newton, 2, 70–72, 87, 92, 133 Noether, 109, 110, 112–114, 116, 119, 121, 122, 126, 132, 133, 260 normal, 12, 13, 55, 57, 75–79, 81, 107, 139 não flat, 116, 117 plano, 116 Lema Fundamental do Cálculo das Variações, open loop, 148 50, 51, 53, 54, 57, 58 óptica geométrica, 110 Leonardo da Vinci, 109 Optimização Dinâmica, 95, 135, 143 Leonhard Euler, 109 Oscilador Harmónico com Amortecimento, 133, Lie, 110 134 mı́nimo global, 1, 7 parêntesis de Poisson, 107–109 mı́nimo local, 1, 2, 7 Pascal, 61 malha aberta, 148 perpetuum mobile, 109 268 ÍNDICE plano, 116 problemas isoperimétricos, 36, 37, 54 Poisson, 107, 109 processos, 70 ponto conjugado, 68 Programação Dinâmica, 18, 23, 26, 84, 135, Pontryagin, 74, 86, 92, 112, 114, 117, 129, 135, 139, 140, 257 251 Programação Matemática, 15, 17 primeiro integral, 106, 108, 109, 115, 116, 120, Programação Matemática não-linear, 38, 55, 121, 124 87, 90 primeiro integral normal, 107 primeiros integrais, 109 princı́pio, 110 Princı́pio de Bellman, 18, 84 Princı́pio de Optimalidade, 18 Princı́pio do Máximo de Pontryagin, 74, 76, 84, 86, 87, 90, 92, 139, 257 princı́pio do máximo fraco, 82 Princı́pio de Bellman, 135 Principia Mathematica, 92, 95 problema básico do Cálculo das Variações, 37 quantidades conservadas, 110 rank, 9, 246 relatividade, 110 restrição isoperimétrica, 55, 57, 59 restrições, 8 restrições isoperimétricas, 103 retrocesso, 19 Ritz, 43, 44 rumo, 122 problema de Bolza, 100 satélites artificiais, 71, 99 problema de braquistócrona, 36, 42, 43 segunda condição de Erdmann, 110, 115 problema de Dido, 37, 54, 58 segunda lei de Newton, 70, 87, 133 problema de Euclides, 2 simetria, 111–113, 121, 132 problema de investimento, 18, 25 sistema adjunto, 76–78, 86, 88, 92, 93, 116, Problema de Kepler, 128 122, 126, 139, 257 problema de Lagrange, 101 sistema completo de funções, 45 problema de Martinet, 116, 117 Sistema de Computação Algébrica, 5, 40, 41, problema de Mayer, 100 46, 80, 91, 117, 124, 135, 144, 147, Problema de Newton da Resistência mı́nima, 155, 251 71, 72, 92 problema de parar um pêndulo, 70, 80 sistema de controlo, 70, 76, 82, 86, 100, 114, 122–124, 139, 257 problema de percurso, 18, 24 sistema de controlo linear, 82 problema do Cálculo das Variações com derivadassistema de equações de Ritz da n-ésima aproxde ordem superior, 52, 72 imação, 46, 49 problema fundamental do Cálculo das Variações,sistema Hamiltoniano, 76, 79, 86, 92, 108, 43, 61, 72, 76, 77, 87, 107 112, 257 problema fundamental do cálculo das variações, Stagecoach Problem, 18 110 Taylor, 3 problema isoperimétrico, 57, 73, 74 problema paramétrico, 104 tempo, 100, 102, 119 ÍNDICE tempo mı́nimo, 36, 70, 71, 87, 90, 105, 106, 123, 124 Teorema da Função Implı́cita, 8, 12 Teorema de Fermat, 2 Teorema de Noether, 110–114, 116, 119, 121, 122, 126, 132, 133, 260 Teorema de Taylor, 3 teoria electromagnética, 110 eléctrica, 110 geral da relatividade, 110 gravitacional, 110 Thomas-Fermi, 132, 133 trajectória de estado, 100, 102, 104, 106 trajectórias extremais, 79 trajectórias minimizantes, 100 transformação uni-paramétrica, 120 transformações uni-paramétricas, 122 transformação do tempo, 116 triângulo de Pascal, 61 variáveis de controlo, 257, 259, 260 variáveis de estado, 18, 69, 79, 102–104, 257, 259, 260 variável tempo, 119 vector velocidade, 107, 257 Weierstrass, 15, 45, 87 269