• Nenhum resultado encontrado

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

Documentos relacionados