Você está na página 1de 277

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
3.8 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

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 con-
tinuamente 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
x h H
estas notações, tem-se a = H. A área do paralelogramo é dada por x(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:
a  a  a2
f (x̃ + x) = +x −x = − x2 = f (x̃) − x2 .
2 2 4
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:
n
X f k (x̃)
0 ≤ f (x) − f (x̃) = (x − x̃)k + rn (x, x̃)
k!
k=1 (1.2)
f n (x̃)
= (x − x̃)n + rn (x, x̃) ,
n!
com
rn (x, x̃)
lim = 0. (1.3)
x→x̃ (x − x̃)n
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 f n (x̃) Rn (y,x̃)
A função Ψ(y) = f (x̃ + y n ) = f (x̃) + n! y + Rn (y, x̃), com limy→0 y = 0, tem
| {z }
x
mı́nimo local para y = 0:

f (x̃) ≤ f (x) ⇔ Ψ(0) ≤ Ψ(y) .


f n (x̃)
Como Ψ(·) é uma função diferenciável no ponto y = 0, Ψ′ (0) = n! , obtemos da
f n (x̃)
condição necessária de primeira ordem (Ψ′ (0) = 0) a conclusão desejada: n! =0⇒
f n (x̃) = 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):

f (x) − f (x̃) f (n) (x̃) rn (x, x̃)


0≤ = + .
(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 (n) (c)
f (x) = f (x̃) + (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. Pelo que foi referido anteriormente, e
f (n) (c) n
porque n é par, resulta que 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 anteri-
f (n) (c)
ormente, resulta que n! (x − x̃)n < 0. Então, f (x) − f (x̃) ≤ 0, verificando-se
a igualdade, tal como no 1o 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 iden-
tificaçã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).
1 7
Exemplo 7. Consideremos a função f (x) = 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,5 1 1,5 2
0

-0,2

-0,4

-0,6

-0,8
1.2 Funções vectoriais 7

1.2 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 difer-


enciável f (x), x ∈ Rn , tem mı́nimo local em x⋆ , então

∂f
= 0 i = 1, . . . , n . (1.5)
∂xi x=x⋆

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 )
Teorema 2, que ∂x1 ⋆
= 0. De modo semelhante, concluı́mos que as restantes
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 consid-
erar 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 , i = 1, . . . , m , x ∈ Rn , 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 re-
striçõ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 re-
striçõ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
 ∂g1 ∂g1

∂x1 ··· ∂xn
 T  T  .. .. .. 
∂g ∂f
T ∂g1 ∂gm ∂f  . . . 
rank [∇g(x), ∇f (x)] = , = ,..., , = 
∂x ∂x ∂x ∂x ∂x 
 ∂gm
··· ∂gm 
 (1.8)
∂x1 ∂xn
∂f ∂f
∂x1 ··· ∂xn

≤ rank∇g(x) ,

então existem constantes λj , j = 1, . . . , m, tais que função de Lagrange L,


m
X
L (x1 , . . . , xn , λ1 , . . . , λm ) = f (x) + λj gj (x)
j=1

= f (x) + λ · g(x) ,

∂L ∂L

satisfaz ∂x , ∂λ = 0, i.e. ∇ (f (x⋆ ) + λ · g(x⋆ )) = 0 e g(x⋆ ) = 0:
m
∂f (x⋆ ) X ∂gj (x⋆ )
+ λj = 0, i = 1, . . . , n , (1.9)
∂xi ∂xi
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 .

x23
Exemplo 12 (n = 3, m = 2). Sejam f (x) = f (x1 , x2 , x3 ) = 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 :
 
2 x1 1
∇g(x) = [∇g1 (x), ∇g2 (x)]T =  
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 2 5 1 2 1
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 ,
(1.11)
g(x, y) = 0 ,
onde f, g : R2 → R são funções suaves (f , g ∈ C 1 ). A restrição g(x, y) = 0 define implicita-
mente 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:
d ∂f ∂f
f (x(t), y(t)) = 0 ⇔ ẋ(t) + ẏ(t) = 0 . (1.12)
dt ∂x ∂y
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:
d ∂g ∂g
g (x(t), y(t)) = 0 ⇔ ẋ(t) + ẏ(t) = 0 , ∀t ∈ I . (1.13)
dt ∂x ∂y
A condição ∇g(x, y) 6= 0 implica que em todo o ponto da curva γ pelo menos uma das
∂g ∂g ∂g
derivadas ∂x ou ∂y é não nula. Admitamos, sem perda de generalidade, que ∂y 6= 0. Então
a equação (1.13) implica que
gx ẋ(t)
ẏ(t) = − , (1.14)
gy
∂g ∂g
onde gx = ∂x e gy = ∂y , e, consequentemente, (1.12) pode ser escrita como

ẋ(t)
(fx gy − fy gx ) = 0 . (1.15)
gy

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 , (1.16)
∂x ∂y ∂y ∂x

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 determi-
namos 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 .

∂L
O sistema é impossı́vel. Da primeira equação ∂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 ,

3λ (y − 1)2 = 0 , (1.17)



(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 15

1.4 Restrições de desigualdade e o Teorema de Karush-Kuhn-


Tucker

Consideramos agora o seguinte problema de Programação Matemática em Rn :

f (x) −→ min ,
gi (x) = 0 , i = 1, . . . , m , (1.18)
hj (x) ≤ 0 , j = 1, . . . , k ,

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
3. λ20 + m 2
i=1 λi +
2
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
u X X
Φ(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
(f (xγ ) − γ)+ gi (xγ ) (hj (xγ ))+
λγ0 = , λγi = , i = 1, . . . , m , µγj = , j = 1, . . . , k ,
Φ(xγ , γ) Φ(xγ , γ) Φ(xγ , γ)

podemos reescrever (1.20) na seguinte forma equivalente:

m
X k
X
λγ0 ∇f (xγ ) + λγi ∇gi (xγ ) + µγj ∇hj (xγ ) + 2 (xγ − x̃) = 0 . (1.21)
i=1 j=1

Resulta claro que


v
u m k
u γ X X
λγ0 ≥ 0 , µγj ≥ 0 , j = 1, . . . , k , t(λ )2 +
0
γ 2
(λi ) + (µγj )2 = 1 . (1.22)
i=1 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 corre-


spondente à 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 2 3

obtemos 
−2λ − 6µ = 5 ,
−3λ − 2µ = 3 ,
9
de onde tiramos que µ = − 14 < 0, o que é uma contradição. Desde modo, o único ponto
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 lin-
eares 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:
 
1 2 2 x23
f (x1 , x2 , x3 ) = x3 + x1 + x2 + −→ extr ,
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 sub-
problemas. 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 prob-
lema 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 designare-
mos 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.), igual-
mente 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 sub-
problema 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 PONTOS E(i) c(i, j, k), com k ∈ E(i − 1)


i j (em u.m.)
4 1 6 E(4) = {6} c(4, 6, 6) = 0
1 4 c(3, 4, 6) = 3
3 2 5 E(3) = {4, 5} c(3, 5, 6) = 4
1 c(2, 2, 4) = 7
2 2 c(2, 2, 5) = 7
2 3 E(2) = {2, 3} c(2, 3, 4) = 8
4 3 c(2, 3, 5) = 5
1 c(1, 1, 2) = 2
1 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)

e o próximo destino é
s(3, i) = 6, ∀i ∈ E(3) . (1.25)

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)} , i ∈ E(2) (1.26)


{j∈E(3)}
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.) s(i, j)
4 6 f (4, 6, 6) = 0
4 f (3, 4, 6) = 3 s(3, 4) = 6
3 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

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, sinte-
tizamos 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), pode-
mos 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 {c(i, j, k) + f (i + 1, k, 6)}, i ∈ {3, 2, 1}, j ∈ E(i) .
{k∈E(i+1)}

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 me-
dida 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 cal-
culamos 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 pub-


licitá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)} , ∀x ∈ {0, 1, · · · , 10} .


{y=0,··· ,x}

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 pub-
licitá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

x l(1, x) q(1, x)
ESTADO (m.u.m) (m.u.m) (m.u.m)
l(1, 0) = maxy=0 {p(1, y)}
1 0 = max{p(1, 0)} = 0 q(1, 0) = 0
l(1, 1) = max{y=0,1} {p(1, y)}
2 1 = max{p(1, 0), p(1, 1)} q(1, 1) = 1
= max{0, 1.20} = 1.20
l(1, 2) = max{y=0,1,2} {p(1, y)}
3 2 = max{p(1, 0), p(1, 1), p(1, 2)} q(1, 2) = 2
= max{0, 1.20, 2.70} = 2.70
l(1, 3) = max{y=0,··· ,3} {p(1, y)}
4 3 = 4.20 q(1, 3) = 3
l(1, 4) = max{y=0,··· ,4} {p(1, y)}
5 4 = 6.00 q(1, 4) = 4
l(1, 5) = max{y=0,··· ,5} {p(1, y)}
6 5 = 7.65 q(1, 5) = 5
l(1, 6) = max{y=0,··· ,6} {p(1, y)}
7 6 = 9.30 q(1, 6) = 6
l(1, 7) = max{y=0,··· ,7} {p(1, y)}
8 7 = 11.06 q(1, 7) = 7
l(1, 8) = max{y=0,··· ,8} {p(1, y)}
9 8 = 12.80 q(1, 8) = 8
l(1, 9) = max{y=0,··· ,9} {p(1, y)}
10 9 = 14.40 q(1, 9) = 9
l(1, 10) = max{y=0,··· ,10} {p(1, y)}
11 10 = 16.00 q(1, 10) = 10

Tabela 1.4: Resultados da etapa 1


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 pub-
licitá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)} , 0 ≤ x ≤ 10 .


{y=0,··· ,x}

A quantidade ideal a investir nos dois meios publicitários será:

q(2, x) = y , com p(2, y) + l(1, x − y) = l(2, x) ,

y ∈ {0, 1, · · · , x}, e
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 quan-
tia 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

x l(2, x) q(2, x) q(1, x − y)


ESTADO (m.u.m) (m.u.m) (m.u.m) (m.u.m)
l(2, 0) = max{y=0} {p(2, y) + l(1, 0 − y)}
1 0 max{p(2, 0) + l(1, 0)} q(2, 0) = 0 q(1, 0) = 0
= max{0 + 0} = 0
l(2, 1) = max{y=0,1} {p(2, y) + l(1, 1 − y)} q(1, 1 − 1)
2 1 = max{p(2, 0) + l(1, 1), p(2, 1) + l(1, 0)} q(2, 1) = 1 = q(1, 0)
=max{1.20,2.00}=2.00 =0
l(2, 2) = max{y=0,1,2} {p(2, y) + l(2, 1 − y)} q(1, 2 − 1)
3 2 = max{2.70, 3.20, 2.80} q(2, 2) = 1 q(1, 1)
= 3.20 =1
l(2, 3) = max{y=0,··· ,3} {p(2, y) + l(1, 1 − y)} q(1, 3 − 1)
4 3 = max{4.20, 4.70, 4.00, 4.65} q(2, 3) = 1 q(1, 2)
= 4.70 =2
l(2, 4) = max{y=0,··· ,4} {p(2, y) + l(1, 1 − y)} q(1, 4 − 4)
5 4 = max{6.00, 6.20, 5.50, 5.75, 6.60} q(2, 4) = 4 q(1, 0)
= 6.60 =0
l(2, 5) = max{y=0,··· ,5} {p(2, y) + l(1, 1 − y)} q(1, 5 − 5)
6 5 = max{7.65, 8.00, 7.00, 7.35, 7.80, 8.75} q(2, 5) = 5 q(1, 0)
= 8.75 =0
l(2, 6) = max{y=0,··· ,6} {p(2, y) + l(1, 1 − y)} q(1, 6 − 6)
7 6 = max{9.30, 9.65, 8.80, 8.85, 9.30, 9.95, 10.80} q(2, 6) = 6 q(1, 0)
= 10.80 =0
l(2, 7) = max{y=0,··· ,7} {p(2, y) + l(1, 1 − y)} q(1, 7 − 7)
8 7 = max{11.06, 11.30, 10.45, 10.65, 10.80, 11.45, q(2, 7) = 7 q(1, 0)
12.00, 12.95} = 12.95 =0
l(2, 8) = max{y=0,··· ,8} {p(2, y) + l(1, 1 − y)} q(1, 8 − 8)
9 8 = max{12.80, 13.06, 12.10, 12.30, 12.60, 12.95, q(2, 8) = 8 q(1, 0)
13.50, 14.15, 15.20} = 15.20 =0
l(2, 9) = max{y=0,··· ,9} {p(2, y) + l(1, 1 − y)} q(1, 9 − 9)
10 9 = max{14.40, 14.80, 13.86, 13.95, 14.25, 14.75, q(2, 9) = 9 q(1, 0)
15.00, 15.65, 16.40, 17.10} = 17.10 =0
l(2, 10) = max{y=0,··· ,10} {p(2, y) + l(1, 1 − y)} q(1, 10 − 10)
11 10 = max{16.00, 16.40, 15.60, 15.71, 15.90, 16.40 q(2, 10) = 10 q(1, 0)
16.80, 17.15, 17.90, 18.30, 19.00} = 19.00 =0

Tabela 1.5: Resultados da etapa 2


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

x l(3, x) q(3, x) q(2,x-y) q(1,x-y-z)


ESTADO (m.u.m) (m.u.m) (m.u.m) (m.u.m) (m.u.m)
l(3, 0) = max{y=0} {p(3, y) + l(2, 0 − y)}
1 0 = max{p(3, 0) + l(2, 0)} q(3, 0) = q(2, 0) q(1, 0)
= max{0 + 0} = max{0} = 0 =0 =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)+
2 1 +l(2, 1 − 1)} = max{p(3, 0) + l(2, 1), p(3, 1)+ q(3, 1) = q(2, 1) =q(1,0)
+l(2, 0)} = max{0 + 2.00, 1.30 + 0} =0 =1 =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)}
3 2 = max{p(3, 0) + l(2, 2), p(3, 1) + l(2, 1), q(3, 2) = q(2, 1) = q(1, 0)
p(3, 2) + l(2, 0)} =1 =1 =0
= max{3.20, 3.30, 2.90}
= 3.30
l(3, 3) = max{y=0,··· ,3} {p(3, y) + l(2, 3 − y)}
4 3 = max{4.70, 4.50, 4.90, 4.95} q(3, 3) = q(2, 0) q(1,0)
= 4.95 =3 =0 =0
l(3, 4) = max{y=0,··· ,4} {p(3, y) + l(2, 4 − y)}
5 4 = max{6.60, 6.00, 6.10, 6.95, 7.00} q(3, 4) = q(2, 0) q(1,0)
= 7.00 =4 =0 =0
l(3, 5) = max{y=0,··· ,5} {p(3, y) + l(2, 5 − y)}
6 5 = max{8.75, 7.90, 7.60, 8.15, 9.00, 8.50} q(3, 5) = q(2, 1) q(1,0)
= 9.00 =4 =1 =0
l(3, 6) = max{y=0,··· ,6} {p(3, y) + l(2, 6 − y)}
7 6 = max{10.80, 10.05, 9.50, 9.65, q(3, 6) = q(2, 0) q(1, 0)
10.20, 10.50, 12.30} = 12.30 =6 =0 =0
l(3, 7) = max{y=0,··· ,7} {p(3, y) + l(2, 7 − y)}
8 7 = max{12.95, 12.10, 11.65, 11.55, q(3, 7) = q(2, 0) q(1, 0)
11.70, 11.70, 14.30, 15.05} = 15.05 =7 =0 =0
l(3, 8) = max{y=0,··· ,8} {p(3, y) + l(2, 8 − y)}
9 8 = max{15.20, 14.25, 13.70, 13.70, 13.60, q(3, 8) = q(2, 0) q(1, 0)
13.20, 15.50, 17.05, 18.00} = 18.00 =8 =0 =0
l(3, 9) = max{y=0,··· ,9} {p(3, y) + l(2, 9 − y)}
10 9 = max{17.10, 16.50, 15.85, 15.75, 15.75, q(3, 9) = q(2, 0) q(1,0)
15.10, 17.00, 18.25, 20.00, 20.70} = 20.70 =9 =0 =0
l(3, 10) = max{y=0,··· ,10} {p(3, y)+
+l(2, 10 − y)} = max{19.00, 18.40, 18.10, q(3, 10) = q(2, 0) q(1, 0)
11 10 17.90, 17.80, 17.25, 18.90, 19.75, 21.20, = 10 =0 =0
22.70, 24.00} = 24.00

Tabela 1.6: Resultados da etapa 3


1.5 Programação Dinâmica em tempo discreto 33

x l(4, x) q(4, x) q(3, x − y) q(2, x − y − w) q(1, x − y − w − z)


ESTADO (m.u.m) (m.u.m) (m.u.m) (m.u.m) (m.u.m) (m.u.m)
l(4, 0) = max{y=0} {p(4, y) + l(3, 0 − y)}
1 0 = max{p(4, 0) + l(3, 0)} q(4, 0) q(3, 0) 0 0
= max{0 + 0} = max{0} = 0 =0 =0
l(4, 1) = max{y=0,1} {p(4, y) + l(3, 1 − y)} q(3, 1 − 0)
2 1 = max{p(4, 0) + l(3, 1), p(4, 1) + l(3, 0)} q(4, 1) = q(3, 1) 1 0
= max{2.00, 1.15} = 2.00 =0 =0
l(4, 2) = max{y=0,1,2} {p(4, y) + l(3, 2 − y)}
3 2 = max{3.30, 3.15, 2.50} q(4, 2) q(3, 2) 1 0
= 3.30 =0 =1
l(4, 3) = max{y=0,··· ,3} {p(4, y) + l(3, 3 − y)}
4 3 = max{4.95, 4.45, 4.50, 4.20} q(4, 3) q(3, 3) 0 0
= 4.95 =0 =3
l(4, 4) = max{y=0,··· ,4} {p(4, y) + l(3, 4 − y)}
5 4 = max{7.00, 6.10, 5.80, 6.20, 6.00} q(4, 4) q(3, 4) 0 0
= 7.00 =0 =4
l(4, 5) = max{y=0,··· ,5} {p(4, y) + l(3, 5 − y)}
6 5 = max{9.00, 8.15, 7.45, 7.50, 8.00, 8.10} q(4, 5) q(3, 5) 1 0
= 9.00 =0 =4
l(4, 6) = max{y=0,··· ,6} {p(4, y) + l(3, 6 − y)}
7 6 = max{12.30, 10.15, 9.50, 9.15, q(4, 6) q(3, 6) 0 0
9.30, 10.10, 10.50} = 12.30 =0 =6
l(4, 7) = max{y=0,··· ,7} {p(4, y) + l(3, 7 − y)}
8 7 = max{15.05, 13.45, 11.50, 11.20, q(4, 7) q(3, 7) 0 0
10.95, 11.40, 12.50, 12.60} = 15.05 =0 =7
l(4, 8) = max{y=0,··· ,8} {p(4, y) + l(3, 8 − y)}
9 8 = max{18.00, 16.20, 14.80, 13.20, 13.00, q(4, 8) q(3, 8) 0 0
13.05, 13.80, 14.60, 15.20} = 18.00 =0 =8
l(4, 9) = max{y=0,··· ,9} {p(4, y) + l(3, 9 − y)}
10 9 = max{20.70, 19.15, 17.55, 16.50, 15.00, q(4, 9) q(3, 0) 0 0
15.10, 15.45, 15.90, 17.20, 23.00} = 23.00 =9 =0
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, q(4, 10) q(3, 1) 1 0
11 10 17.10, 17.50, 17.55, 18.50, 25.00, 23.50} =9 =0
= 25.00

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);
9.00

> investimentoOptimo(problema,5);
[0, 1, 4, 0]

> lucroMaximo(problema,10);
25.00

> investimentoOptimo(problema,10);
[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 natu-
ralmente 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
J= ds = 1 + y ′ (x)2 dx −→ min ,
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:
Z b Z b p
J= 2πxds = 2π x 1 + y ′ (x)2 dx −→ min ,
a a
y(a) = c , 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
p
v= 2gy .

O tempo total T necessário para o corpo deslizar até à posição final (b, d) é dado por
Z Z bp
ds 1 + y ′ (x)2
T = = p dx .
v 0 2gy(x)

O problema é então formulado matematicamente como se segue:


Z bp
1 + y ′ (x)2
T [y(·)] = p dx −→ min ,
0 2gy(x)
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 Z a p
J = ρg yds = ρg y 1 + y ′2 dx ,
−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 Z b
J= 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 Euler-


Lagrange

A funcional fundamental do Cálculo das Variações tem a forma


Z b
F [y(·)] = f (x, y(x), y ′ (x))dx . (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 especi-
ficaremos 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 adi-
cionais 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
d ∂f  ∂f 

x, y(x), y ′ (x) = x, y(x), y ′ (x) (2.2)
dx ∂y ∂y
e as condições de transversalidade

∂f ′
 ∂f ′

x, y(x), y (x) = 0, x, y(x), y (x) = 0. (2.3)
∂y ′ x=a ∂y ′ x=b

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 (x, y(x), y ′ (x))dx ≈ h f (xk , yk , y ′ (xk ))
a k=0
(2.4)
n−1  
X yk+1 − yk
≈h f xk , yk , =: Φ(y0 , . . . , yn ) .
h
k=0

Uma vez que Φ(y0 , . . . , yn ) é uma função (e não uma funcional) de n + 1 variáveis indepen-
dentes, temos a seguinte condição necessária (Teorema 9):
∂Φ(y0 , . . . , yn )
= 0, i = 0, . . . , n . (2.5)
∂yi
2.2 Problema fundamental e as equações necessárias de Euler-Lagrange 39

Usamos a notação usual para as derivadas parciais:


∂f ∂f ∂f
fx = , fy = , fy′ = .
∂x ∂y ∂y ′
df
A derivada total dt é 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:
     
∂Φ d y1 − y 0 y1 − y 0 fy′ x0 , y0 , y1 −y
h
0
=0⇔ h f x0 , y0 , = 0 ⇔ fy x0 , y0 , − =0
∂y0 dy0 h h h
   
y1 − y 0 y1 − y 0
⇔ h fy x0 , y0 , = fy′ x0 , y0 , ;
h h
(2.6)
 
∂Φ d
 
yn − yn−1
 fy′ xn−1 , yn−1 , yn −yh n−1
=0⇔ h f xn−1 , yn−1 , =0⇔ =0
∂yn dyn h h (2.7)
 
yn − yn−1
⇔ fy′ xn−1 , yn−1 , = 0;
h
    
∂Φ d yi − yi−1 yi+1 − yi
= 0 (i = 1, . . . , n − 1) ⇔ h f xi−1 , yi−1 , + f xi , yi , =0
∂yi dyi h h
     
1 yi − yi−1 yi+1 − yi 1 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).

d
Desenvolvendo a derivada total da equação de Euler-Lagrange fy − 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 Z 1 
F [y(·)] = y 2 + y ′2 − 2y dx
0
quando sujeita às condições de fronteira

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 . (2.12)
dx
É 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
ex − e−x
ỹ(x) = 1 − . (2.13)
e − e−1
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));
e −x ex
y (x) = − e−1 −e1
+ 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
Z 1 
F [(ỹ + ϕ)(·)] − F [ỹ(·)] = ϕ2 + (ϕ′ )2 dx ≥ 0 .
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 Euler-
Lagrange). 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 La-
grangeano 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 d 2
d
dx2
y(x) ( dx y(x))2 ( dx 2 y(x))
q − d
=0
d
1 + ( dx y(x))2 (1 + ( dx y(x))2 )(3/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);
d2 d 2d
d
y(x) x ( dx 2 y(x)) x ( dx y(x))2 ( dx 2 y(x))
q dx + q − d
=0
d
1 + ( dx y(x))2 1 + ( dxd
y(x))2 (1 + ( dx y(x))2 )(3/2)
> 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
√ d
√ d2 d
√ √ √
1 ( dx 2 y(x)) 2 1 ( dx y(x))2 2 ( dx 2 y(x)) 1 ( dx y(x))2 2 g 1 %1 2 g
√ p − p − √ + =0
2 %1 g y(x) 2 %1(3/2) g y(x) 4 %1 (g y(x))(3/2) 4 (g y(x))(3/2)
d
%1 := 1 + ( dx y(x))2
> simplify(EL(f));
√ d2 d 2
1 2 (2 ( dx 2 y(x)) y(x) + ( dx y(x)) + 1)
d
p =0
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
√ 1 y(x) −

− %1 + C1 arctan  √ 2 
 − x − C2 = 0,
2 %1
 
C1
√ 1 y(x) −

%1 − C1 arctan  √ 2 
 − 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
√ 1 y(x) −

− %1 + C1 arctan  √ 2 
 − x − C2 = 0,
2 %1
 
C1
√ 1 y(x) −

%1 − C1 arctan  √ 2 
 − 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
1 1 + ( dx y(x)) 2 1 d
( dx y(x))2 2
p − q =K
2 g y(x) 2 1 + ( d y(x))2 pg y(x)
dx
> extr := dsolve(ELautonomo(f),y(x),parametric);

1
extr := [y( T ) = ,
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
x( T ) = ]
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:
Z b
F [y(·)] = f (x, y, y ′ )dx −→ min , (2.15)
a
 1

y(·) ∈ Y := y(·) ∈ C ([a, b]; R) : y(a) = ya , y(b) = yb . (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 Euler-
Lagrange (2.2):
d
fy −fy′ = 0 , y(a) = ya , y(b) = yb .
dx
Um tal algoritmo pertence à classe de métodos numéricos baseados na ideia de aproximar
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
n
X
yn (x) = ϕ0 (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
ϕ0 (x) = αx + β , com α = , β= . (2.18)
b−a b−a
As restantes funções ϕk , k = 1, . . . , n, chamadas funções base, satisfazem condições de homo-
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

g(x) − ck ϕk (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)| . (2.20)


x∈[a,b] x∈[a,b]

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 (x) − Pn (x)| = f (a) +
f (t)dt − f (a) − Qn (t)dt =
f (t) − Qn (t) dt
a a a
Z x
≤ |f ′ (t) − Qn (t)|dt < ε .
a

De maneira semelhante, podemos mostrar que uma função n-vezes continuamente difer-
enciá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
Pn
com yn (x) dado por (2.17): yn (x) = ϕ0 (x) + 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

Φ(c1 , . . . , cn ) = f x, yn (x), yn′ (x) dx ,
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 , k = 1, . . . , n ,
∂ck

e atendendo a que (usamos a notação c0 = 1)

Z n n
!
b
∂Φ ∂ X X
= f x, ci ϕi (x), ci ϕ′i (x) dx
∂ck ∂ck a i=0 i=0
Z n n
!
b X X
= fy x, ci ϕi (x), ci ϕ′i (x) ϕk (x)dx
a i=0 i=0
Z n n
!
b X X
+ fy′ x, ci ϕi (x), ci ϕ′i (x) ϕ′k (x)dx ,
a i=0 i=0

obtemos o chamado sistema de equações de Ritz da n-ésima aproximação:


Z b n n
! Z b n n
!
X X X X
fy x, ci ϕi (x), ci ϕ′i (x) ϕk (x)dx+ fy′ x, ci ϕi (x), ci ϕ′i (x) ϕ′k (x)dx = 0 ,
a i=0 i=0 a 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
Ψ ϕ0 (·) + ci ϕi (·) = 0 , i = 1, . . . , n .
∂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)
− 0.02316578298 sin (3 π x) + 0.009858917958 sin (4 π x)
> y(phib,5);
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 1
y ′′2 + [1 + 0.1 sin x] (y ′ )2 + (1 + 0.1 cos(2x)) y 2 − 2 sin(2x)y dx −→ min
0
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
Z b
F2 [y(·)] = f (x, y, y ′ , y ′′ )dx .
a
Exercı́cio 14. Determine as extremais para os seguintes problemas do Cálculo das Variações:
R1
(a) y ′2 dx −→ extr, y(0) = 1, y(1) = 0.
0
R1 
(b) 0 y − y ′2 dx −→ extr, y(0) = 0, y(1) = 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 sig-
nificado 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
n
X
ky(·)kC k ([a,b];Rn ) = kyi (·)kC k ([a,b];R) ,
i=1
Pk (α)
com kf (·)kC k ([a,b];R) = maxx∈[a,b] |f (x)| + α=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 Eu-


ler-Lagrange). Se y(·) é minimizante local do problema (2.4.1), então y(·) satisfaz as equações
de Euler-Lagrange:
∂f  d ∂f 
x, y(x), y ′ (x) − ′
x, y(x), y ′ (x) = 0 . (2.22)
∂y dx ∂y
Observação 37. A equação diferencial vectorial (2.22) pode ser escrita na forma

d
 f − dx fy1′ = 0 ,
 y1


..
 .


f − d f ′ = 0 .
yn dx yn
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 b 
Φ(ε) = F [y(·) + εϕ(·)] = f x, y(x) + εϕ(x), y ′ (x) + εϕ′ (x) dx , (2.23)
a

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 ib Z b d Z b
d
fyi′ ϕ′i dx = fyi′ ϕi − fyi′ ϕi dx = − fyi′ ϕi dx ,
a a a dx a dx
pelo que,
Z b 

 d ′

fyi x, y(x), y (x) − f ′ x, y(x), y (x) ϕi (x)dx = 0 , i = 1, . . . , n . (2.25)
a dx yi
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

Tem-se que g(x)ϕ0 (x) ≥ 0 ∀ x ∈ [a, b]; g(x)ϕ0 (x) > 0 para x ∈ (x0 − ε, x0 + ε). Logo,
Rb
a 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, (2.26)
x=a

fyi′ = 0, (2.27)
x=b

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)
Z 1 
J1 [x(·), y(·)] = x(t) + y(t) + ẋ(t)2 + ẏ(t)2 dt −→ extr
0
x(0) = y(0) = 1 , x(1) = y(1) = 2 .

(b)
Z π
2 
J2 [x(·), y(·)] = 2x(t)y(t) + ẋ(t)2 + ẏ(t)2 dt −→ min
0
π  π 
x(0) = y(0) = 0 , x =y = 1.
2 2

(c)
Z 1 
J3 [x(·), y(·)] = ẋ(t)2 + ẏ(t)2 + 2x(t) dt −→ extr
0
3
x(0) = 1 , y(0) = 0 , x(1) = , y(1) = 1 .
2

2.4.2 Problemas com derivadas de ordem superior

Consideramos agora o problema do Cálculo das Variações com derivadas de ordem supe-
rior:
Z b
Fm [y(·)] = f (x, y(x), y ′ (x), . . . , y (m) (x))dx −→ extr ,
a
y (a) = yai ,
(i)
y (i) (b) = ybi , i = 0, . . . , m − 1 , (2.28)
2m n
y(·) ∈ C ([a, b]; R ) ,

onde convencionamos y (0) (x) = y(x) e supomos o Lagrangeano (a função integranda) suficien-
temente 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):
m
X dk
fy (x, y(x), y ′ (x), . . . , y (m) (x)) + (−1)k f (k) (x, y(x), y ′ (x), . . . , y (m) (x)) = 0 . (2.29)
dxk y
k=1

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,
Z b  
Fm [(y + εϕ)(·)] = f x, y(x) + εϕ(x), y ′ (x) + εϕ′ (x), . . . , y (m) (x) + εϕ(m) (x) dx =: Φ(ε)
a

é função de ε e atinge mı́nimo local para ε = 0, pelo que Φ′ (ε)|ε=0 = 0:


Z m
!
b X
′ (m) ′ (m) (k)
fy (x, y(x), y (x), . . . , y (x))ϕ(x) + fy(k) (x, y(x), y (x), . . . , y (x))ϕ (x) dx = 0 .
a k=1
(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
′′

′ b d ′ d
fy′′ ϕ dx = fy′′ ϕ a − fy′′ ϕ dx = − fy′′ ϕ′ dx
a a dx a dx
b Z b 2 Z b 2
d d d
=− fy′′ ϕ + 2
fy′′ ϕdx = f ′′ ϕdx ;
2 y
dx a a dx a dx

em geral,
Z b
dk
fy(k) ϕ(k) dx = (−1)k f (k) ϕdx , k = 1, . . . , m .
a dxk y
54 Cálculo das Variações

A condição (2.30) pode então ser escrita na forma


Z m
!
b X dk k
fy + (−1) f (k) ϕdx = 0 ,
a dxk y
k=1

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 1 
F2a [y(·)] = 1 + y ′′ (x)2 dx −→ extr ,
0
y(0) = 0 , y(1) = 1 ,

y (0) = 1 , y ′ (1) = 1 .

(b)
Z X 
F2b [y(·)] = xy(x)2 + y(x)y ′ (x) + y ′′ (x)2 dx −→ extr ,
0
y(0) = A , y(X) = B ,

y (0) = α , y ′ (X) = β .

(c)
Z 1 
F2c [y(·)] = y 2 + 2y ′2 + y ′′2 dx −→ extr ,
0
y(0) = 0 , y(1) = 0 ,
y ′ (0) = 1 , y ′ (1) = − sinh(1) .

2.5 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
Z b
F [y(·)] = f (x, y(x), y ′ (x))dx −→ min (2.31)
a
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)

como também a restrição isoperimétrica


Z b
G[y(·)] = g(x, y(x), y ′ (x))dx = ξ , (2.33)
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
Z b  
J[y(·)] = F [y(·)] + λG[y(·)] = f x, y(x), y ′ (x) + λg x, y(x), y ′ (x) dx −→ min ,
a
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 1p √
G[y(·)] = 1 + y ′ (x)2 dx = 2,
0
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 1p
1 + y ′ (x)2 dx −→ min ,
0
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
h(ε1 , ε2 ) − ξ = 0 ,
Rb
com h(ε1 , ε2 ) = a 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′ (x, y, y ′ )ϕ′i dx = fy′ ϕi a − fy′ ϕi dx = − fy′ ϕi dx , i = 1,2;
a a dx a dx
Z b Z b
′ ′ d
λ gy′ (x, y, y )ϕi dx = −λ gy′ ϕi dx , i = 1 , 2 ;
a a dx
2.5 Problemas isoperimétricos 57

pelo que obtemos a condição necessária (2.35) na forma


Z b    
d d
fy − fy′ + λ gy − gy′ ϕi (x)dx = 0 , i = 1, 2 . (2.36)
a dx dx
A função ϕ1 (·) é arbitrária e o Lema Fundamental do Cálculo das Variações (Lema 38) implica
que  
d d d
fy − fy + λ gy −
′ gy = 0 ⇔ (f + λg)y −
′ (f + λg)y′ = 0 ,
dx dx dx
ou, se quisermos, a equação de Euler-Lagrange
d
Ly − Ly′ = 0 (2.37)
dx
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
d
é solução da equação de Euler-Lagrange gy − 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.,


d ∂L  ∂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 − fy′ ϕi (x)dx = 0 .
a dx
58 Cálculo das Variações

d
O Lema Fundamental do Cálculo das Variações dá-nos a condição fy − dx fy′ = 0 cujas soluções,
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 , i = 1, 2 . (2.39)
a dx dx
d
A condição é trivialmente satisfeita no caso anormal (gy − dx gy
′ = 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
J[y(·)] = y(x)dx −→ max ,
0
Z 1p
π
1 + y ′ (x)2 dx = ,
0 2
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 −1 + 4 λ2
extremais := y(x) = − −x2
+ x − + λ2 + ,
4 2
r √
1 −1 + 4 λ2
y(x) = −x2 + x − + λ2 −
4 2
> ELg := EL(g);
d2
dx2
y(x)
ELg := − d
=0
(1 + ( dx y(x))2 )(3/2)
> simplify(subs(extremais[1],ELg));
1
− r =0
√ λ2
−4 x2 + 4 x − 1 + 4 λ2
−4 x2 + 4 x − 1 + 4 λ2
> 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]

1 1

A extremal é um dos semicı́rculos de raio 2 e centro 2, 0 :
 2
2 2 1 1
y = −x + x ⇔ x− + y2 = .
2 4

Exercı́cio 17. Determine todas as extremais C 2 (candidatos a minimizante ou maximizante)


para os seguintes problemas isoperimétricos:

(a)
Z 1 
x2 + y ′ (x)2 dx −→ extr ,
0
Z 1
y(x)2 dx = 2 ,
0
y(0) = 0 , y(1) = 0 .

(b)
Z 1
y ′ (x)2 dx −→ extr ,
0
Z 1  1
y(x) − y ′ (x)2 dx = ,
0 12
1
y(0) = 0 , y(1) = .
4

(c)
Z 1
y ′2 dx −→ extr ,
0
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 61

2.6 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
Z b
Φ(ε) = F [y(·) + εϕ(·)] = f (x, y + εϕ, y ′ + εϕ′ )dx , ϕ(·) ∈ C02 ([a, b]; R) . (2.41)
a

Analisemos agora as derivadas de ordem superior de Φ(·) em ε = 0. Efectuando o cálculo das


primeiras quatro derivadas

dn ′ ′

f x, y(x) + εϕ(x), y (x) + εϕ (x) (2.42)
dεn ε=0

obtemos:
∂f ∂f
n=1: ϕ(x) + ′ ϕ′ (x) ;
∂y ∂y
2
∂ f 2 ∂2f ∂2f 2

n=2: ϕ (x) + 2 ϕ(x)ϕ (x) + ϕ (x) ;
∂y 2 ∂y∂y ′ ∂y ′2
∂3f 3 ∂3f 2 ′ ∂3f 2 ∂3f ′ 3
n=3: ϕ (x) + 3 ϕ (x)ϕ (x) + 3 ϕ(x)ϕ (x) + (ϕ ) (x) ;
∂y 3 ∂y 2 ∂y ′ ∂y∂y ′2 ∂y ′3
∂4f 4 ∂4f 3 ′ ∂4f 2 2 ∂4f
ϕ (x) + 4 ϕ (x)ϕ (x) + 6 ϕ (x)ϕ (x) + 4 ϕ(x)(ϕ′ )3 (x)
∂y 4 ∂y 3 ∂y ′ ∂y 2 ∂y ′2 ∂y∂y ′3
n=4:
∂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
1 2 1
1 3 3 1
1 4 6 4 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 . (2.43)
dεn ε=0 a k ∂y n−k ∂y ′k
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 X 1  
! Z b 
′ 1 ∂f 1−k ′ k ∂f ∂f ′
Φ (0) = ϕ (x)(ϕ ) (x) dx = ϕ(x) + ′ ϕ (x) dx ,
a k ∂y 1−k ∂y ′k a ∂y ∂y
k=0

o que está de acordo com (2.24). A partir da hipótese de indução


Z b X j  
!
dj Φ(ε) j ∂j f
= ϕj−k (x)(ϕ′ )k (x) dx , ∀j ≤ n ,
dεj ε=0 a k ∂y j−k ∂y ′k
k=0
temos de demonstrar que
n+1
!
dn+1 Φ(ε)
Z b X n+1

∂ n+1 f n+1−k ′ k
= ϕ (x)(ϕ ) (x) dx . (2.44)
dεn+1 ε=0 a k ∂y n+1−k ∂y ′k
k=0
Atendendo a que
 n 
dn+1 Φ(ε) dn+1 d d
= F [y(·) + εϕ(·)] = F [y(·) + εϕ(·)] ,
dεn+1 ε=0 dεn+1
ε=0 dε dεn
ε=0
pela hipótese de indução temos
Z bX n   n
!
dn+1 Φ(ε) d n ∂ f (x, y(x) + εϕ(x), y ′ (x) + εϕ′ (x)) n−k ′ k


= ϕ (x)(ϕ ) (x) dx ,
dεn+1 ε=0 dε a k ∂y n−k ∂y ′k
k=0 ε=0
ou seja,
n  
Z b hX
dn+1 Φ(ε) n ∂ n+1 f
= ϕn−k+1 (x)(ϕ′ )k (x)
dεn+1 ε=0 a k=0 k ∂y
n−k+1 ∂y ′k

n  
X n ∂ n+1 f n−k ′ k+1
i
+ ϕ (x)(ϕ ) (x) dx .
k ∂y n−k ∂y ′k+1
k=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)
dεn+1 ε=0 a r=−1 r + 1 ∂y n−r ∂y ′r+1

n  
X n ∂ n+1 f n−r ′ r+1
i
+ ϕ (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)
a r+1 r ∂y n−r ∂y ′r+1
r=0
∂ n+1 f n+1 ∂ n+1 f ′ n+1 o
+ ϕ (x) + (ϕ ) (x) dx . (2.45)
∂y n+1 ∂y ′n+1
n
 n
 n+1

Tendo em conta que r + r+1 = r+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
∂ n+1 f n+1 ∂ n+1 f
Pascal); que ∂y n+1
ϕ (x) corresponde à parcela da soma para r = −1; e que ∂y ′n+1
(ϕ′ )n+1 (x)
corresponde à parcela da soma para r = n; podemos reescrever (2.45) na forma
n 
Z b X 
dn+1 Φ(ε) n+1 ∂ n+1 f
= ϕn−r (x)(ϕ′ )r+1 (x) dx .
dεn+1 ε=0 a r + 1 ∂y n−r ∂y ′r+1
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 a k ∂y n+1−k ∂y ′k
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,
ε=0
n ∈ N, Φ(ε) dado por (2.41), então y(·) satisfaz a condição
∂ 2n f ′

x, y(x), y (x) ≥ 0, ∀ x ∈ [a, b] (2.46)
∂y ′2n
64 Cálculo das Variações

∂ 2n f
(respectivamente ∂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) d2n Φ(ε) 2n ∂ 2n f (x, y(x), y ′ (x)) 2n−k
Φ (0) = = ϕ (x)(ϕ′ )k (x)dx
dε2n ε=0 a k=0 k ∂y 2n−k ∂y ′k
Z b "2n−1
X 2n ∂ 2n f (x, y(x), y ′ (x))
#
2n−k ′ k ∂ 2n f (x, y(x), y ′ (x)) ′ 2n
= ϕ (x)(ϕ ) (x) + (ϕ ) (x) dx .
a k ∂y 2n−k ∂y ′k ∂y ′2n
k=0
(2.47)

∂ 2n f (x,y(x),y ′ (x))
Seja Qk (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εΦ(ε)

2n < 0, o que contradiz o Corolário 45. Uma vez que P (·) é contı́nua em [a, b],
ε=0
existe um γ > 0 tal que P (x) < P (c)/2, ∀x ∈]c − γ, c + γ[. Consideremos a seguinte função
ϕ(·), definida em [a, b]:

(  
4 π(x−c)
sin γ se x ∈ [c − γ, c + γ]
ϕ(x) = . (2.48)
0 se x 6∈ [c − γ, c + γ]

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

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:


(    
4π π(x−c) π(x−c)
sin3 cos se x ∈ [c − γ, c + γ]
ϕ′ (x) = γ γ γ
.
0 se x 6∈ [c − γ, c + γ]

Para este ϕ(·), usando as notações introduzidas, vem de (2.47) que


2n−1
X Z c+γ 2n Z c+γ
d2n Φ(ε) 2n−k ′ k
= Qk (x)ϕ (x)(ϕ ) (x) + P (x)(ϕ′ )2n (x)dx
dε2n ε=0 c−γ k c−γ
k=0
2n−1
X Z c+γ 2n Z c+γ
|Qk (x)| ϕ2n−k (x) (ϕ′ )k (x) + P (x)(ϕ′ )2n (x)dx .


c−γ k 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  
d2n Φ(ε) P (c) 4π 2n
< 2γ M + 2γ
dε2n ε=0 k γ 2 γ
k=0
2n−1
X 2n  4π k  2n

= 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

2n−2 d Φ(ε)
(γ + 4π)2n − (4π)2n P (c)(4π)2n
γ < 2M + . (2.49)
dε2n ε=0 γ γ
66 Cálculo das Variações

Atendendo que
P (c)(4π)2n
lim = −∞ ,
γ→0 γ
(γ + 4π)2n − (4π)2n
lim = 2n(4π)2n−1 ,
γ→0 γ
concluı́mos que para γ suficientemente
pequeno o segundo membro da desigualdade (2.49)
d2n Φ(ε)
tem sinal negativo, ou seja, dε2n < 0. Este facto contradiz o Corolário 45. O absurdo
ε=0
∂ 2n L(c,x(c),ẋ(c))
resulta de termos suposto a existência de um c ∈ [a, b] tal que P (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
∂y = 0 e ∂f (x,y,y
∂y ′ = √xy ′2 , então (2.2) toma a
1+y
forma:
!
d xy ′ (t) xy ′ (x) p
p =0⇔ p = c ⇔ xy ′ (x) = c 1 + y ′2 (x) .
dx 1 + y ′2 (x) 1 + y ′2 (x)
Resolvendo esta equação diferencial, e usando as condições de fronteira, obtêm-se os can-
didatos 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
∂ 2 f (x, y, y ′ ) x
′2
=p
∂y (1 + y ′2 )3
2.7 Condição suficiente de Jacobi 67

∂2f ∂2f
e, por conseguinte, ∂y ′2
≥ 0 para x ∈ [0, 1] e ∂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 prob-


lema 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
I[ϕ(·)] = fyy (x, y(x), y (x)) − fyy′ (x, y(x), y (x)) ϕ2 (x)

a dx
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 
2
Φ(ε) = fyy (x, y, y ′ )ϕ2 + 2fyy′ (x, y, y ′ )ϕϕ′ + fy′ y′ (x, y, y ′ )(ϕ′ )2 dx . (2.52)

ε=0 a

Integrando por partes o segundo termo na função integranda obtemos:


Z b Z b Z b
′ ′ ′
b d d
2fyy′ (x, y, y )ϕϕ dx = fyy′ (x, y, y )ϕ2 a − fyy′ ϕ2 dx = − fyy′ ϕ2 dx . (2.53)
a a dx a dx

Substituindo (2.53) em (2.52) obtemos


Z b   
′′ d 2 ′ 2
Φ (0) = fyy − fyy′ ϕ + fy′ y′ (ϕ ) (x) dx
a dx

e a conclusão segue da condição necessária dada pelo Teorema 5.


68 Cálculo das Variações

Com a notação
d
P (x) = fy′ y′ (x, y(x), y ′ (x)) , Q(x) = fyy (x, y(x), y ′ (x)) − fyy′ (x, y(x), y ′ (x)) ,
dx
podemos escrever a funcional I[ϕ(·)] (2.51) da seguinte maneira:
Z b
 
I[ϕ(·)] = P (x)ϕ′ (x)2 + Q(x)ϕ(x)2 dx , (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 . (2.55)
dx
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
J[y(·)] = y ′ (x)2 dx −→ min ,
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 diferen-
ciais
dx(t)
ẋ(t) = = ϕ (t, x(t), u(t)) , (3.1)
dt
onde
u = (u1 , . . . , um )
representam os controlos exercidos sobre o sistema, com a finalidade de controlá-lo em de-
terminada 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 , ∀ t ∈ [a, T ] , (3.2)

69
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 funcional-
objectivo Z T
I[x(·), u(·)] = 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 M

x0 (0) = 0 , x1 (0) = 0 ,
x0 (T ) = H , 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,
u(t) k
ẋ0 (t) = x1 (t) , ẋ1 (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
1 dt −→ min ,
0

ou o problema de pará-lo com o mı́nimo gasto de energia:


Z T
u(t)2 dt −→ min .
0

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 cer-
tas 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
R problemas de Controlo
 Óptimo. Por exemplo: ir
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:
Z T
t
R[u(·)] = dt −→ min
0 1 + u(t)2
ẋ(t) = u(t) , u(t) ≥ 0 ,
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 b
f (t, x(t), ẋ(t))dt −→ min ,
a
x(a) = xa , x(b) = xb ,

é equivalente ao problema de Controlo Óptimo


Z b
I[x(·), u(·)] = f (t, x(t), u(t))dt −→ min ,
a
ẋ(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
L(t, x(t), ẋ(t), . . . , x(r) (t))dt −→ min ,
a
x(a) = x0a , x(b) = x0b , (3.3)
..
.
x(r−1) (a) = xar−1 , x(r−1) (b) = xbr−1 ,
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 ):
Z b
I [X(·), u(·)] = L (t, X(t), u(t)) dt −→ min ,
a



 ẋ0 (t) = x1 (t)





ẋ1 (t) = x2 (t)

..
. ⇔ Ẋ(t) = AX(t) + Bu(t) , (3.4)






 ẋ(r−2) (t) = xr−1 (t)


ẋ(r−1) (t) = u(t)
X(a) = α , X(b) = β ,

com
 
0 1 0 0 ··· 0
   
 0 0 1 0 ··· 0  0    
   .  x0a x0b
 0 0 0 1 ··· 0   ..   .   . 

A=

,  ,
B= α= .  . 
 . ,  . .
β=
.. .. .. .. . . 
 . . . . . 0   0 



 xar−1 xbr−1
 0 0 0 0 ··· 1  1
0 0 0 0 ··· 0

Por último, o problema isoperimétrico


Z b
L (t, x(t), ẋ(t)) dt −→ min ,
a
Z b
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:
Z t
xn+1 (t) = K1 (τ, x(τ ), ẋ(τ )) dτ ,
a
..
.
Z t
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 n 1 n

xi (a) = xai , xi (b) = xbi ,


xn+j (a) = 0 , 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 ) corre-
sponde 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:


Z T
I [x(·), u(·)] = L (t, x(t), u(t)) dt −→ min ,
a (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
Z T
J [x(·), u(·), ψ(·)] = [ψ0 L(t, x(t), u(t)) + ψ(t) · (ϕ(t, x(t), u(t)) − ẋ(t))] dt −→ min (3.6)
a

(ψ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
Z T
J [x(·), u(·), ψ(·)] = [H(t, x(t), u(t), ψ0 , ψ(t)) − ψ(t) · ẋ(t)] dt −→ min .
a

As equações de Euler-Lagrange dão-nos:


   
d ∂ ∂ ∂H


 dt ∂ ẋ (H − ψ · ẋ) = ∂x (H − ψ · ẋ) 

−ψ̇ = ∂x
   
d ∂ ∂ ⇔ ∂H
(H − ψ · ẋ) = ∂u (H − ψ · ẋ) 0=
 dt h ∂ u̇
 i 
 ∂u

 d ∂ (H − ψ · ẋ) = ∂ (H − ψ · ẋ)  ∂H
∂ψ −
0 = ẋ .
dt ∂ ψ̇ ∂ψ

Temos então o seguinte resultado:

Teorema 56 (Condição necessária de 1a ordem de Hestenes para o problema de Con-


trolo Ó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)) ;
∂x 0

(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 Teo-
∂H
rema 56 chamamos extremais. A primeira equação do sistema Hamiltoniano, ẋ = ∂ψ , 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
dH ∂H ∂H ∂H ∂H
= + · ẋ + · u̇ + · ψ̇ .
dt ∂t ∂x ∂u ∂ψ
Usando o sistema Hamiltoniano e a condição de estacionaridade, obtemos a igualdade pre-
dH ∂H ∂H ∂H ∂H ∂H ∂H
tendida: dt = ∂t + ∂x · ∂ψ − ∂ψ · ∂x = ∂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);
d ∂L ∂L
(b) x(·) satisfaz a equação de Euler-Lagrange dt ∂u = ∂x (cf. (2.2));
3.2 Abordagem Hamiltoniana e a condição necessária de Hestenes 77

∂L ∂L
(c) se x(a) for livre, então ∂u (a, x(a), u(a)) = 0; se x(b) for livre, então ∂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
∂L
ψ(t) = − (t, x(t), u(t)) . (3.8)
∂u
d ∂L
Derivando a igualdade (3.8) em relação a t obtemos ψ̇ = − dt ∂u ; enquanto o sistema adjunto
afirma que ψ̇ = − ∂H ∂L
∂x , ou seja, ψ̇ = − ∂x . Comparando as duas expressões obtemos a equação
d ∂L ∂L
de Euler-Lagrange: dt ∂u = ∂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:
 
∂L d ∂L
(t, x(t), ẋ(t)) = L (t, x(t), ẋ(t)) − (t, x(t), ẋ(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 ∂H
dt = ∂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
H t, x0 , . . . , xr−1 , u, ψ0 , ψ 0 , . . . , ψ r−1 = ψ0 L t, x0 , . . . , xr−1 , u + ψ i · xi+1 + ψ r−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 di ∂L
i dr ∂L
(−1) i i + (−1)r = 0.
dt ∂x dtr ∂u
i=0

∂H
Demonstração. Da condição de estacionaridade ∂u = 0 obtemos ψ r−1 = −ψ0 ∂L
∂u ; o sistema
adjunto toma a forma (i = 1, . . . , r − 1)
 
ψ̇ 0 = − ∂H ψ̇ 0 ∂L
= −ψ0 ∂x
∂x0 0
⇔ (3.9)
ψ̇ i = − ∂H ψ̇ i ∂L
= −ψ0 ∂x i−1 .
∂xi i − ψ

As condições

∂L
ψ r−1 = −ψ0 ,
∂u
∂L
ψ i−1 = −ψ̇ i − ψ0 , i = r − 1, . . . , 1 ,
∂xi
dão-nos
∂L
ψ r−1 = − ψ0 ,
∂u
d ∂L ∂L
ψ r−2 = + ψ0 − ψ0 r−1 ,
dt ∂u ∂x
d2 ∂L d ∂L ∂L
ψ r−3 = − ψ0 2 + ψ0 − ψ0 r−2 ,
dt ∂u dt ∂xr−1 ∂x
..
.

ou, de um modo geral,


j−1
dj−1 ∂L X
j+k d
j−1−k ∂L
ψ r−j = (−1)j ψ0 j−1
+ ψ 0 (−1) j−1−k
, j = 1, . . . , r . (3.10)
dt ∂u dt ∂xr−k
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
0 dr ∂L X
r dr−k ∂L
ψ̇ = (−1) r + (−1)r+k r−k r−k ;
dt ∂u dt ∂x
k=1

e comparando as expressões (fazer a mudança de variável i = r − k):


r−1  
dr ∂L X
r
i
i d ∂L ∂L
(−1) r + (−1) i i = − 0 .
dt ∂u dt ∂x ∂x
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
 
d X d ∂L
= L t, x(t), ẋ(t), . . . , x(r) (t) − (−1)i i i+j · x(j) (t) .
dt  dt ∂x 
j=1 i=0

dH ∂H
Para isso particularize a igualdade dt = ∂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 Hamil-


toniano 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 1
u(t)2 dt −→ min , (3.11)
0

ẋ (t) = x (t) ,
1 2
ẋ (t) = −π 2 x (t) + u(t) ,
2 1
π
x1 (0) = , x1 (1) = 0 ,
4
x2 (0) = 1 , 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: definiç~
ao do Hamiltoniano
> 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
∂H ∂H
Da condição de estacionaridade ∂u = 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));
d
eq1A := 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
eq1 := dt ψ1 (t) = ψ2 (t) π 2
> eq2 := diff(psi2(t),t) = - D[2](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t));
d
eq2 := dt ψ2 (t) = −ψ1 (t)
> eq3 := diff(x1(t),t) = D[4](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t));
d
eq3 := dt x1 (t) = x2 (t)
> eq4 := diff(x2(t),t) = D[5](H)(x1(t),x2(t),1,psi1(t),psi2(t),u(t));
d
eq4 := 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));
−4 sin(π t)−π sin(π t)−cos(π t)π 2 +4 sin(π t)t+cos(π t)π 2 t
− 14 π
> 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: controlo extremal
> u(t);
−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 1 
x2 − xu + u2 dt −→ min , ẋ = x + u , x(0) = x0 , x(1) = x1 .
0

3.3 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,
Z T
I [x(·), u(·)] = L (t, x(t), u(t)) dt −→ min ,
a
ẋ(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:
Z T
I [x(·), u(·)] − I [x̃(·), ũ(·)] = [L(t, x, u) − L(t, x̃, ũ)] dt
a
Z T 
∂L ∂L
≥ (t, x̃, ũ) (x − x̃) + (t, x̃, ũ) (u − ũ) dt . (3.12)
a ∂x ∂u
3.4 Programação Dinâmica em tempo contı́nuo 83

∂H
Da condição de estacionaridade ∂u = 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 ,

∂L ∂L
ψ̇(t) = − (t, x̃, ũ) − ψ(t)A ⇔ (t, x̃, ũ) = −ψ̇(t) − ψ(t)A ;
∂x ∂x
pelo que vem de (3.12) que
Z T h  i
I [x(·), u(·)] − I [x̃(·), ũ(·)] ≥ −ψ̇(t) − ψ(t)A (x(t) − x̃(t)) − ψ(t)B (u(t) − ũ(t)) dt .
a

Fazendo primitivação por partes, e usando as condições de fronteira ou as condições de


transversalidade, sabemos que
Z T T Z

ψ̇(t) (x(t) − x̃(t)) dt = (x(t) − x̃(t)) ψ(t)|Ta
− ˙
ẋ(t) − x̃(t) ψ(t)dt
a a
Z T
=− [Ax(t) + Bu(t) − Ax̃(t) − B ũ(t)] ψ(t)dt ,
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 1
u(t)2 dt −→ min , ẋ(t) = u(t) + ax(t) , a ∈ R, x(0) = 1 .
0

(b) 
Z 1 ẋ (t) = x (t) ,
1 2
u(t)2 dt −→ min , x1 (0) = 1 , x1 (1) = 0 , x2 (0) = 1 .
0 ẋ (t) = u(t) ,
2

3.4 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 T
L (t, x(t), u(t)) dt −→ min ,
a
(3.13)
ẋ(t) = ϕ (t, x(t), u(t)) , u(t) ∈ U ,
x(a) = xa , 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 satis-
fazem. 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 perspec-
tiva 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


(Z
T
S(t, x) = min L (τ, x(τ ), u(τ )) dτ :
(x(·),u(·)) 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:


"Z
t′
S(t, x) = min L (τ, z(τ ), v(τ )) dτ : z ′ (τ ) = ϕ (τ, z(τ ), v(τ )) , v(τ ) ∈ U ,
(z(·),v(·)) t
#

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:


" Z t′
1
0= min ′
L (τ, z(τ ), v(τ )) dτ : z ′ (τ ) = ϕ (τ, z(τ ), v(τ )) , v(τ ) ∈ U ,
(z(·),v(·)) t −t t
#
S (t′ , x + y(t′ − t)) − S(t, x)
z(t) = x , z(t′ ) = x + y(t′ − t) + .
t′ − t

z(t′ )−z(t)
Tomando o limite quando t′ → t concluı́mos que (reparar que t′ −t = y)

∂S ∂S
0 = min [L(t, x, v) : y = ϕ(t, x, v)] + (t, x) + (t, x) · y ,
v∈U ∂t ∂x
3.4 Programação Dinâmica em tempo contı́nuo 85

ou seja,
 
∂S ∂S
(t, x) = − min L(t, x, v) + (t, x) · ϕ(t, x, v) . (3.15)
∂t v∈U ∂x

Vamos derivar, formalmente, as equações de Hamilton-Jacobi do Controlo Óptimo. Supon-


hamos que para todo o t ∈ [a, T ] e todo o x ∈ Rn existe um processo optimal (x̃(·), ũ(·)) solução
do problema de Controlo Óptimo
Z T
C[t, x(·), u(·)] = L (τ, x(τ ), u(τ )) dτ −→ min ,
t
ẋ(τ ) = ϕ (τ, x(τ ), u(τ )) , u(τ ) ∈ U ,
x(t) = x , x(T ) = xT .

Temos então que x̃(t) = x e


Z T
S(t, x) = S (t, x̃(t)) = C[t, x̃(·), ũ(·)] = 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)) , (3.16)
∂t ∂x

ou seja,
 
∂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

∂S
L (t, x̃(t), ũ(t)) + (t, x̃(t)) · ϕ (t, x̃(t), ũ(t))
∂x  
∂S
= min L (t, x̃(t), v) + (t, x̃(t)) · ϕ (t, x̃(t), v) . (3.17)
v∈U ∂x

Se fizermos
∂S
ψ(t) = ψ0 (t, x̃(t)) , (3.18)
∂x
ψ0 constante, obtemos
 
d ∂S ∂2S ∂2S
ψ̇(t) = ψ0 (t, x̃(t)) = ψ0 (t, x̃(t)) + ψ0 2 (t, x̃(t)) · ϕ (t, x̃(t), ũ(t))
dt ∂x ∂t∂x ∂x
 
∂ ∂S ∂S ∂S ∂
= ψ0 (t, x̃(t)) + (t, x̃(t)) · ϕ(t, x̃(t), ũ(t)) − ψ0 (t, x̃(t)) (ϕ(t, x̃(t), ũ(t)))
∂x ∂t ∂x ∂x ∂x
(3.16) ∂L ∂ϕ
= −ψ0 (t, x̃(t), ũ(t)) − ψ(t) · (t, x̃(t), ũ(t)) .
∂x ∂x
(3.19)
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))] , (3.20)


v∈U
∂H
ψ̇(t) = − (t, x̃(t), ũ(t), ψ0 , ψ(t)) . (3.21)
∂x
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 . (3.22)
∂t v∈U ∂x

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
−p0 (t, x̃(t)) + max H t, x̃(t), v, p0 , p0 (t, x̃(t)) = 0 .
∂t v∈U ∂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 Pon-


tryagin, 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
(3.23)
ψ̇(t) = − ∂H (t, x(t), u(t), ψ , ψ(t)) (sistema adjunto) ;
∂x 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 estacionari-
∂H
dade ∂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 funda-


mental do Cálculo das Variações,
Z b
J[x(·)] = L(t, x(t), ẋ(t))dt −→ min ,
a
x(a) = A , x(b) = B ,

então x(·) satisfaz a seguinte desigualdade:


∂L
L(t, x(t), v) − L(t, x(t), ẋ(t)) − (t, x(t), ẋ(t)) · (v − ẋ(t)) ≥ 0 , ∀ v ∈ Rn .
∂u
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
⇔ L(t, x(t), ẋ(t)) − (t, x(t), ẋ(t)) · ẋ(t) ≤ L(t, x(t), v) − (t, x(t), ẋ(t)) · v ∀ v ∈ Rn
∂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
1dt −→ min (T −→ min) ,
0

ẋ = x ,
1 2
u ∈ [−a, b] ,
ẋ = u ,
2

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} . (3.24)
v∈[−a,b]

Por outro lado o sistema adjunto toma a forma


  
ψ̇ = − ∂H ψ̇ = 0 ψ = −d
1 ∂x1 1 1
⇔ ⇔
ψ̇ = − ∂H ψ̇ = −ψ ψ = dt + c
2 ∂x2 2 1 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
x1 (0) = x2 (0) = 0 .
ẋ = b ,
2

A solução é dada por 


x (t) = bt ,
2
t ∈ [0, τ ] .
x (t) = b t2 ,
1 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 bτ 2
x1 (τ ) = , x2 (τ ) = bτ .
ẋ = −a ,
2
2

Resulta 
x (t) = bτ − a(t − τ ) ,
2
t ∈ [τ, T ] .
x (t) = bτ t − τ  − a (t − τ )2 ,
1 2 2

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 = . (3.25)
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);
τ (b+a)
T1 := a
> T2 := solve(x1(T)=alpha,T);
√ √
aτ +bτ + aτ 2 b+b2 τ 2 −2 aα aτ +bτ − aτ 2 b+b2 τ 2 −2 aα
T2 := a , a
> stau := solve(T1 = T2[1],tau);
90 Controlo Óptimo

√ √ √ √
2 b(b+a)aα 2 b(b+a)aα
stau := b(b+a) , − b(b+a)
> solve(T1 = T2[2],tau);
√ √ √ √
2 b(b+a)aα 2 b(b+a)aα
b(b+a) , − b(b+a)
> tau := stau[1];
√ √
2 b(b+a)aα
τ := b(b+a)
> T := T1;
√ √
2 b(b+a)aα
T := 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
(3.26)
ẋ = x + u ,
2 1 2

(u1 (t), u2 (t)) ∈ U = (u1 , u2 ) ∈ R2 : u21 + u22 ≤ 1 , t ∈ [0, T ] ,
x1 (0) = a , x2 (0) = b , x1 (T ) = 0 , 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 ψ1 v1 + ψ2 v2 : v12 + v22 ≤ 1 . (3.27)
(v1 ,v2 )

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 ψ2
u1 = − p 2 , u2 = − p 2 . (3.28)
ψ1 + ψ22 ψ1 + ψ22

Determinamos ψ1 (·) e ψ2 (·) usando o sistema adjunto,


 
ψ̇ = − ∂H , ψ̇ = −ψ ,
1 ∂x1 1 2

ψ̇ = − ∂H , ψ̇ = ψ ;
2 ∂x2 2 1

substituindo as expressões encontradas para ψ1 e ψ2 em (3.28) obtêm-se os controlos ex-


tremais; 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 ex-


tremais. 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)
uu1 := t → −
p
C2 2 + C1 2
> uu2 := unapply(simplify(u2(psi1(t),psi2(t))),t);
C1 sin(t) + C2 cos(t)
uu2 := t → −
p
C2 2 + C1 2
> eq1 := D(x1)(t)=-x2(t)+uu1(t);
C1 cos(t) − C2 sin(t)
eq1 := D(x1 )(t) = −x2(t) − p
C2 2 + C1 2
> eq2 := D(x2)(t)=x1(t)+uu2(t);
C1 sin(t) + C2 cos(t)
eq2 := D(x2 )(t) = x1(t) −
p
C2 2 + C1 2
> # trajectorias extremais (constantes determinadas usando as condiç~
oes
> de fronteira)
> dsolve({eq1,eq2});

t C2 C1 t C1
{x2(t) = (− p −p + C3 ) cos(t) + ( C4 − p ) sin(t),
2 2 2 2
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
+ cos(t) C1 t − C1 sin(t)) C2 2 + C1 2 }
> assign(%);
> x1 := unapply(x1(t),t);
92 Controlo Óptimo

p p
x1 := t → −(−cos(t) C4 C2 2 + C1 2 + sin(t) C3 C2 2 + C1 2 − sin(t) C2 t
p
+ cos(t) C1 t − C1 sin(t)) C2 2 + C1 2
> x2 := unapply(x2(t),t);

x2 := t →
t C2 C1 t C1
(− p −p + C3 ) cos(t) + ( C4 − p ) sin(t)
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
R [u(·)] = L (x, u(x)) dx → min
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)
∂y 0

(ii) a condição de máximo

H(x, u(x), ψ0 , ψ(x)) = maxH(x, u, ψ0 , ψ(x)) , (3.30)


u≥0
3.6 Problema de Newton da Resistência mı́nima 93

onde o Hamiltoniano H é definido por


x
H(x, u(x), ψ0 , ψ(x)) = ψ0 L(x, u(x)) + ψ(x)u(x) = ψ0 + ψ(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


x
H (x, u(x), ψ0 , ψ(x)) = ψ0 + ψ(x)u(x) ,
1 + u2 (x)

não depende de y(·), donde pelo sistema adjunto concluı́mos que

∂H
ψ̇(x) = − (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
 
x
max {ψ0 L(x, u) + cu} = max ψ0 + cu
u≥0 u≥0 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} , λ ∈ R+ ,
u≥0

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

∂H 2xu(x) xu(x) λ
(x, u(x)) = 0 ⇔ 2 −λ=0⇔ 2 = , (3.31)
∂u 2
(1 + u (x)) 2
(1 + u (x)) 2

ou seja,
xu(x)
= q, com q uma constante estritamente positiva . (3.32)
(1 + u2 (x))2

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 garan-
tir 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 mini-
mizantes 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


x
de máximo (3.30) do Teorema 71. Como L(x, u) = 1+u2
≥ 0 podemos escrever, da condição
de máximo, que

−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) satis-
fazem
Z r Z r
u(x)dx = ẏ(x)dx = y(r) − y(0) = H ,
0 0
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
Z0 r 0
Z r 0 0

⇔ 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,
Z r Z r
R [û(·)] = L (x, û(x)) dx ≤ L (x, u(x)) dx = R [u(·)] ,
0 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 re-


sistência mı́nima (3.29) e obter as expressões indicadas por Newton no seu Principia Mathe-
matica.

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 ,

(3.34)
 λ 3 4
 7λ
y(u) =
2 − ln u + u2 + 4u − 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 é,
 
xu λ 
2 2 λ 1 3
= ⇔ 2ux = λ 1 + u ⇔x= + 2u + u .
(1 + u2 )2 2 2 u

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


d dy dx dx
y(x(u)) = =u ,
du dx du du
dy R dx
uma vez que dx = u. Vem então que y(u) = u du du. Como
 
dx λ 1 2
(u) = − 2 + 2 + 3u ,
du 2 u
logo, Z    
λ 1 2 λ 2 3 4
y(u) = u − 2 + 2 + 3u du = − ln u + u + u + m , (3.35)
2 u 2 4
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 con-
tinuidade 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(ξ, û(ξ)) = − − λû(ξ) .
1+02
1 + (û(ξ))2
3.6 Problema de Newton da Resistência mı́nima 97

Logo, a partir de (3.36), temos

ξ
H(ξ, 0) = H (ξ, û(ξ)) ⇔ ξ = + λû(ξ) . (3.37)
1 + (û(ξ))2

Por outro lado, û(ξ) tem que satisfazer a equação diferencial de Newton (3.31), donde

ξ û(ξ) λ
 2 = . (3.38)
2 2
1 + (û(ξ))

Resolvendo a equação (3.37) em ordem à constante λ,


 
2
ξ ξ −ξ + ξ 1 + (û(ξ))
ξ= 2 + λû(ξ) ⇔ − 2 + ξ = λû(ξ) ⇔ = λû(ξ)
1 + (û(ξ)) 1 + (û(ξ)) 1 + (û(ξ))2
ξ (û(ξ))2 ξ û(ξ)
⇔ 2 = λû(ξ) ⇔ = λ,
1 + (û(ξ)) 1 + (û(ξ))2

concluı́mos que a constante λ é dada pela condição

ξ û(ξ)
λ= . (3.39)
1 + (û(ξ))2

Substituindo (3.39) em (3.38) obtemos

ξ û(ξ) ξ û(ξ)
 2 =   ⇔ û2 (ξ) = 1 .
2 2
1 + (û(ξ)) 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,

 
λ 3 7λ
y (û(ξ)) = 0 ⇔ y(1) = 0 ⇔ − ln 1 + 1 + +m=0⇔ = −m ,
2 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λ,  


λ 1 3
2λ ≤ + 2u + u ≤ r .
2 u
λ 1

Da inequação 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});

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 Controlo Óptimo

3.7 Outros formatos para o problema de Controlo Óptimo

Nesta secção coligimos várias formulações equivalentes do problema matemático do con-


trolo ó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
Z β
I [x(·), u(·)] = L (α, x(α), β, x(β)) + 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

dx(t)
ẋ(t) = = ϕ (t, x(t), u(t)) , (3.41)
dt
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 con-
siste 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 equiva-
lentes 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 [α, β]:


Z t
x0 (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
(3.43)
ẋ(t) = ϕ (t, x(t), u(t)) ,

(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
L (α, x(α), β, x(β))
x0 (t) ≡ .
β−α
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
(3.44)
ẋ(t) = ϕ (t, x(t), u(t)) ,

(x0 (α), x0 (β), α, x(α), β, x(β)) ∈ X0 × X0 × F ,


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
(τ − a) (β − α)
t=α+ , a ≤ τ ≤ b, (3.45)
b−a
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(a), z(a), t(b), z(b)) + L (t(τ ), z(τ ), v(τ )) x0 (τ )dτ −→ min ,
a

dt(τ )

 t′ (τ ) = = x0 (τ ) ,



 dτ

dx0 (τ )
x′0 (τ ) = = 0, (3.46)


 dτ

z ′ (τ ) = dz(τ ) = ϕ (t(τ ), z(τ ), v(τ )) x (τ ) ,


0

t(b) − t(a)
(t(a), z(a), t(b), z(b)) ∈ F , x0 (a) = x0 (b) =
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
(τ −a)(β−α)
que (t(·), x0 (·), z(·), v(·)) é admissı́vel para o problema (3.46) com t(τ ) = α + b−a ,
t(b)−t(a) β−α
x0 (τ ) = b−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−α)(b−a)
τ (t) = 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 (α, x(α), β, x(β)) + L (t, x(t), u(t)) dt −→ min ,
α

ẋ(t) = ϕ (t, x(t), u(t)) ,
(3.48)
ẏ(t) = 0 , y = (y , y , . . . , y ) ∈ R1+n ,
0 1 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 invari-
antes 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 β
hi (t, x(t), u(t)) dt ≤ ci , i = 1, . . . , p ,
α
Z β
(3.49)
hj (t, x(t), u(t)) dt = cj , 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, in-
troduzindo 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

Z t
y(t) = h (τ, x(τ ), u(τ )) dτ , t ∈ [α, β] ,
α

é admissı́vel para o problema

Z β
L (α, x(α), β, x(β)) + L (t, x(t), u(t)) dt −→ min ,
α

ẋ(t) = ϕ (t, x(t), u(t)) ,
(3.50)
ẏ(t) = h (t, x(t), u(t)) ,

(α, 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:

Z β
I [x(·), π, u(·)] = L (α, x(α), β, x(β)) + 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 β
I [z(·), u(·)] = L (α, x(α), β, x(β)) + L (t, z(t), u(t)) dt −→ min ,
α

ẋ(t) = ϕ (t, z(t), u(t)) ,
ż(t) = (3.52)
ẏ(t) = 0 ,

(α, 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)) , u(t) ∈ U . (3.53)

3.7.3 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)) , t ∈ [a, T ] . (3.54)
∂Fi
Supomos F (·, ·), ∂xj (·, ·), 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 in-
feriormente, 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
τ (t) = L (θ, x(θ), u(θ)) dθ , t ∈ [a, b] .
a

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(τ )) dx (t(τ )) dt(τ ) ϕ (t(τ ), x (t(τ )) , u (t(τ )))


= = . (3.56)
dτ dt dτ L (t(τ ), x (t(τ )) , u(t(τ )))

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 −→ min

′ 1
t (τ ) =


L (t(τ ), z(τ ), v(τ ))
(3.57)
 ϕ (t(τ ), z(τ ), v(τ ))
z ′ (τ )
 =
L (t(τ ), z(τ ), v(τ ))
v:R→U,
t(0) = a , t(T ) = b .

3.8 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, (3.58)
∂t v∈U ∂x
∂S
dependendo de k parâmetros reais α1 , . . . , αk . Então cada derivada ∂α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:
 
d ∂S ∂2S ∂2S ˙ ∂2S ∂2S ∂H
= + · x̃(t) = + · . (3.59)
dt ∂αi ∂t∂αi ∂x∂αi ∂t∂αi ∂x∂αi ∂ψ
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
∂2S ∂H ∂2S
+ · = 0. (3.60)
∂t∂αi ∂ψ ∂x∂αi
 
d ∂S
De (3.59) e (3.60) resulta a conclusão desejada: dt ∂αi = 0.

3.8.1 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 ∂B ∂A
{A, B} = · − · .
∂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:
dC ∂C
= + {C, H} . (3.63)
dt ∂t
Demonstração. A derivada total de C é dada por
dC ∂C ∂C ∂C
= + · ẋ(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 (3.64)
∂t ∂x ∂ψ ∂ψ ∂x
é satisfeita ao longo das extremais de Pontryagin do problema de controlo óptimo.
3.8 Leis de Conservação 109

dH ∂H
Observação 84. Para C = H obtemos de (3.63) a igualdade dt = ∂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.

dC
Demonstração. Se C(t, x, ψ) é um primeiro integral isso significa (cf. Definição 77) que dt =0
∂C
ao longo das extremais. Pela Proposição 82 temos então que ∂t + {C, H} = 0. Como por
hipótese A e B são primeiros integrais podemos escrever que
 
{A, H} = − ∂A , {H, A} = ∂A ,
∂t ∂t
⇔ (3.65)
{B, H} = − ∂B , {H, B} = ∂B .
∂t ∂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 . (3.66)

Usando (3.65), a expressão (3.66) toma a forma


   
∂A ∂B
{{A, B}, H} + ,B − ,A = 0
∂t ∂t
∂ 2 A ∂B ∂B ∂ 2 A ∂ 2 B ∂A ∂A ∂ 2 B
⇔ {{A, B}, H} + − − + = 0. (3.67)
∂t∂x ∂ψ ∂x ∂t∂ψ ∂t∂x ∂ψ ∂x ∂t∂ψ

O Teorema está demonstrado ao notarmos que (3.67) é equivalente a d{A,B}


dt = 0:
 
d{A, B} (3.63) ∂ ∂ ∂A ∂B ∂B ∂A
= {A, B} + {{A, B}, H} = · − · + {{A, B}, H}
dt ∂t ∂t ∂x ∂ψ ∂x ∂ψ
∂ 2 A ∂B ∂A ∂ 2 B ∂ 2 B ∂A ∂B ∂ 2 A
= · + · − · − · + {{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 impossibil-
idade 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 tra-
balhos de Klein e Lie sobre as propriedades de transformação de equações diferenciais, pub-
licou 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 rela-
Rb
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 impor-
tante 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
T (t, x, u, ψ0 , ψ) = ht (t, x, u, ψ0 , ψ, s) , X(t, x, u, ψ0 , ψ) = hx (t, x, u, ψ0 , ψ, s) ,
ds s=0 ds s=0
(3.71)

d d
U (t, x, u, ψ0 , ψ) = hu (t, x, u, ψ0 , ψ, s) , Ψ(t, x, u, ψ0 , ψ) = hψ (t, x, u, ψ0 , ψ, s) .
ds s=0 ds 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)
dt t 0
−hψ (t, x(t), u(t), ψ0 , ψ(t), s) · dh (t,x(t),u(t),ψ ,ψ(t),s) = 0,
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 igual-


dade (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 Hamil-
toniano, a condição de estacionaridade e a propriedade dada pela Proposição 57 permitem
escrever (3.73) na forma

dH dX dT d
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 uni-
paramé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

ser primeiro integral é a de que ψx ∂H ∂H ∂H


∂t + ψH ∂ψ − Hx ∂x = 0. Um problema muito simples
com o primeiro integral (3.75) é portanto
Z b
L (u(t)) dt −→ min , (3.76)
a
ẋ(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). Con-


sidere-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


x˙ (t) = u1 (t) sin x3 (t) , (3.78)
 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 b
I [x(·), u(·)] = etx(t) u(t) dt −→ min ,
a
ẋ(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, %);

 
2
C1 x(t)ψ(t) + ψ0 etx(t) u(t) + ψ(t)tx(t) (u(t)) tC1 = const

Escolhendo C1 = 1

> 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 b
(u1 (t))2 + (u2 (t))2 dt −→ min
a



 x˙1 (t) = u1 (t) ,


 u2 (t)
x˙2 (t) = , α ∈ R,
 1 + αx1 (t)



x˙3 (t) = (x2 (t))2 u1 (t) .

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 3
do sistema adjunto e da Proposição 57). Quando α =
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 (Teo-
rema 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
es (αx1 +1)−1
Definição 86, sob hst = e2s t, hsx1 = α , hsx2 = x2 , e hsx3 = es x3 , novamente com
hsu1 = e−s u1 e hsu2 = e−s u2 . Conclua do Teorema 88 que
 
1
ψ1 (t) x1 (t) + + ψ3 x3 (t) − 2Ht = const (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)


   
2 2 u2 (t)ψ2 (t) 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)
   
2 2 u2 (t)ψ2 (t) 2
− 2 ψ0 (u1 (t)) + (u2 (t)) + u1 (t)ψ1 (t) + + (x2 (t)) u1 (t)ψ3 (t) t = const
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˙3 (t) = −x 1 (t) (x1 (t)) + (x2 (t)) + u1 (t)

  
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 ; (3.84)
∂t ∂xi ∂ψi ∂ψi ∂xi
i=1 i=1
∂H ∂H
que da condição de estacionaridade ∂u1 = 0 e ∂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
Ψ2 = −C1 ψ1 , U1 = −C2 u2 − 1/2 , Ψ4 = −C1 ψ3 , Ψ3 = C1 ψ4 , T = C3
ψ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 1 3


 ẋ3 = u2



 ẋ4 = 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

∂hsx1 ∂hsx2 ∂hsx3 ∂hsx4
= 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 trans-
formaçõ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 indi-
cados, 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 verifi-
cadas, por diferenciação, usando o correspondente sistema adjunto ψ̇ = − ∂H
∂x e a condição
∂H
de estacionaridade ∂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 . (3.86)

Da definição do Hamiltoniano, a igualdade (3.86) é equivalente a H = −ψ0 (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
(u(t))2 dt −→ min ,
a

ẋ(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 , (3.87)


h i
onde H = ψ0 (u(t))2 + ψx 1 + (y(t))2 + ψy (t)u(t).
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.
RT
Exercı́cio 32 (n = 4, r = 1). Considere-se o problema de tempo mı́nimo ( 0 1dt → min)
com sistema de controlo



 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),%);

 2 !
d d
LC := C2 ψ(t) − ψ0 t 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);

 
d d2
−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),%);

 
d d
sist := ψ(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

 2
d d
C2 C2 − t2 C1 x(t) − tC1 C2 x(t) = const
dt dt
e simplificarmos as constantes,

> subs(C[2]*_C2=0,C[1]=-1,%);

 2
d d
t2 x (t) + t C2 x (t) = const
dt 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):
m 2  K
L(t, q, q̇) = 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
L := 1/2 m v1 2 + v2 2 + p
q1 2 + q2 2
x := [q1 , q2 ]
u := [v1 , v2 ]
ϕ := [v1 , v2 ]

> EulerLagrange(L,t,x,u);

 

 2 2


d Kq1 (t) d Kq2 (t)
−m 2 q1 (t) −  = 0, −m q 2 (t) − = 0
 dt 2 2
 3/2 dt2 
2 2
 3/2 
 q1 (t) + q2 (t) q1 (t) + q2 (t) 

> SimetriaCO(L, phi, t, x, u);

n (C1 − C2 ) ψ2
T = C3 , U1 = −C2 v2 + , Ψ2 = C1 ψ1 , Ψ1 = −C1 ψ2 , X1 = −C1 q2 ,
ψ0 m
(C1 − C2 ) ψ1 o
U2 = C2 v1 − , X2 = C1 q1
ψ0 m
3.8 Leis de Conservação 129

> LC:=NoetherCO(L, phi, t, x, u, %);

 
  K
2 2
LC := −C1 q2 (t)ψ1 (t) + C1 q1 (t)ψ2 (t) − ψ0 1/2 m (v1 (t)) + (v2 (t)) +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);

!
2 2
 K
H := 1/2 m v1 + v2 +p + v1 ψ1 (t) + v2 ψ2 (t)
q1 2 + q2 2

> 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) respectiva-
mente 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));

 2  2
d d d d
C1 q2 (t)m q1 (t) − C1 q1 (t)m q2 (t) + 1/2 C3 m q1 (t) + 1/2 C3 m q2 (t)
dt dt dt dt
C3 K
−q = const
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
LC := (C3 x1 (t) + C5 ) ψ1 (t) + (tC1 + 3 C3 x2 (t) + C6 ) ψ2 (t) − C3 x1 (t) ψ3 (t) +
dt
   2  2 2 !
d d d d
C1 + C3 x2 (t) ψ4 (t) − ψ0 x1 (t) + 2
x2 (t) + ψ1 (t) x1 (t)
dt dt dt dt
!
d d2 d2
+ ψ2 (t) x2 (t) + ψ3 (t) 2 x1 (t) + ψ4 (t) 2 x2 (t) (2 C3 t + C4 ) = const
dt dt dt

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 x1 (t) + 2
x2 (t) + C6 x1 (t) + C5 x2 (t)
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);

 
x6
t2 v 2 − 3
L :=
2
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 2 d 2 5
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(%);

 2
d d 6
−C1 x(t)ψ0 t2 x(t) − t3 C1 ψ0 x(t) − 1/3 t3 C1 ψ0 (x(t)) = const
dt dt
Atribuindo o valor apropriado à variável de integração

> subs(C[1]=-3/psi[0],%);

 2
d d 6
3 x(t)t2 x(t) + 3 t3 x(t) + t3 (x(t)) = const
dt 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
v2 2 x2
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);

( 3
)
d2 (x (t)) 2
EL := − 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);

1  at
L := mv 2 − kx2 e m
2
Para determinar um primeiro integral da equação de Euler-Lagrange, encontramos os ger-
R
adores infinitesimais sob os quais a funcional integral J[x(·)] = Ldt é invariante:

> SimetriaCO(L,v,t,x,v);

 
(−C4 − C2 − C3 ) a − 2 mC1
Ψ = −ψ C1 , U = C1 v, T = + C3 + C2 + C4 , X = C1 x
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 at
o
ψ(t) = −ψ0 mve m

> simplify(subs(%,v(t)=diff(x(t),t),v=diff(x(t),t),LC));

   2 !
at d d 2
−C1 ψ0 me m x(t) 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]),%);

   2 !
at d d 2
−1/2 e m x(t) x(t) a + m x(t) + k (x(t)) = const
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 Eu-
ler, 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 ape-
nas 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 proble-
mas 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 conduz-
nos à 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)) , (4.2)


x(a) = xa , x(T ) = xT , (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


Z T
V [u(·)] = e−δt ln (u(t)) dt (4.6)
0
4.2 Determinação da extremal via Cálculo das Variações 137

sujeita a

ẋ(t) = rx(t) − u(t) , (4.7)


x(0) = x0 , 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 equiv-
alente:
Z T
J[x(·)] = e−δt ln (rx(t) − ẋ(t)) dt −→ max , (4.10)
0
x(0) = x0 , x(T ) = xT , δ > 0. (4.11)

Aplicando a equação de Euler-Lagrange (2.2) a (4.10) obtemos

d  −δt 
e−δt r (rx − ẋ)−1 = −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:


p √
(2r − δ) ± (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 = α + β ,
(4.13)
xT = αerT + βe(r−δ)T .

Resolvendo (4.13) em ordem a α e β obtemos:

xT e−rT − x0 e−δT x0 − xT e−rT


α= , β= .
1 − e−δT 1 − e−δT
A extremal de Euler-Lagrange é então:
xT e−rT − x0 e−δT rt x0 − xT e−rT (r−δ)t
x(t) = e + e . (4.14)
1 − e−δT 1 − e−δT
O correspondente controlo extremal u(t) é facilmente obtido usando a expressão (4.9). Pode-
mos 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 esta-


∂H
cionaridade ∂u = 0:
ψ0 e−δt
− ψ(t) = 0 . (4.15)
u(t)
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 igual-
dade (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,
e−δt
ψ(t) = . (4.16)
u(t)
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:
e−δt 1 (r−δ)t
u(t) = −rt
⇔ u(t) = e . (4.19)
ψ(0)e ψ(0)
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
xp (t) = ,
δψ(0)
pelo que a solução geral da equação diferencial ordinária (4.20) é dada por x(t) = xh (t)+xp (t):
e(r−δ)t
x(t) = + Aert . (4.21)
δψ(0)
As constantes A e ψ(0) são determinadas usando as condições de fronteira (4.8):

x 1
0 = δψ(0) + A,
(r−δ)T
x =e T + AerT .
δψ(0)
Resolvendo estas duas equações obtemos
1 x0 − xT e−rT xT e−rT − x0 e−δT
= , A= ,
δψ(0) 1 − 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 1 e−t(δ+r) rt
ψ (t) = C2 e , u (t) = − , x (t) = − + C1 e
C2 e−rt eδ t δ C2 e−rt
4.4 Determinação da extremal via Programação Dinâmica 141

4.4 Determinação da extremal via Programação Dinâmica

Para um problema
Z T
L (t, x(t), u(t)) dt −→ max ,
0
ẋ(t) = ϕ (t, x(t), u(t)) , u(t) ∈ U ,
x(0) = x0 , 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 , (4.22)
∂t u∈U ∂x
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) + S (t, x) (rx − u)
∂t ∂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);

e−δ t
u := ∂
∂x S (t, x)
e a equação de Hamilton-Jacobi-Bellman a resolver toma a forma

> simplify(HJB=0);

!
∂ e−δ t ∂
S (t, x) + e−δ t ln ∂
+ rx S (t, x) − e−δ t = 0
∂t ∂x S (t, x)
∂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:
Z T
V [u(·)] = ln (u(t)) dt −→ max ,
0
ẋ(t) = −u(t) , (4.23)
x(0) = x0 , 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) − S (t, x) u
∂t ∂x
A condição necessária de primeira ordem dá-nos

> u := solve(diff(HJB,u)=0,u);

 −1

u := S (t, x)
∂x
e o método resume-se a resolver a equação às derivadas parciais

> eq := simplify(HJB=0);

 −1 !
∂ ∂
S (t, x) + ln S (t, x) −1=0
∂t ∂x
∂S −1

Resolvendo a equação diferencial anterior obtemos S(t, x) e, deste modo, u = ∂x :

> s := pdsolve(eq,build);


S (t, x) = −t ln c 2 −1 + t + C1 + c 2 x + C2
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);

t
x (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});

 
T
C1 = x0 , c 2 = −
−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);

−x0 + xT

T

4.5 Conclusão

O Cálculo das Variações, a Programação Dinâmica e o Controlo Óptimo – os três paradig-


mas 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 sen-


tido 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. Us-
ando 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
∂f ′
autónomo), então f − ∂y ′ y define uma lei de conservação.

4. Determine as extremais para os seguintes problemas do Cálculo das Variações:

R1 
(a) 01 + y ′′ (x)2 dx −→ extr, y(0) = 0, y(1) = 1, y ′ (0) = 1, y ′ (1) = 1.
R1 R1  1
(b) 0 y ′ (x)2 dx −→ extr, 0 y(x) − y ′ (x)2 dx = 12 , y(0) = 0, y(1) = 41 .

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 extre-


mante (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 
I[x(·)] = ẋ2 (t) − x2 (t) dt −→ min ,
0
  
2 3π
x(·) ∈ C 0, ;R ,
2
 

x(0) = 0 , x = 0.
2

(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 2t3 . Repare
∞ 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:



Z π ẋ (t) = x (t) ,
2 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 π

(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.

2 sin(t)t 2 sin(t) 2 cos(t)t 4 cos(t)


(a) x1 (t) = π ; x2 (t) = π + π ; u(t) = π ; ψ2 (t) = 2u(t); ψ1 (t) =
−ψ̇2 (t).
2 sin(t)t
(b) Extremal de Euler-Lagrange: x (t) = π .

(c) Equação de Hamilton-Jacobi-Bellman:

 2
1 ∂S ∂S
(t, x1 , x2 ) + (t, x1 , x2 ) x2
4 ∂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 h  i
− 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
pc := {x3 = 1 − , 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 e lambda2 = 0.
> # Logo podemos fazer lambda0 = 1
> v := subs(lambda0=1,pc[2]);
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);
d2
eqEL := 2 ( dt2 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);


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

d
sa1 := dt ψ1(t) = ψ2(t)
> sa2 := diff(psi2(t),t) = - subs(S,diff(H,x2));
d
sa2 := dt ψ2(t) = −ψ1(t)
> # n~
ao existe caso anormal: psi0=0 => psi2=0 => psi1=0
> u(t) := solve(subs(psi0=-1,ce),u(t));
1
u(t) := ψ2(t)
2
> psis := dsolve({sa1,sa2});
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];
d d 1
sc := dt x1(t) = x2(t), dt x2(t) = −x1(t) + ψ2(t)
2
> assign(psis);
> sc;
d d 1 1
dt x1(t) = x2(t), dt x2(t) = −x1(t) +
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) 2 cos(t) t 2 sin(t) t
xs := x2(t) = + , x1(t) =
π π π
> assign(xs);
> u(t) := diff(x2(t),t)+x1(t);
4 cos(t)
u(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));
d d2
arg := t, x(t), dt x(t), 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);
d 2 d 4
eqEP := 4 ( dt2 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
x(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;

1 1
eq := 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,
> # 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);
d d 1 1
sc := dτ x1(τ ) = x2(τ ), dτ x2(τ ) = −x1(τ ) + C1 cos(τ ) − C2 sin(τ )
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) 2 cos(t) t 2 sin(t) t
xs := x2(t) = + , x1(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úsculas-
maiú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 ilustra-
tivos. Podemos determinar o limite
3x − 1
lim
x→∞ x arctan(x) + ln(x)
> limit((3*x-1)/(x*arctan(x)+ln(x)),x=infinity);

1
6
π

a derivada de cos x3 ln(1 − x5 )

> diff(cos(x^3*ln(1-x^5)),x);

 
3 5 2 x7 5
− sin(x ln(1 − x )) 3 x ln(1 − x ) − 5
1 − x5
a primitiva

> p := Int(x^3 * sqrt(x^4 - a^4),x);

Z p
p := x3 x4 − a4 dx

> value(p);

1 4 3/2
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});

 
31 22 1
x= ,y = − ,z = −
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

0.5

–2 –1 0 1 2
x
–0.5

–1

–1.5

Expressões Aritméticas

A aritmética em Z é trivial com o Maple.

> 5+3;

> 5
> +
> 3
> ;
159

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, sub-
tracçã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);

O Maple realiza sempre a divisão da esquerda para a direita:

> 8/4/2;

O Maple é muito tolerante a parênteses redundantes:

> (((((8/((((4)))))))))/(((2)));

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;

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
(C.1)
7×8
é 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;

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:
> %%-%;

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

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 é irrele-
vante. 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


  
1 1 2 9a
4 −a +b − 1
a2 b4 (b−1)2
−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 alge-
bricamente

> 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 orga-
nizar n pontos no plano de forma a formar um array rectangular com d linhas. Se mudarmos
n
linhas e colunas (se rodarmos o array de 90o ) obtemos um novo array com q = d linhas.
n
Desta interpretação geométrica concluı́mos que os divisores vêm aos pares: d|n ⇒ d |n.
n
Uma vez que a cada divisor d de n corresponde o divisor gémeo d, 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

n = dq + r 0≤r<d

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 “inte-
ger”).
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);

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

O conjunto Z não é fechado sob a divisão: dados a, b ∈ Z, b 6= 0, em geral não é verdade


a
que 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,

−2 2 −4 4 −6 6
x= = = = = = = ···
3 −3 6 −6 9 −9
Para resolver este problema de representação, o Maple usa a chamada forma reduzida: dizemos
b
que a está na forma reduzida quando a é positivo e a e b são primos entre si. Por exemplo a
4 −2
forma reduzida do racional −6 é 3 :

> 4/(-6);

−2
3
As funções numer e denom permitem-nos aceder respectivamente ao numerador e denom-
inador de um racional:

> 22/8: numer(%),denom(%);

11, 4

Todo o inteiro é racional.

> denom(3);
173

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

b
Dado x = a ∈ Q podemos encontrar q e r tal que

b = qa + r

Dividindo por a obtemos:


b r
=q+
a a
r
A q chamamos parte inteira de x e a a parte fraccionária de x. A parte fraccionária de x é
denotada por {x}. Por exemplo,
 
23 2 23 2
=3+ ⇒ =
7 7 7 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);

21 55 34
Exemplo 109. Seja r1 = 34 , r2 = 89 , r3 = 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”.

a
Problema 110. Determinar um racional a uma distância de x = b (racional dado) inferior
a ε.

a am
Vejamos uma maneira de abordar o Problema 110. Para qualquer m > 0, x = b = bm
am+1 am−1 1
e os racionais bm e bm estão a uma distância bm de x. Escolhendo m suficientemente
grande, podemos fazer esta distância tão pequena quanto queiramos.

96
Exemplo 111. Pretendemos encontrar um racional a uma distância de x = 145 inferior a
10−4 . Para isso encontramos o menor m para o qual bm > 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 fac-
torizaçã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 exem-
plo, 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;

x+1
f := x 7→
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);

5 a + 1 ola + 1 b2
, , , 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 pro-
gramaçã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→ (C.3)
0 se x ∈ /C

Uma variante é a função caracterı́stica Booleana, dada por

χC : A → {true, f alse}

true se x ∈ C
x 7→ (C.4)
f alse se x ∈/C

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 automatica-
mente, 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 re-
solvido 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


n+1
f : n 7→ , n ≥ 1.
n2
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

3 4 5 6 7 8 9 10 11 12 13 14 15 16
2, , , , , , , , , , , , , ,
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 explicita-
mente, 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);

1.5

0.5

–2 –1.5 –1 –0.5 0 0.5 1


–0.5

–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

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 (condições iniciais)


an+2 = an 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:
 
p
Fn = ∈ 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:

p0 = p , pn+1 = f (pn ) , n ≥ 0. (C.7)

Por exemplo para a condição inicial p = a temos:

a , b , ab , bab , abbab , bababbab , . . . (C.8)

Pretendemos definir a sucessão (C.7) em Maple, representando as palavras como listas cu-
jos 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

> (f@g)(x);


bx2 1 − x2

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);

0.5

0 0.5 1 1.5 2 2.5 3


x

–0.5

–1
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
o oooo UUUU
UUUU
oooo UUUU
oo UUUU
oo
a ⋆? ⋆<
 ??? ||| <<<
 ?? | <<
 ?? || <<
 ||
2 b c −1 ˆ;;
 ;;;
 ;;
 ;
b 3

Para alguns tipos de dados compostos, nomeadamente para as listas e conjuntos, o oper-
ador 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(%);

1
∗, a,
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, recor-
rendo, 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 in-
termé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 ele-
mento 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 in-
teiros 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
n
X
p= 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 coe-


ficiente 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 3 + 5 x2 − x3

> expand(%);

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 1
− 1} = (2x − 2)
|x {z x+ .
| {z } 2 2
f g

(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 (relem-
bramos 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);

2
x, x5 − 2, x3 x5 − 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
x2 −1
aumentar o conjunto K[x]. Por exemplo, x−1 é um polinómio, porque x − 1 | x2 − 1

> (x^2-1)/(x-1):
> % = simplify(%);

x2 − 1
=x+1
x−1
x2 −1
mas x−2 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 con-
struçã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);


(x − 1) (x + 1) x3 − x2 + x + 1

> op(%);

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);

1
f :=
(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));

1
x2 + 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 simplifi-
cada e completamente factorizada. Pode, por isso, ser usada como alternativa ao simplify.

> x + 1/(x^2 + 1/(x^3 + 1/x^4));

1
x+
1
x2 +
1
x3 +
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

2 1 (1 + x)3 + 1
(1 + x) + = .
1+x 1+x

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);

1
y2 +
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 de-
composição em fracções parciais. Vejamos um exemplo.

> p := (x+1)/(x^4 - 2*x^3 + x^2 - 2*x);

x+1
p :=
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
1 1 (−3 + x)
− + 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
n
X
Sn = ai n≥0 (C.10)
i=0

e o produto
n
Y
Pn = ai n≥0 (C.11)
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 ex-
pressã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


n
X
A(n) = χ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]


n
X 
Sn = xi − ix + 1 n ∈ N.
i=1

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 n
X (1 + n) n X 1 − xn+1
i= , xi = , x 6= 1 .
2 1−x
i=1 i=0

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 (1 + 100000) 100000
i= = 5000050000 .
2
i=1
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
n  2
X i
Sn =
i
i=1

são dados por uma função explı́cita de i:


 2
i i2 !
= .
i i! (i2 − 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 
binomial i2 , i
i=1

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 
binomial i2 , i
i=1

> 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


m X
n m n
!
X X X
S = Sm,n = aj,i = aj,i
j=m0 i=n0 j=m0 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:
m
X n
X
Sm,n = sj,n , sj,n = aj,i .
j=m0 i=n0

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
X n n X
X m
aj,i = aj,i .
j=m0 i=n0 i=n0 j=m0
229

De modo semelhante se comportam as expressões com um duplo produtório. Por exemplo,

Y 2
3 Y 3
Y
aj,i = (aj,1 aj,2 ) = a1,1 a1,2 a2,1 a2,2 a3,1 a3,2 .
j=1 i=1 j=1

Quando os ı́ndices são independentes, como acontece no exemplo acima, a ordem dos pro-
dutó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:


4 j
!
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(%);

4 j
!
Y X 2
(i + j) = 1339800
j=1 i=1

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
! 2
! 3
! 4
!
X X X X
(i + 1)2 (i + 2)2 (i + 3)2 (i + 4)2
i=1 i=1 i=1 i=1
O próximo comando Maple permite-nos calcular o valor de cada um dos operandos na ex-
pressão acima:

> seq(x = value(x),x=%);

1
X 2
X 3
X 4
X
(i + 1)2 = 4, (i + 2)2 = 25, (i + 3)2 = 77, (i + 4)2 = 174
i=1 i=1 i=1 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 ,
i=0 i=0
n n−1
!
Y Y
Pn = ai = ai × an = Pn−1 × an .
i=0 i=0

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


5
X
S5 = 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));

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);

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
, ,··· ,
0 1 n
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;

> 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;

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
1
12 + 1
32 + 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 trans-
forme 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:
Xn−1 + 1
X0 = 1 , Xn = , n = 1, 2, . . .
Xn−1 + 2
Usando o operador seta fazemos
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


, ,
1, , , , , , , ,
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
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 4
 
 6 8 
10 12

> evalm(3*A);

 
3 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 b
ad−bc − ad−bc
c a
− ad−bc ad−bc

> evalm(B &* iB);

" #
ad bc
ad−bc − ad−bc 0
ad bc
0 ad−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 1
1 2 3 4
 
 
 2 1 2 1 
 3 2 
 
3 23 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);

O polinómio caracterı́stico é obtido recorrendo ao charpoly (characteristic polynomial ), in-


dicando 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);

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
[1, 2] = [2, 1]
3 −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);

h i
(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 es-
tudados 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 à inter-


pretaçã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 La-


grangeano 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 Pon-
tryagin 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 con-
trolo;

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 Hamil-
toniano); evalSyst (devolve uma lista com o sistema de controlo, o sistema ad-
junto 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 prob-


lemas 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 Sci-
entific, 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, Ency-
clopaedia of Mathematical Sciences, 87. Control Theory and Optimization, II. Springer-
Verlag, 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, Meth-
ods 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 defor-


mation 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, Traf-
ford, 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, Insti-
tuto 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 Applica-
tions, 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 mathe-


matical 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, No-


tices 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 Ap-
plied 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 Math-
ematics, 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
condição necessária de Euler-Lagrange, 38
acção, 110
condição necessária de optimalidade, 110, 115
admissı́vel, 100, 104
condição necessária de Weierstrass, 87
algoritmo, 7, 44, 79, 112
Condição suficiente de Jacobi, 68
anormal, 12, 13, 17, 57, 58, 75, 78, 79
condição suficiente de optimalidade, 82
astrofı́sica, 131
condições complementares, 15
autónomo, 41, 43, 103, 107, 110, 116, 122
condições de fronteira, 38, 40, 51, 53, 55, 57,
Bellman, 18, 84, 135 70, 76, 100, 103, 136, 138

Bernoulli, 36 condições de transversalidade, 38, 39, 52, 76,

Bolza, 100, 101 77

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,
flat, 116 110
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,
108, 112, 114, 115, 117, 140, 257
da Vinci, 109
extremais normais, 82
decisão, 18
extremais rı́gidas, 56–59
Dido, 54
extremal normal, 76, 78
dinâmica, 69, 100
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 120
famı́lia de transformações uni-paramétrica, 110
Economia, 110, 135
Fermat, 2, 3, 50
Emden-Fowler, 131, 132
flat, 116, 117
Emmy Noether, 110
função de Lagrange, 8, 9, 11, 15, 16, 55
energia cinética, 36
função valor, 84
energia potencial, 36, 37
funções base, 44, 46
Engenharia, 110
funcional custo, 105
equação de controlo, 92
funcional de Emden-Fowler, 132
equação de estado, 70
equação de Euler-Lagrange, 38, 39, 76, 77, Galileu, 109
126, 137 Gamkrelidze, 106
equação de Euler-Lagrange de ordem supe- geometria sub-Riemanniana, 116, 117
rior, 53, 78, 79 geradores infinitesimais, 111–113, 126, 132,
equação de Euler-Poisson, 53, 78 133, 259, 260
equação de Hamilton-Jacobi-Bellman, 86, 107, Graves, 76
135, 141, 142, 144, 148, 149 grupo uni-paramétrico de transformações, 111–
equação de Jacobi, 68 114, 119
equação diferencial de Newton, 94, 97 gráfico com superfı́cie de revolução mı́nima,
equação diferencial de Thomas-Fermi, 133 35, 42
equações de Euler-Lagrange, 110, 128
Hamilton, 75
equações de Hamilton-Jacobi, 85
Hamiltoniano, 41, 75, 76, 79, 86, 88, 93, 111,
equações diferenciais, 109, 110
116, 122, 138, 257
equações de Euler-Lagrange, 109, 110
Hestenes, 75, 76
Erdmann, 110, 115
homogeneidade do tempo, 110
estado, 100, 102–104, 106
estados, 18 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 minimizante anormal, 11–13, 57
minimizante global, 2, 7, 82, 94
Karush-Kuhn-Tucker, 12, 15, 16, 90
minimizante local, 7
Kepler, 109, 128, 129
minimizante normal, 12, 57
Klein, 110
minimizantes anormais, 57, 58
Lagrange, 12, 53, 101, 105, 109, 110 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,
118, 120, 121, 123–132, 134, 260 12–14, 55, 56, 147
lei de conservação geral, 114
Newton, 2, 70–72, 87, 92, 133
lei de conservação normal, 107
Noether, 109, 110, 112–114, 116, 119, 121,
lei de inércia, 109
122, 126, 132, 133, 260
lei do rendimento/riqueza, 110
normal, 12, 13, 55, 57, 75–79, 81, 107, 139
Leibniz, 2
não
leis de conservação, 109, 110, 122, 123
flat, 116, 117
leis de conservação normais, 107
plano, 116
leis de conservação, 122, 123
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, 251
135, 139, 140, 257 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 quantidades conservadas, 110
princı́pio, 110
rank, 9, 246
Princı́pio de Bellman, 18, 84
relatividade, 110
Princı́pio de Optimalidade, 18
restrição isoperimétrica, 55, 57, 59
Princı́pio do Máximo de Pontryagin, 74, 76,
restrições, 8
84, 86, 87, 90, 92, 139, 257
restrições isoperimétricas, 103
princı́pio do máximo fraco, 82
retrocesso, 19
Princı́pio de Bellman, 135
Ritz, 43, 44
Principia Mathematica, 92, 95
rumo, 122
problema básico do Cálculo das Variações, 37
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 sistema de controlo, 70, 76, 82, 86, 100, 114,
problema de parar um pêndulo, 70, 80 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 aprox-
de 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
problema isoperimétrico, 57, 73, 74 Taylor, 3
problema paramétrico, 104 tempo, 100, 102, 119
ÍNDICE 269

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

Você também pode gostar