Em v´arias demonstra¸c˜oes do Cap´ıtulo 1 usa-se produto direto de matrizes. Nesta se¸c˜ao apresentam-se a defini¸c˜ao de produto direto de matrizes, algumas propriedades deste produto e um exemplo de como se faz este c´alculo.
Defini¸c˜ao A.2 Dadas as matrizes A ∈IRm×n e B ∈IRp×q define-se o produto direto de A por B como a matriz C∈IRmp×nq de tal forma que
Cmp×nq =A⊗B =
a11B a12B · · · a1nB a21B a22B · · · a2nB
... ... . .. ... am1B am2B · · · amnB
.
42
Algumas propriedades interessantes do produto direto de matrizes:
(i) A⊗B 6=B ⊗A;
(ii) Se u ev s˜ao vetores, ent˜aouT ⊗v =v⊗uT =vuT; (iii) Se as dimens˜oes s˜ao compat´ıveis
(A⊗B)(C⊗D) = AC⊗BD.
Exemplo A.3 Calcule o produto direto de A por B, sendo
A= 1 2
A.1.2 Exponencial de matriz
Considere a ∈IR. Ao resolver a equa¸c˜ao diferencial ordin´aria (EDO) escalar
˙
x(t) =ax,
obt´em-se a seguinte f´ormula,[10], para a solu¸c˜ao do problema com condi¸c˜ao inicialx(0) = x0 ∈IR:
x(t) = x0eat, t∈IR.
Na pr´oxima se¸c˜ao, ser´a vista a equa¸c˜ao an´aloga quando a ´e uma matriz n × n com coeficentes reais e x : IR → IRn. Para isto, precisa-se saber como calcular a exponencial de uma matriz. As referˆencias sobre o assunto s˜ao [10, 11, 29].
Considera-se a fun¸c˜ao f : IR → IR+ tal que f(x) = ex. Essa fun¸c˜ao ´e chamada de exponencial dex e tem a seguinte representa¸c˜ao, [29], por s´eries de Taylor
ex= Desta forma parece ser natural a defini¸c˜ao a seguir
Defini¸c˜ao A.4 [11, pag.330] Seja A∈IRn×n. A matriz definida pela s´erie
´e denominada exponencial da matrizA. Para represent´a-la usa-se a nota¸c˜aoeA ou ainda exp(A).
Para os problemas estudados neste trabalho, ´e suficiente saber como calcular uma expo-nencial de matriz diagonaliz´avel.
Defini¸c˜ao A.5 [29, Def.3.1] Uma matriz A ∈ IRn×n ´e diagonaliz´avel quando existem uma matriz invert´ıvel S, cujas colunas s˜ao os autovetores de A e uma matriz diagonal D formada pelos autovalores de A tal que
D=S−1AS.
Proposi¸c˜ao A.6 [29, Prop. 3.2] Se A ´e uma matriz diagonaliz´avel, D =S−1AS, ent˜ao eA=eSDS−1 =SeDS−1.
Demonstra¸c˜ao. Multiplicando a igualdadeD=S−1AS pela esquerda por S e depois pela direita por S−1 tem-se que
A=SDS−1. Logo, para n∈IN as somas parciais s˜ao dadas por
Sn =
Teorema A.7 [29, Teo. 3.4] Seja D=diag(α1, α2, . . . , αn), uma matriz diagonaln×n.
Ent˜ao eD =diag(eα1, eα2, . . . , eαn).
Demonstra¸c˜ao. Seja D uma matriz diagonal com entradas αi (i = 1,2, . . . , n). Assim para todok ∈IN,
Dk=diag(αk1, . . . , αkn).
Logo para cada n∈IN as somas parciais s˜ao dadas por Sn=
O problema tratado no decorrer do trabalho est´a sujeito a uma equa¸c˜ao diferen-cial. O objetivo ´e resolver esse problema, para isso deve-se lembrar como ´e a solu¸c˜ao de um sistema de EDOs de 1a e de 2a ordem.
Considere Ω ⊂ IRn e f : Ω→ IRn uma aplica¸c˜ao cont´ınua. Seja I um intervalo n˜ao degenerado da reta, ou seja, um subconjunto conexo de IR n˜ao reduzido a um ponto.
Defini¸c˜ao A.8 [30, pag 04.] Uma fun¸c˜ao diferenci´avelφ :I →IRn chama-se solu¸c˜ao da equa¸c˜ao
dx
dt =f(x) (A.1)
no intervalo I se:
i) o gr´afico de φ em I est´a contido em Ω e ii) dφ
dt(t) =f(φ(t)) para todo t∈ I. Se t ´e um ponto extremo do intervalo, a derivada
´
e a derivada lateral respectiva.
A equa¸c˜ao (A.1) chama-se equa¸c˜ao diferencial ordin´aria de primeira ordem e ´e denotada abreviamente por
problema pode ser denotado abreviadamente por ( x˙ = f(x)
x(t0) = x0.
Para existˆencia e unicidade de solu¸c˜oes de uma equa¸c˜ao diferencial consultar [30, pag. 12]
e [10].
Lembra-se agora solu¸c˜oes de equa¸c˜oes espec´ıficas, que podem ser verificadas nos Cap´ıtulos 3 e 10 de [10].
A solu¸c˜ao do sistema de EDOs de primeira ordem ( x(t)˙ = M x(t)
x(0) = x0, onde M ∈IRn×n e x0 ´e o ponto inicial, ´e
x(t) =etMx0.
A solu¸c˜ao do sistema de EDOs de segunda ordem ( x(t) +¨ bx(t) +˙ cx(t) = 0
˙
x(tf) =k1, x(tf) = k2
onde b, c∈IR e tf ´e o tempo final, ´e dada por
x(t) = c1eλ1t+c2eλ2t
quando a equa¸c˜ao caracter´ıstica,λ2+bλ+c= 0, possui ra´ızes reais distintas λ1 e λ2. As constantesc1 ec2 s˜ao encontradas de forma que as condi¸c˜oes iniciais sejam satisfeitas.
A.3 T´ opicos de otimiza¸ c˜ ao cont´ınua
Nesta se¸c˜ao s˜ao introduzidos alguns t´opicos de otimiza¸c˜ao cont´ınua que ser˜ao
´
uteis para o desenvolvimento deste trabalho.
Inicia-se com algumas ideias b´asicas sobre minimiza¸c˜ao de uma fun¸c˜ao. Em seguida ´e apresentado o m´etodo de gradiente conjugado para minimiza¸c˜ao de uma fun¸c˜ao quadr´atica. E encerra-se esta se¸c˜ao com um teorema de otimalidade de primeira ordem para problemas de otimiza¸c˜ao com restri¸c˜oes, o teorema de Karush-Kuhn-Tucker(KKT).
Para as demonstra¸c˜oes dos teoremas e maiores detalhes, consultar [12].
Pode-se dizer que otimiza¸c˜ao consiste em encontrar pontos de m´ınimos ou de m´aximos de uma fun¸c˜ao real sobre um conjunto Ω ⊂IRn. Isto pode ser representado pelo
seguinte problema
minimizar f(x)
sujeito a x∈Ω, (A.2)
onde f : IRn →IR ´e uma fun¸c˜ao cont´ınua dita fun¸c˜ao objetivo e Ω ⊂IRn ´e um conjunto chamado de conjunto vi´avel. Quando Ω = IRn, o problema ´e dito irrestrito.
Defini¸c˜ao A.9 [12, pag. 25] Considere f : IRn → IR e x∗ ∈ Ω ⊂ IRn. Diz-se que x∗
´e um minimizador local de f em Ω quando existe δ > 0 tal que f(x∗) ≤ f(x) para todo x∈B(x∗, δ)∩Ω. Caso f(x∗)≤f(x) para todo x∈Ω, x∗ ´e dito minimizador global de f em Ω.
Normalmente contenta-se com a obten¸c˜ao de minimizadores locais do problema, onde esta discuss˜ao ser´a focada.
O teorema a seguir nos d´a uma condi¸c˜ao necess´aria para caracterizar um minimi-zador local de um problema irrestrito. Os pontos que satisfazem tal condi¸c˜ao necess´aria s˜ao ditos estacion´arios.
Teorema A.10 Seja f : IRn →IR diferenci´avel no ponto x∗ ∈IRn. Se x∗ ´e um minimi-zador local de f em IRn ent˜ao
∇f(x∗) = 0.
Demonstra¸c˜ao. [12, Teo. 2.9].
Em um problema de otimiza¸c˜ao ´e dif´ıcil resolver, de forma direta, o sistema de n equa¸c˜oes e n inc´ognitas dado por ∇f(x) = 0. Normalmente uma solu¸c˜ao ´e obtida por meio de um processo iterativo. Considera-se ent˜ao um algoritmo que a partir de um ponto inicial x0, gera uma sequˆencia de pontos (xk) desejando-se que os seus pontos de acumula¸c˜ao sejam estacion´arios.
A.3.1 M´ etodo de gradientes conjugados
Apresenta-se nesta se¸c˜ao o m´etodo de gradientes conjugados [12, Sec.5.3] para minimiza¸c˜ao de fun¸c˜oes quadr´aticas.
Considere a fun¸c˜ao quadr´aticaf : IRn →IR dada por f(x) = 1
2xTAx+bTx+c, (A.3)
com A∈IRn×n definida positiva, b∈IRn e c∈IR.
Segundo [12], uma fun¸c˜ao f quadr´atica com Hessiana definida positiva tem um
´
unico minimizador x∗, que ´e global e satisfaz, pelo Teorema A.10, a seguinte condi¸c˜ao
∇f(x∗) =Ax∗ +b = 0.
Para entender o algoritmo s˜ao necess´arios alguns conceitos.
Defini¸c˜ao A.11 [12, pag. 64] Seja A ∈IRn×n uma matriz definida positiva. Os vetores d0, d1, ..., dk ∈IRn\{0} s˜ao ditos A-conjugados se
(di)TAdj = 0, para todos i, j = 0,1, ..., k, com i6=j.
Note que, no caso particular onde A´e a matriz identidade, vetoresA-conjugados s˜ao ortogonais no sentido usual.
Sabe-se que um m´etodo de gradientes conjugados minimiza um fun¸c˜ao quadr´atica em IRn em no m´aximo n itera¸c˜oes.
Dado um conjunto qualquer de dire¸c˜oes A-conjugadas d0, d1, ..., dn−1, define-se uma sequˆencia finita da seguinte maneira: dado x0 ∈IRn arbitr´ario, define-se para k= 0,1, ..., n−1,
xk+1 =xk+tkdk, (A.4)
onde tk = argmin
t∈IR
{f(xk+tdk)}. O escalar tk ´e o comprimento do passo na dire¸c˜ao dk a partir do ponto correntexk.
Como f ´e quadr´atica pode-se obter uma f´ormula expl´ıcita para tk. Para isso, define-se φ : IR → IR por φ(t) = f(xk+tdk). Como, pela defini¸c˜ao, tk ´e o minimizador de f(xk +tdk), tem-se que φ0(tk) = 0. Note que φ0(tk) = ∇f(xk +tkdk)Tdk. Por f ser quadr´atica
∇f(xk+tkdk) =A(xk+tkdk) +b= (Axk+b) +tkAdk =∇f(xk) +tkAdk. Assim,
φ0(tk) = ∇f(xk)T +tkAdk
dk= 0, ou seja,
tk =−∇f(xk)Tdk (dk)TAdk .
Agora mostra-se como gerar as dire¸c˜oes conjugadas.
Dadox0 ∈IRn, definad0 =−∇f(x0) e, para k= 0,1, ..., n−2, dk+1 =−∇f(xk+1) +βkdk,
onde xk+1 ´e dado por (A.4) e βk ´e tal que dk e dk+1 sejamA-conjugados, ou seja, (dk)TA(−∇f(xk+1) +βkdk) = (dk)TAdk+1 = 0.
Isolandoβk da igualdade acima
βk = (dk)TA∇f(xk+1) (dk)TAdk+1 .
Agora com todas as ferramentas necess´arias, apresenta-se o algoritmo de gradi-entes conjugados.
Algoritmo A.1 Gradientes conjugados para fun¸c˜oes quadr´aticas Dado: x0 ∈IRn, fa¸ca d0 =−∇f(x0)
k= 0
repitaenquanto ∇f(xk)6= 0 tk=−∇f(xk)Tdk
(dk)TAdk xk+1 =xk+tkdk βk = (dk)TA∇f(xk+1)
(dk)TAdk
dk+1 =−∇f(xk+1) +βkdk k =k+ 1
O algoritmo de gradientes conjugados neste formato ´e aplicado apenas para fun¸c˜oes quadr´aticas.
A.3.2 O Teorema de Karush-Kuhn-Tucker
O objetivo desta se¸c˜ao ´e apresentar as condi¸c˜oes de otimalidade ou sejam, as condi¸c˜oes de KKT (Karush-Kuhn-Tucker), para o problema geral de otimiza¸c˜ao, que consiste em
minimizar f(x) sujeito a g(x)≤0
h(x) = 0,
(A.5)
ondef : IRn→IR, g : IRn →IRpeh: IRn →IRms˜ao fun¸c˜oes continuamente diferenci´aveis.
O problema (A.5) ´e o problema (A.2) em que o conjunto vi´avel ´e dado por Ω ={x∈IRn |g(x)≤0, h(x) = 0}.
Defini¸c˜ao A.12 [12, pag. 97] Seja x∈Ω. Uma restri¸c˜ao de desigualdade gi ´e dita ativa em x, se gi(x) = 0. Caso gi(x)<0, diz-se que gi ´e inativa em x.
Denota-se por A(x) o conjunto de ´ındices das restri¸c˜oes de desigualdade ativas em um ponto vi´avel x, isto ´e,
A(x) ={i|gi(x) = 0}.
Teorema A.13 (KKT)Seja x∗ ∈Ωum minimizador local do problema(A.5)e suponha que o conjunto dos gradientes das restri¸c˜oes de desigualdade ativas e das restri¸c˜oes de igualdade s˜ao linearmente independentes, isto ´e, {∇gi(x∗)}i∈A(x∗)∪ {∇hj(x∗)}j∈{1,...,m} ´e LI. Ent˜ao existem µ∗ ∈IRp e λ∗ ∈IRm tais que
−∇f(x∗) =
p
X
i=1
µ∗i∇gi(x∗) +
m
X
j=1
λ∗j∇hi(x∗),
µ∗i ≥0, i= 1, ..., p, µ∗igi(x∗) = 0, i= 1, ..., p.
Demonstra¸c˜ao. [19, Teo. 12.1]
Os vetores λ∗ eµ∗ s˜ao chamados de multiplicadores de Lagrange.
Note que, o resultado do teorema diz que o oposto do gradiente da fun¸c˜ao objetivo pode ser expresso pela combina¸c˜ao linear dos gradientes das restri¸c˜oes do problema.
Interpreta¸c˜ao geom´etrica
Para representar geometricamente o que o teorema de KKT afirma, considere o seguinte problema
minimizar f(x) = (x1 −2)2+ (x2−1)2 sujeito a g1(x) = x1+x2−2≤0
g2(x) = x21−x2 ≤0 x1 ≥0
x2 ≥0,
(A.6)
onde f : IR2 →IR, g1 : IR2 →IR e g2 : IR2 →IR.
Primeiramente note que o ponto x∗ = 1 1
!
´e solu¸c˜ao global do problema.
Na figura abaixo, est˜ao representados algumas curvas de n´ıvel da fun¸c˜ao, o con-junto vi´avel e a solu¸c˜aox∗.
Figura A.1: Ilustra¸c˜ao do problema (A.6).
Na figura abaixo, est˜ao representados os gradientes das restri¸c˜oes ativas no ponto 1
1
!
e o oposto do gradiente da fun¸c˜ao objetivo.
Figura A.2: Ilustra¸c˜ao da rela¸c˜ao dos gradientes do problema (A.6).
Algebricamente tem-se que ∇f(x∗) = −2 0
!
, ∇g1(x∗) = 1 1
!
, ∇g2(x∗) = 2
−1
!
. Assim
−∇f(x∗) = 2
3∇g1(x∗) + 2
3∇g2(x∗),
ou seja, o oposto do gradiente da fun¸c˜ao objetivo no ponto x∗ ´e combina¸c˜ao linear, com coeficientesµ=λ= 23, dos gradientes das restri¸c˜oes no ponto x∗.
C´ odigos em Matlab
52
%========================================================================
% Karla Arsie - 2012
% Calcula os n pontos LGR como raizes de P_{n-1}(x)+P_{n}(x).
% Polinomio de Legendre P_n = P(:,n+1)
%
% Foi baseado no programa disponivel em:
% http://www.mathworks.com/matlabcentral/fileexchange/4775-legende-gauss- lobatto-nodes-and-weights/content/lglnodes.m.
% conforme descricao abaixo e na referencia
% F. B. Hildebrand , "Introduction to Numerical Analysis," Section 8.11
% Dover 1987
%========================================================================
% lglnodes.m
%
% Computes the Legendre-Gauss-Lobatto nodes, weights and the LGL Vandermonde
% matrix. The LGL nodes are the zeros of (1-x^2)*P'_N(x). Useful for numerical
% integration and spectral methods.
%
% Reference on LGL nodes and weights:
% C. Canuto, M. Y. Hussaini, A. Quarteroni, T. A. Tang, "Spectral Methods
% in Fluid Dynamics," Section 2.3. Springer-Verlag 1987
%
% Written by Greg von Winckel - 04/17/2004
% Contact: gregvw@chtm.unm.edu
%
% Truncation + 1
% N1=n;
% N=n-1;
N1=n;
N=n-1;
%Ponto inicial para pontos LGR x=-cos(2*pi*(0:N)/(2*N+1))';
% Matriz de Vandermonde P=zeros(N1,N1+1);
% Encontra P_(N), utilizando a relação de recorrencia
% Calcula suas derivadas de primeira e segunda ordem
% X: atualização usando o método de Newton-Raphson xold=2;
free=2:N1;
while max(abs(x-xold))> eps
xold=x;
P(1,:)=(-1).^(0:N1);
P(free,1)=1; P(free,2)=x(free);
53
for k=2:N1
P(free,k+1)=( (2*k-1)*x(free).*P(free,k)-(k-1)*P(free,k-1) )/k;
end
x(free)=xold(free)-((1-xold(free))/N1).*(P(free,N1)+P(free,N1+1))...
./(P(free,N1)-P(free,N1+1));
end
P=P(1:N1,1:N1);
% Calculo dos pesos w=zeros(N1,1);
w(1)=2/N1^2;
w(free)=(1-x(free))./(N1*P(free,N1)).^2;
Matriz de Diferenciação function D=matriz_dif(n,x)
%============================================================
% Karla, Miguel, Elizabeth
% 2012
% Fornece a matriz de diferenciacao
% Adaptacao do programa legsrddiff escrito por Wang Li-Lian disponivel em:
% http://www1.spms.ntu.edu.sg/~lilian/bookcodes/legen/legsrddiff.m
%=============================================================
% D=legsrddiff(n,x) returns the first-order differentiation matrix of size
% n by n, associated with the Legendre-Gauss-Radau points x, which may be
%computed by
% x=legsrd(n). Note: x(1)=-1.
% See Page 110 of the book: J. Shen, T. Tang and L. Wang, Spectral Methods:
% Algorithms, Analysis and Applications, Springer Series in Compuational
% Mathematics, 41, Springer, 2011.
% Use the function: lepoly()
% Last modified on August 31, 2011
%=============================================================
if n==0, D=[]; return; end;
xx=x; nx=size(x);
% Encontra L_{n-1}+L_n e sua derivada de primeira ordem
[dy1,y1]=lepoly(n-1,xx); [dy2,y2]=lepoly(n,xx); dy=dy1+dy2; y=y1+y2;
if nx(2)>nx(1), y=y'; dy=dy'; xx=x'; end; %% y é o vetor coluna de L_{n-1}(x_k) D=(xx./dy)*dy'-(1./dy)*(xx.*dy)'; %% encontra dy(x_j) (x_k-x_j)/dy(x_k);
% 1/d_{kj} for k not= j (see (3.204))
D=D+eye(n); % add a matriz identidade para que 1./D pode ser % operada D=1./D;
D=D-eye(n); xx=xx(2:end);
D=D+diag([-(n+1)*(n-1)/4; xx./(1-xx.^2)+ n*y1(2:end)./((1-xx.^2).*dy(2:end))]);
%atualiza as diagonais return;
function [varargout]=lepoly(n,x)
% lepoly Legendre polynomial of degree n % y=lepoly(n,x) is the Legendre polynomial % The degree should be a nonnegative integer
% The argument x should be on the closed interval [-1,1];
% [dy,y]=lepoly(n,x) also returns the values of 1st-order % derivative of the Legendre polynomial stored in dy
% Last modified on August 30, 2011
% Verified with the chart in http://keisan.casio.com/has10/SpecExec.cgi
if nargout==1,
if n==0, varargout{1}=ones(size(x)); return; end;
if n==1, varargout{1}=x; return; end;
polylst=ones(size(x)); poly=x; % L_0(x)=1, L_1(x)=x
for k=2:n, % Three-term recurrence relation:
polyn=((2*k-1)*x.*poly-(k-1)*polylst)/k;
% kL_k(x)=(2k-1)xL_{k-1}(x)-(k-1)L_{k-2}(x) polylst=poly; poly=polyn;
end;
varargout{1}=polyn;
end;
if nargout==2,
if n==0, varargout{2}=ones(size(x)); varargout{1}=zeros(size(x));
return;
end;
if n==1, varargout{2}=x; varargout{1}=ones(size(x));
return;
end;
polylst=ones(size(x)); pderlst=zeros(size(x));poly=x; pder=ones(size(x));
% L_0=1, L_0'=0, L_1=x, L_1'=1
for k=2:n, % Three-term recurrence relation:
polyn=((2*k-1)*x.*poly-(k-1)*polylst)/k;
% kL_k(x)=(2k-1)xL_{k-1}(x)-(k-1)L_{k-2}(x)
pdern=pderlst+(2*k-1)*poly; % L_k'(x)=L_{k-2}'(x)+(2k-1)L_{k-1}(x) polylst=poly; poly=polyn;
pderlst=pder; pder=pdern;
end;
varargout{2}=polyn; varargout{1}=pdern;
end;
return
Solução Exata e pelo método Pseudoespectral do Problema do Exemplo 1 go_ex1
%=====================================================
% Dissertacao de Mestrado de Karla Arsie
% 17/08/2012
% Problema: maximizar -int_{0}^{5}(x^2(t)+u^2(t)) dt
% sujeito dx/dt=x+u
% x(0)=sqrt{2},x(5)=1
% Primeiro Exemplo do Capitulo 2 da dissertacao
%=====================================================
clear all
N=60; % Numero de pontos de colocacao
X1=sqrt(2); Xend=1; % Condicoes de contorno
% Solucao aproximada
[tau,VETORW]=pontos_lgr_w(N); % retorna os pontos de colocacao e os pesos da discretizacao.
MATRIZD=matriz_dif(N,tau); %retorna matriz de diferenciacao
%ponto inicial x0=X1*rand(N,1);
x0(1)=X1;
u0=rand(N,1);
xu0 = [x0;u0];
% Dados do problema para ser resolvido pelo quadprog nas variaveis
%(x1,..xN,u1,..uN) xu0 = [x0;u0];
H=diag([VETORW;VETORW]);
f=zeros(2*N,1);
id=eye(N,N);
Aeq = [(2*MATRIZD/5-id) -id];
Beq =zeros(N,1);
% Limites apos varios testes ---LB = [X1;zeros(N-2,1);1;-inf*ones(N,1)];
UB = [X1;inf*ones(N-2,1);1;inf*ones(N,1)];
[xu,fval,EXITFLAG] = quadprog(H,f,[],[],Aeq,Beq,LB,UB,xu0);
x = [X1;xu(2:N);Xend];
u = xu(N+1:2*N);
%
---% Solucao exata s=X1;
x0=s;
p0=(4*s-exp(5*s)*(2*s+4)-exp(-5*s)*(4-2*s))/(exp(5*s)-exp(-5*s));
x_exata=(exp(s*((5/2)*tau+5/2))*((1-5*s))/(exp(5*s)-5*s)))+
exp(-s*((5/2)*tau+5/2))*(s-(1-exp(-5*s))/(exp(5*s)-exp(-5*s))))'; %no intervalo [-1,1]
y_exata=x_exata.^2;
p=(((s/2)*exp(s*((5/2)*tau+5/2))-(s/2)*exp(-s*((5/2)*tau+5/2)))*x0+(((2-s)/(4))*exp(s*((5/2)*tau+5/2))+((2+s)/(4))*exp(-s*((5/2)*tau+5/2)))*p0)';
%no intervalo [-1,1]
u_exata=p/2;
% Graficos
%---figure(1)
clf
axis([-1 5 -4 2])
%solucao exata
plot(tau,y_exata,'b-',tau,u_exata,'r-') hold on
xlabel('\tau','fontsize',20)
% Solucao aproximada ---plot([tau;1],x.*x,'^b')
plot(tau(1:N-1),u(1:N-1),'*r')
legend('y_{exato}','u_{exato}','y_{aprox}','u_{aprox}','Location','SouthEast')
%---figure(2)
clf
axis([-1 5 -4 2])
%solucao exata
plot(tau,y_exata,'b-',tau,u_exata,'r-') hold on
xlabel('\tau','fontsize',20)
% Solucao aproximada ---plot([tau;1],x.*x,'^b')
plot(tau(1:N-1),u(1:N-1),'*r') euler_ex1
legend('y_{exato}','u_{exato}','y_{aprox}','u_{aprox}','y_{Euler}', 'u_{Euler}','Location','SouthEast')
%---% Erro na restricao
%ndifEx=norm(MATRIZD*y_exata-u_exata);
ndifAp=norm(2*MATRIZD/5*x(1:N)-x(1:N)-u);
fprintf(' %4d | %7.3f | %2d \n',N,ndifAp,EXITFLAG)
Solução pelo método de Euler do Problema do Exemplo 1 - euler_ex1
%=======================================================
% Dissertacao de Mestrado de Karla Arsie
% 25/05/2012
% Problema: maximizar -int_{0}^{5}(x^2(t)+u^2(t)) dt
% sujeito dx/dt=x+u
% x(0)=sqrt{2},x(5)=1
% Primeiro Exemplo do Capitulo 2 da dissertacao
%resolvido pelo método de Euler
%=====================================================
n=N;
M=10^3;
h=5/(n-1);
[Q b c]=gra(n,X1); % gera a quadratica a ser minimizada
% somando o termo M*(Xend-1)^2 beta=X1*(1+h)^(n-1)-Xend;
c=c+M*beta^2;
for i=1:n-1
b(i)=b(i)+2*M*beta*h*(1+h)^(n-i-1);
for j=1:n-1
Q(i,j)=Q(i,j)+2*M*h^2*(1+h)^(2*n-j-i-2);
end end
u0=rand(n-1,1);
% Solucao aproximada Euler
---u_euler=GC(c,b,Q,u0); % usa Gradiente Conjugado para minimizacao
x_euler=zeros(n,1);
x_euler(1)=X1;
for k=2:n
x_euler(k)=(1+h)^(k-1)*X1;
for j=1:k-1
x_euler(k)=x_euler(k)+h*(1+h)^(k-j-1)*u_euler(j);
end end
y_euler=x_euler.^2; % plotado y=x^2
t=-1:2/(N-1):1;t=t';
plot(t,y_euler,'og','linewidth',2)
plot(t(1:N-1),u_euler,'dk','linewidth',2)
Funções Auxiliares
function [Q b c]=gra(n,x1)
%Gera c,b e Q da função J=1/2sum(xk^2+uk^2)=c+b^Tu+u^TQu/2;
v=zeros(n,n-1);
for i=1:n-1 for j=i+1:n v(j,i)=1;
end end
%encontrar c c=zeros(n-1,1);
h=1/(n-1);
h=5*h;
s=0;
x1=sqrt(2);
for k=1:n-1
s=s+(1+h)^(2*k-2)*x1^2;
end c=h/2*s;
%encontrar b z=zeros(n-1,n);
for k=2:n-1
for i=1:k-1
z(i,k)=h^2*(1+h)^(2*k-i-2)*x1;
end end
for i=1:n-1 s=0;
for k=1:n
s=s+z(i,k)*v(k,i);
end b(i)=s;
end b=b';
%encontrar Q
w=zeros(n-1,n-1,n);
for k=2:n-1 for i=1:k-1
for j=1:k-1
w(i,j,k)=h^3*(1+h)^(2*k-i-j-2);
end end end
for i=1:n-1 for j=1:n-1 s=0;
if i==j
for k=1:n
s=s+w(i,i,k)*v(k,i);
end s=s+h;
elseif i>j
for k=1:n
s=s+w(i,j,k)*v(k,i);
end else
for k=1:n
s=s+w(i,j,k)*v(k,j);
end end
Q(i,j)=s;
end end end
% Gradiente Conjugado
% função quadratica f(x)=c+bx+x'Qx/2
function x=GC(c,b,Q,x0);
x=x0;
n=length(x0)+1; % dimensao do problema.
gradfx=b+Q*x;
fx=c+b'*x+x'*Q*x/2;
d=-gradfx; % direcao d0
ngradf=norm(gradfx); % norma do grad
k=1;
kmax=3*n; %n;
epsilon=1e-6;
while (ngradf>=epsilon) & (k<=kmax) Qd=Q*d;
dQd=d'*Qd;
alfa=-(d'*gradfx)/dQd;
x=x+alfa*d;
gradfx=b+Q*x;
ngradf=norm(gradfx);
fx=c+b'*x+x'*Q*x/2;
beta=(d'*Q*gradfx)/dQd;
d=-gradfx+beta*d;
if k>n
d=-gradfx;
end
k=k+1;
end
if ngradf>epsilon | k>=kmax disp('GC - Nao resolveu')
fprintf('norma do gradiente: %12f \n',ngradf) pause(0.1)
end
Solução pelo método Pseudoespectral do Problema do Exemplo 2 - go_ex2
%===========================================================
% Dissertacao de Mestrado de Karla Arsie
% 10/03/2013
% Problema: minimizar int_{0}^{1}(u^2(t)-y^3(t)) dt
% sujeito dy/dt=yu
% y(0)=1,y(1)=1
% -1=<u(t)=<0
% Primeiro Exemplo Nao linear do Capitulo 2 da dissertacao
%==========================================================
clear all
global VETORW MATRIZD Y1 Yend
N=60; % numero de pontos de colocacao Y1=1; Yend=1; % Condicoes de contorno
% Solucao aproximada
[tau,VETORW]=pontos_lgr_w(N); % pontos de colocacao e pesos da discretizacao MATRIZD=matriz_dif(N,tau)/2; %retorna matriz de diferenciacao
%ponto inicial y0=Y1*rand(N,1);
y0(1)=Y1;
u0=rand(N,1);
yu0 = [y0;u0];
% Dados do problema para ser resolvido pelo fmincon A = [];
B = [];
Aeq = [];
Beq = [];
LB = [ones(N,1);-ones(N,1)];
UB = [Inf*ones(N,1);zeros(N,1)];
% Resolucao pelo fmincon
OPTIONS = OPTIMSET('Display','iter','GradObj','on');
[yu,fval,EXITFLAG] = FMINCON(@(yu0) funcao_ex2(yu0),yu0,A,B,Aeq,Beq,LB,UB,@(yu0) nonlin_ex2(yu0),OPTIONS);
y = [Y1;yu(2:N);Yend];
u = yu(N+1:2*N);
%plota graficos da solucao aproximada figure(3)
hold on
plot([tau;1],y,'^b') plot(tau,u,'*r') legend('y','u',4)
xlabel('\tau','fontsize',16)
function [J,grad_J]=my_functional_J(YU0)
%gera a funcao a ser minimziada global VETORW MATRIZD Y1 Yend
n0 = (length(YU0))/2; % assumed to be n Y0 = YU0(1:n0); % size n
U0 = YU0(n0+1:2*n0); % size n J=VETORW'*(Y0.^3+U0.^2);
grad_J =[3*(Y0.^2).*VETORW;2*U0.*VETORW];
end
function [c,ceq]=nonlin(YU0) %gera as restricoes do problema
global VETORW MATRIZD Y1 Yend
% YU0 is [y(2:n-1),u]
c=[];
n0 = length(YU0)/2; % assumed to be n
Y0 = max(0,YU0(1:n0)); %evitar Y <0 % size n
%SY0 = diag(sqrt(Y0)); % size n x n U0 = YU0(n0+1:2*n0); % size n
ceq = MATRIZD*Y0 - Y0.* U0; % size n end
Solução pelo método Pseudoespectral do Problema do Exemplo 3 - go_ex3
%==========================================================================
% go_ex3
% Segundo Exemplo - Problema nao linear
% Referencia: J. L. Troutman. Variational Calculus and Optimal Control:
% Optimization with Elementary Convexity. Springer-Verlag, New York, 1996.
% Solucao exata com t in [0,2]: y(t) =1-t se t<=1, 0 c.c.
% u(t)=1 se t<=1, 0 c.c.
% Solucao exata com tau in [-1,1]: y(tau) = -tau se tau <= 0, 0 c.c.
% u(tau) = 1 se tau <= 0, 0 c.c.
% Dissertacao de Mestrado - Karla Arsie
% Marco/2013
%==========================================================================
clear all
N=60; % Numero de pontos de colocacao Y1=1; Yend=0;% Condicoes de contorno
% Solucao aproximada
[tau,VETORW]=pontos_lgr_w(N); % retorna os pontos de colocacao
%e os pesos da discretizacao
MATRIZD=matriz_dif(N,tau); % retorna a matriz de diferenciacao
%ponto inicial
y0=[Y1*rand(N,1);Yend];
y0(1)=Y1;
u0=rand(N,1);
% Dados do problema para ser resolvido pelo quadprog nas variaveis (y1,..yN,y{N+1},u1,..uN)
yu0 = [y0;u0];
H=2*diag([VETORW;1;zeros(N,1)]);
f=zeros(2*N+1,1);
Aeq = [MATRIZD zeros(N,1) -eye(N,N)];
Beq =zeros(N,1);
LB = [1;-inf*ones(N,1);-ones(N,1)];
UB = [1;inf*ones(N,1);ones(N,1)];
% Resolucao pelo quadprog
OPTIONS = OPTIMSET('Algorithm','interior-point-convex', 'Display','iter','GradObj','on');
yu = quadprog(H,f,[],[],Aeq,Beq,LB,UB,yu0,OPTIONS);
y = [Y1;yu(2:N);Yend];
u = yu(N+2:end);
%plota graficos para comparar solucao exata e solucao aproximada figure(1);
clf
% Solucao Exata
plot([-1 0 1],[1 0 0],'b-','linewidth',2) hold on
plot([-1 0],[-1 -1],'r-','linewidth',2) plot([tau;1],y,'^b')
plot(tau,u,'*r') axis([-1 1 -1 1])
xlabel('\tau','fontsize',24) grid on
legend('y_{exato}','u_{exato}','y_{aprox}','u_{aprox}',4) plot([0 1],[0 0],'r-')
plot([tau;1],y,'^b')
% Solucao exata nos pontos de colocacao para analise do erro y_exata=-tau.*(tau<=0);
u_exata=-(tau<=0);
[1] D. N. Arnold. A concise introduction to numerical analysis. School of Mathematics, University of Minnesota, 1991.
[2] D. Benson. A gauss pseudospectral transcription for optimal control. Technical report, Massachusetts Institute of Technology, 2005.
[3] J. T. Betts. Survey of numerical methods for trajectory optimization. Technical report, Journal of Guidance, Control and Dynamics, Washington, Mar¸co-Abril 1998.
[4] J. T. Betts. Practical Methods for Optimal Control and Estimation Using Nonlinear Programming. Society for Industrial & Applied Mathematics; 2nd edition, Washing-ton, 2009.
[5] G.A. Bliss. The problem of Bolza in the calculus of variations. Annals of Mathema-tics(2), 33:261–274, 1932.
[6] M. L. Boas. Mathematical Methods in the Physical Sciences. John Wiley and Sons, New York, 1983.
[7] C. Canuto, M. Y. Hussaini, A. Quarteroni, and T. A. Tang. Spectral Methods in Fluid Dynamics. Springer-Verlag, 1987.
[8] D. Garg e A.V. Rao C.L. Darby. Costate estimation using multiple-interval pseudos-pectral methods. Journal of spacecraft and rockets, 48(5), 2011.
[9] P. J. Davis and P. Rabinowitz.Methods of Numerical Integration. Dover Publications, INC, New York, 2a edition, 1984.
[10] C. I. Doering and A. O. Lopes. Equa¸c˜oes Diferenciais Ordin´arias. IMPA, Rio de Janeiro, RJ, 2005.
[11] J. Baumeister e A. Leit˜ao. Introdu¸c˜ao `a teoria de controle e programa¸c˜ao dinˆamica.
Instituto de Matem´atica Pura e Aplicada, Rio de Janeiro, Brasil, 1nd edition, 2008.
[12] A. A. Ribeiro e E. W. Karas. Um curso de Otimiza¸c˜ao. Cengage Learning, 2013. A aparecer.
67
[13] S. Islam e G. Saha. Applications of gauss-radau and gauss-lobatto numerical inte-grations over a four node quadrilateral finite element. Bangladesh J. Sci. Ind. Res., 43(3):377–386, 2008.
[14] F. Fahroo e I. M. Ross. Pseudospectral methods for infinite-horizon nonlinear optimal control problems. Journal of Guidance, Control, and Dynamics,, 31:927–936, 2008.
[15] S. Kameswaran e I. T. Biegler. Convergence rates for direct transcription of optimal control problems using collocation at radau points. Computational Optimization and Applications, 41:81–126, 2008.
[16] B. A. Finlayson e L. E. Scriven. The method of weighted residuals - a review.Applied Mechanics Reviews, 19(9):735–748, 1966.
[17] O. Stryk e R. Bulirsch. Direct and indirect methods for trajectory optimization.
Annals of Operations Research, 37:357–373, 1992.
[18] N. Barron e R. Jensen. The pontryagin maximum principle from dynamic program-ming and viscosity solutions to first-order partial differential equations.Trans. Amer.
Math. Soc., 298:635–641, 1986.
[19] J. Nocedal e S. J. Wright. Numerical Optimization. Springer-Verlag, Springer Series in Operations Research, USA, 2nd edition, 2006.
[20] F. Lewis e V. Syrmos. Optimal Control. John Wiley & Sons, INC, 3nd, New Jersey, USA, 1995.
[21] M. Kazemi e M. Razzaghi G. Elnagar. The pseudospectral legendre method for discretizing optimal control problems. IEEE Transactions on Automatic Control, 40:1793–1796, 1995.
[22] D. Garg, M. A. Patterson, C. Francolin, C. L. Darby, G. T. Huntington, W. W. Hager, and A. V. Rao. Direct trajectory optimization and costate estimation of finite-horizon and infinite-horizon optimal control problems using a Radau pseudospectral method.
Comput. Optim. Appl., 49:335–358, 2011.
[23] F. B. Hildebrand. Introduction to Numerical Analysis. Dover Publications, Dover, 2a edition, 1987.
[24] D. Kraft. On converting optimal control problems into nonlinear programming codes.
NATO ASI Series, Computational Mathematical Programming, ed. K. Schittkowski, Springer, F15:261–280, 1985.
[25] S. J. Leon. Algebra linear com Aplica¸´ c˜oes. Editora S.A., Rio de Janeiro, Brasil, 4nd edition, 1998.
[26] E. L. Lima. Curso de An´alise volume 2. Instituto de Matem´atica Pura e Aplicada, Rio de Janeiro, Brasil, 1981.
[27] A. Quarteroni, R. Sacco, and F. Saleri. Numerical Mathematics. Springer, New York, 2000.
[28] J. Stoer e K. H. Well (eds.) R. Bulirsch, A. Miele. Optimal control - calculus of variations, optimal control theory and numerical methods. International Series of Numerical Mathematics, 111:129–143, 1993.
[29] F. A. Silva. Sistemas de equa¸c˜oes diferenciais e exponencial de matrizes. Cadernos PET - Matem´atica, 1:169–195, 2007.
[30] J. Sotomayor. Li¸c˜oes de Equa¸c˜oes Diferenciais. Projeto Euclides, IMPA, Rio de Janeiro, Brasil, 1979.
[31] J. L. Troutman. Variational Calculus and Optimal Control: Optimization with Ele-mentary Convexity. Springer-Verlag, New York, 1996.
[32] G. V. Winckel. C´odigo em Matlab. Dispon´ıvel em
http://www.mathworks.com/matlabcentral/fileexchange/4775-legende-gauss-lobatto-nodes-and-weights/content/lglnodes.m, consultado em junho de 2012.