Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
Apêndices 145
Bibliografia 261
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.
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.
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.
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.
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:
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):
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:
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̃.
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̃.
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):
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:
−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
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⋆ .
(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
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 .
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) ,
= 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).
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
−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}
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
|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 .
f (x, y) −→ min ,
g(x, y) = 0 ,
∇L(x, y, λ) = 0 ,
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 .
x2 − y 2 −→ min ,
x2 + y 2 = 0 .
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).
f (x) −→ min ,
g(x) = 0 ,
∇ (λ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.
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
> 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
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 .
(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.
a e b constantes.
1.4 Restrições de desigualdade e o Teorema de Karush-Kuhn-Tucker 15
f (x) −→ min ,
gi (x) = 0 , i = 1, . . . , m , (1.18)
hj (x) ≤ 0 , j = 1, . . . , k ,
|x − x̃| < ε ,
gi (x) = 0 , i = 1, . . . , m ,
hj (x) ≤ 0 , j = 1, . . . , k ,
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).
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:
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γ , γ)
m
X k
X
λγ0 ∇f (xγ ) + λγi ∇gi (xγ ) + µγj ∇hj (xγ ) + 2 (xγ − x̃) = 0 . (1.21)
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.
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});
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).
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
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?
• 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
• 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.
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
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
e o próximo destino é
s(3, i) = 6, ∀i ∈ E(3) . (1.25)
e o ponto para onde devemos ir quando estamos no ponto i, i ∈ E(2), será dado por
Obviamente, k ∈ E(3). Para i = 2, atendendo a que E(2) = {4, 5}, obtemos de (1.26) que
s(2, 2) = 4 .
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).
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
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):
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
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) ,
> custoOptimo(problema);
12
> solucaoOptima(problema);
[1, 2, 4, 6]
1.5 Programação Dinâmica em tempo discreto 25
Tabela 1.3: Lucros obtidos pelo investimento nos diferentes meios publicitários
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
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:
• 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};
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.
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:
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.
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
y ∈ {0, 1, · · · , x}, e
q(1, x − y) = x − y .
e as quantidades óptimas, em m.u.m., para se investir nos diferentes meios publicitários são
obtidas através das fórmulas:
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)}.
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:
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
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} .
> investimentoOptimo(problema,5);
[0, 1, 4, 0]
> lucroMaximo(problema,10);
25.00
> investimentoOptimo(problema,10);
[0, 1, 0, 9]
Capı́tulo 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
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)
Seguem-se dois exemplos do Cálculo das variações que pertencem à famı́lia dos chamados
problemas isoperimétricos (ver secção 2.5).
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
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
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
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:
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):
Definição 30. Às soluções das equações de Euler-Lagrange (2.2) chamamos extremais.
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.
(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).
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
(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.)
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
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 )
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]:
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
∂Φ
(c1 , . . . , cn ) = 0 , k = 1, . . . , n ,
∂ck
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
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
> r := subs(s,phi(n)(x)):
> return(r);
> end proc:
> y(phia,3);
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
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)).
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.
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.
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)).
(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
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
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,
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
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
de onde resulta, pelo Lema Fundamental do Cálculo das Variações (Lema 38), a condição
necessária de optimalidade (2.29).
(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) .
onde as funções admissı́veis y(·) ∈ C 2 devem satisfazer não só as condições de fronteira
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 .
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
(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)
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 ,
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.
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
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
(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 .
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
. . . . . .
. . . . . . .
. . . . . . . .
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
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
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
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).
∂ 2n f
(respectivamente ∂y ′2n
(x, y(x), y ′ (x)) ≤ 0).
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).
> 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
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
4π
= 2γM + P (c)γ
k γ γ
k=0
" 2n 2n # 2n
4π 4π 4π
= 2γM 1+ − + P (c)γ .
γ γ γ
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.
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) = β .
∂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.
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.
(ii) fy′ y′ (x, y(x), y ′ (x)) > 0 ∀ x ∈ [a, b] (condição de Legendre fortalecida);
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) = β .
Controlo Óptimo
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:
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.
Mais uma vez, do ponto de vista Fı́sico, é necessário impor um certo limite ao valor do controlo
(força): |u(t)| ≤ w.
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.
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 ,
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 ,
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
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
Temos então
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:
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.
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
(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:
(3.6) é equivalente a
Z T
J [x(·), u(·), ψ(·)] = [H(t, x(t), u(t), ψ0 , ψ(t)) − ψ(t) · ẋ(t)] dt −→ min .
a
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 .
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)).
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
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);
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
..
.
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
∂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.
4. Substituir x̃(·) e ψ̃(·) nas expressões encontradas no segundo passo, obtendo os controlos
extremais ũ(·).
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
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,
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
∂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
(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
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
∂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
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
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
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 .
H(x2 , u, ψ0 , ψ1 , ψ2 ) = ψ0 + ψ1 x2 + ψ2 u .
ou seja,
ψ2 (t)u(t) = min {ψ2 (t)v} . (3.24)
v∈[−a,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
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
√ √ √ √
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
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 .
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
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]).
∂H
ψ̇(x) = − (x, u(x), ψ0 , ψ(x)) = 0 ,
∂y
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.
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.
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
ξ
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 + (û(ξ))
ξ û(ξ)
λ= . (3.39)
1 + (û(ξ))2
ξ û(ξ) ξ û(ξ)
2 = ⇔ û2 (ξ) = 1 .
2 2
1 + (û(ξ)) 2 1 + (û(ξ))
λ 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.
É 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
> 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});
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].
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
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:
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
Temos então que (z(·), u(·)) é um par admissı́vel para o seguinte problema de Mayer:
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)) ,
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
dτ
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:
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
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)).
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 ,
α
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 ∈ [α, β] ,
α
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)) ,
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
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
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:
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 .
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
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.
O método de Poisson permite determinar novas leis de conservação a partir de duas leis
de conservação conhecidas.
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):
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
dH ∂H
Observação 84. Para C = H obtemos de (3.63) a igualdade dt = ∂t (cf. Proposição 57).
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
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:
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 , ψ) .
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).
ψ(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.
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
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
l := L (u)
Φ := ϕ (u) x
> SimetriaCO(l,Phi,t,x,u);
{U = 0, X = C1 x, Ψ = −ψ C1 , T = C2 }
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
x(t)ψ(t) = const
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 ):
(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] ,
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 := u1 2 + u2 2
ϕ := [u1 cos (x3 ) , u1 sin (x3 ) , u2 ]
(−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
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 := etx u
ϕ := txu2
{X = C1 x, U = C1 u, Ψ = −ψ C1 , T = −tC1 }
116 Controlo Óptimo
2
C1 x(t)ψ(t) + ψ0 etx(t) u(t) + ψ(t)tx(t) (u(t)) tC1 = const
Escolhendo C1 = 1
2
x(t)ψ(t) + tψ0 etx(t) u(t) + ψ(t)t2 x(t) (u(t)) = const
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.
L := u1 2 + u2 2
ϕ := [u1 , u2 , x2 2 u1 ]
(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
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
L := u1 2 + u2 2
u2
ϕ := u1 , , x2 2 u1
1 + α x1
> simplify(%);
Com as substituições
α−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
Prove que
C = −ψ1 x2 + ψ2 x1 − ψ3 x4 + ψ4 x3 (3.83)
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
(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
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
−x2 (t)ψ1 (t) + x1 (t) ψ2 (t) − x4 (t) ψ3 (t) + x3 (t)ψ4 (t) = const
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 .
L := u1 2 + u2 2
ϕ := [u1 (1 + x2 ) , u1 x3 , u2 , u1 x3 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
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
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
L := u2
ϕ := [1 + y 2 , 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
L := 1
ϕ := [1 + x2 , x3 , u, x3 2 − x2 2 ]
((−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
> 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
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
L := 1
ϕ := [1 + y 2 − z 2 , z, u]
As substituiçõ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 := tv 2
u := v
ϕ := v
> 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
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
> 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
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)
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
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
!
2 2
K
H := 1/2 m v1 + v2 +p + v1 ψ1 (t) + v2 ψ2 (t)
q1 2 + q2 2
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))
L := v1 2 + a2 2
xx := [x1 , x2 , v1 , v2 ]
u := [a1 , a2 ]
ϕ := [v1 , v2 , a1 , a2 ]
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)
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
> 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
> 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
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
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:
{Ψ = −ψ C1 , U = 3 C1 v, T = −2 tC1 , X = C1 x}
> 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
> 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
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.
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.
{U = 0, T = 0, Ψ = 0, X = 0}
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]:
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
> 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
Um problema da Economia
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
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
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
sujeita a
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].
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)
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,r − δ
Por conseguinte, a solução geral da equação diferencial ordinária (4.12) é dada por
x0 = α + β ,
(4.13)
xT = αerT + βe(r−δ)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
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);
> PMP(L,phi,t,x,u,evalH);
> R := PMP(L,phi,t,x,u,evalSyst):
> 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
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(%);
> 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
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:
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
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.
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
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
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.
Z 3π
2
I[x(·)] = ẋ2 (t) − x2 (t) dt −→ min ,
0
2 3π
x(·) ∈ C 0, ;R ,
2
3π
x(0) = 0 , x = 0.
2
147
148 Exemplo da componente prática dos exames
Soluções
1. Existe um ponto crı́tico (normal): (x1 , x2 , x3 ) = 1, 6, 21 .
2.
3.
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
− 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 .
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
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
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].
>
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
> evalf(Pi,200);
3.1415926535897932384626433832795028841971693993751058209749445923078164062
862089986280348253421170679821480865132823066470938446095505822317253594081
284811174502841027019385211055596446229489549303820
√
Podemos achar a expansão de expressões como (a + 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
k
X
s := i3 7i
i=1
> value(s);
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
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
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
> 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
> 5+3;
> 5
> +
> 3
> ;
159
> 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;
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:
> 8/4/2:
> (8/4)/2;
1
160 Matemática elementar em Maple
> 8/(4/2);
> 8/4/2;
> (((((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;
> 2^2^3;
> 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;
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
> 3-2^5;
−29
> (3-2)^5;
(1) exponenciação
> (2^(3*4-5)+6)/(7*8);
67
28
Variáveis e Comentários
> 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:
> %%-%;
((((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, 2
1
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:
−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;
π := 3
> Pi := 3;
> evalf(Pi,5);
3.1416
> evalf(pi,5);
165
> a := 3:
> 2-a^a;
−25
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
Substituições
> 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
2 + 2 y + y 2 − x − z 2 − x2 − z 4 − xz 2
> x:=100:y:=99:s;
29900
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:
a3 + a2 + a
b3 + c2 + a
167
> 1/a^2-a:
> 4*%*subs(a=-b^2,%)-9*a/subs(a=b-1,%):
> subs(a=2,b=-1,%);
−22
Expressões Relacionais
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”):
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
= <>
< >
<= >=
Para calcular o valor de uma expressão relacional é necessário usar a função evalb
true, f alse
Deste modo temos a possibilidade de lidar com equações ou inequações e manipulá-las alge-
bricamente
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
12, 1
Exemplo 101. Seja n = 100100 . Qual dos números n1 = 10199 ou n2 = 99101 está mais
próximo de n?
169
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
n = dq + r 0≤r<d
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.
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):
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
1, 5, 2, 3
Exemplo 106. 2191 − 1 é divisı́vel por 383? Uma maneira de responder à questão é através
do seguinte comando Maple:
true
> ilcm(12,21);
84
> 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:
3, −3, −3, 3
2, 2, −2, −2
true
Racionais
−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:
11, 4
> denom(3);
173
integer, f raction
true
true
true
b
Dado x = a ∈ Q podemos encontrar q e r tal que
b = qa + r
> 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:
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 .
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
> 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.
> 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
> T := {1,3,-4}:
> whattype(%);
set
> {7,7,0,3,7};
{0, 3, 7}
> {-4,3,1};
{−4, 1, 3}
> U := {a,{a,b}}:
> member(a,U), member(b,U), member({b,a},U);
177
2, 0
> A := {1,{1,2}}:
> B := {1,{1,3}}:
> A union B;
> 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
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
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.
true
Demonstração.
true
true
Demonstração.
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.
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
É 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:
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:
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
4, 4, 6, 6, 2n, 2n
O comando Maple é sintacticamente correcto mas não define uma função em Maple:
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.
χC : A → {0, 1}
1 se x ∈ C
x 7→ (C.3)
0 se x ∈ /C
χC : A → {true, f alse}
true se x ∈ C
x 7→ (C.4)
f alse se x ∈/C
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
Exemplo 117. Seja n ∈ Z. Vamos construir a função par(n) cujo valor é true se n é par e
false se n é ı́mpar.
true, f alse
Exemplo 118. Consideremos o intervalo [0, 1[. A sua função caracterı́stica é dada por
true, f alse
Notar que o evalb não é necessário aqui, uma vez que está presente o operador lógico and.
1, 0
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:
0, 1
χ : Q → {0, 1}
1 se x ∈ Z
x 7→
0 se x ∈ / Z.
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
0, 1
O operador seta pode ser usado para definir funções de várias variáveis:
3z, 15
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 é:
1, 0
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}
{0, 1, 4}
f :A→A
x+5
x 7→ resto
6
é uma função sobrejectiva.
> {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.
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.
> 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.
{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:
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 , . . .
> 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
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
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}
> $1..15;
> seq({$1..n},n=0..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:
√
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.
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
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
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
–1
> whattype(v);
list
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.
30
25
20
15
10
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.
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 .
a : N → {−1, 1}
n 7→ (−1)n
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 ⊂ . . .
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).
1 1 2 3 4 1 2 1 3
0, 1, , , , , , , , ,
2 5 5 5 5 3 3 4 4
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
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
f :Z→Z
n 7→ −2n + 1
x := −1
x := 3
x := −5
x := 11
−1
3
−5
11
π
−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:
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]:
[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]
[b]
[a, b]
[b, a, b]
[a, b, b, a, b]
[b, a, b, a, b, b, a, b]
197
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 .
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
> with(combinat):
> fibonacci(10);
55
Composição de Funções
x0 = β , xn = f (xn−1 ) , n ≥ 1
198 Matemática elementar em Maple
xn = (f ◦ f ◦ · · · ◦ f )(x0 ) .
| {z }
n vezes
> 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))
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:
[b, a, b, a, b, b, a, b]
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.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)]:
> g[5];
0.0008
0.0006
0.0004
0.0002
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
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);
> op(n,expressao);
> op(2,x);
2bc
> op(2..3,x);
202 Matemática elementar em Maple
2bc, −b3
O primeiro operando a não tem estrutura interna. O seu tipo de dados é primitivo
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
> seq(whattype(z),z=%);
> 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)];
> 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
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);
+, ∗
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
β := 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.
ayc + yc + y 3 c3
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:
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:
f raction, 2, 3
1
∗, a,
b
ˆ, b, −1
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:
a2 , b2 , c2 , d2 , e2
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.
a2 + b2 + c2
a2 , b2 , c2
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:
[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.
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.
{0, 5}
> 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.
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.
3, 7
Adição e subtracção
> 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:
Multiplicação
1 − 2 x + x2 3 + 5 x2 − x3
> expand(%);
3 + 8 x2 − 11 x3 − 6 x + 7 x4 − x5
> 5*(x-2);
5x − 10
O grau do produto de dois polinómios é igual á soma dos graus dos operandos:
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.
> 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
true
(x − 2)(x + 1)
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
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].
(2)(5), 10
> f := x^4 + x + 1:
> g := x^2 - 1:
> quo(f,g,x);
x2 + 1
> rem(f,g,x);
2+x
> 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.
true
> d(x-2,(x-1)*x,x);
f alse
Sucessões de polinómios
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 .
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
f0 = f , ft+1 = F (ft ) , t = 0, 1, . . .
> 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
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
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.
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)
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:
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:
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.
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
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
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);
> mul(a(i),i=0..n);
> 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, . . .
25502500
> add(i^3,i=1..100);
25502500
> 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).
true
> a := i -> i:
> mul(a(i),i=1..333) - 333!;
0
224 Matemática elementar em Maple
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.
11
5 + x2 − 14 x + x3 + x4 + x5
> factor(%);
5 + x2 − 14 x + x3 + x4 + x5
225
> p := factor(add(x^i,i=0..11));
p := (x + 1) x2 + 1 1 + x + x2 x2 − x + 1 x4 − x2 + 1
∗, 5
1 + x + x2 x9 + x3 + x6 + 1
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
> restart;
> add(i,i=1..n);
> 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.
5000050000 = 5000050000
> add(x^i,i=1..n);
> 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
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
25502500
A forma inerte pode ser combinada com o value para obter uma saı́da aprazı́vel:
100
X
i3 = 25502500
i=1
Na próxima secção vamos ver mais aplicações destas funções inertes.
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
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.
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:
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
> convert([%],‘*‘);
1339800
S0 = a0 , Sn = an + Sn−1 , n ≥ 1,
P0 = a0 , Pn = an × Pn−1 , n ≥ 1.
−15749063
−15749063
231
Elementos de Programação
Iteração
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
tem 8 dı́gitos decimais. Para isso definimos a função f e iteramos as vezes pretendidas com
o valor inicial a0 = 1.
> a := 1:
> to 3 do # repete 3 vezes
> a := f(a)
> od:
> length(a);
As primeiras 8 linhas do triângulo de Pascal podem então ser obtidas através dos comandos
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):
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.
2
4
6
> i;
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:
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);
> [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]
> seq(x+1,x=[1,2,3,4,5]);
2, 3, 4, 5, 6
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
25
238 Matemática elementar em Maple
Exemplo 159. Qual é o menor inteiro positivo n tal que n! é maior que 5n ?
12
Execução condicional
if expressaoLogica1 then
comandos1
elif expressaoLogica2 then
comandos2
...
else
comandosPorDefeito
fi;
> 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:
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
adiciona 1 a cada operando de um dado objecto arbitrário obj. A mesma função pode ser
definida em Maple como um procedure:
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:
nome := proc(arg1::tipo1,...,argn::tipon)
local variaveis;
option opcoes;
comandos
end;
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
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).
[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.
Procedimentos recursivos
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
> 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
" #
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 &*
a + 2c b + 2d
3a + 4c 3b + 4d
5a + 6c 5b + 6d
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
" #
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
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
> add(B[i,i],i=1..2);
246 Matemática elementar em Maple
a+d
> transpose(B);
" #
a c
b d
enquanto a caracterı́stica é determinada com recurso à função Maple rank
> rank(A);
> charpoly(B,x);
x2 − xd − ax + ad − bc
> 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, w
248 Matemática elementar em Maple
somar vectores
> evalm(v+w);
[4, 6]
> dotprod(v,w);
11
A norma p de um vector u,
> 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
Embora o Maple mostre os vectores, na forma visual, como vectores linha, ele interpreta-os
como vectores coluna.
" #
0 1
[1, 2] = [2, 1]
3 −1
A já conhecida função map, pode ser também usada no contexto das matrizes.
" #
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
Definimos procedimentos Maple para a resolução de problemas genéricos dos do tipo es-
tudados na Secção 1.5.
251
252 Computação Algébrica em Maple: Programação Dinâmica
• 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.
12
> solucaoOptima(problema);
[1, 2, 4, 6]
> 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:
9.00
> investimentoOptimo(problema,5);
[0, 1, 4, 0]
> lucroMaximo(problema,10);
25.00
> investimentoOptimo(problema,10);
[0, 1, 0, 9]
Apêndice E
Devolve:
Forma de invocação:
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
Para um exemplo do uso da função EulerLagrange acima definida veja-se, por exemplo,
a secção 4.2.
Apêndice F
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:
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;
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).
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.
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.
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).
[1] P. Adams, K. Smith, R. Výbormý. Introduction to Mathematics with Maple, World Sci-
entific, 2004.
[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.
[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.
[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.
[15] Jürgen Jost, Xianqing Li-Jost. Calculus of variations, Cambridge Univ. Press, 1998.
[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.
[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.
[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.
[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.
[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
[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
265
266 ÍNDICE