Title: Curso MATLAB 6
1Curso MATLAB 6
Instrutor Marcelo Escobar Métodos Númericos para
Engenheiros
2Métodos Numéricos
Álgebra Matricial Sistemas Lineares Sistemas não
lineares Equações Integrais Equações
Diferenciais Otimização Manipulação Simbólica
3Álgebra Matricial
Tópicos de Ajuda gtgthelp matfun gtgthelp
elmat gtgthelp sparfun Multiplicação Matricial
Produto Interno Dadas as Matrizes A e B
A B C n x m
m x p n x p gtgt AB Divisão
Matricial Produto Externo B C/A gtgtC\A
4Conceitos Importantes
Conceitos Importantes Matriz Transposta BAT
se b(j,i)A(i,j) Matriz Identidade I(i,j)1
se ij e I(i,j)0 se ij Matriz Inversa se
BAI, B é a inversa da matriz A Matriz
Singular se det(A)0, A é singular Matriz
Simétrica se A AT Diagonal Principal da
Matriz A(i,i) para i1n Matriz Triangular
Superior A(i,j)0 se igtj Matriz Triangular
Inferior A(i,j)0 se iltj Ortogonalidade de
Vetores se ab0 a 1 x n e b 1 x n a e b
são ditos ortogonais.
5Sistemas Lineares
Sistemas Lineares Forma Geral Axb
Classificação Possível e Determinado se
det(A)0 Possível e Indeterminado se det(A)0 e
todos det(A(,i)b)0 i1n Impossível se
det(A)0 e pelo menos um det(A(,i)b)0
i1n Posto de uma Matriz Número de Equações
Independentes gtgt rank(A) Valores
Característicos A-?IA para ?0 gtgteig(A) Vet
ores Característicos A (?I) (?I)
V gtgtlambda Veig(A)
6Métodos Diretos
Métodos de Resolução de Sistemas Lineares Forma
mais simples no Matlab xA\b Mínimos Quadrados
xlsqlin(A,b) Métodos Diretos (
Principais) Eliminação Gaussiana Fatorização
gtgthelp lu Decomposição LU gtgthelp qr
Decomposição Ortogonal Triangular gtgthelp svd
Decomposição em Valores Singulares gtgthelp
schur Decomposição Schur Ex A L U
L y b U x
7Exemplo Método de Gauss
Exemplo Linha1linha1/A(1,1) Linha2linha2-A(2,1
)linha1 Linha3linha3-A(3,1)linha1
Linha2linha2/A(2,2) Linha1linha1-A(1,2)linha1 L
inha3linha3-A(3,2)linha3
Linha3linha3/A(3,3) Linha1linha1-A(1,3)linha1 L
inha2linha2-A(2,3)linha2
x1-1 x22 x30
8Exemplo Método de Crammer
X1det(Ax)/det(A) X2det(Ay)/det(A) X3det(Az)
/det(A)
Linha1b? Ax Linha2b?Ay Linha3b?Az
x1-1 x22 x30
9Métodos Indiretos
Métodos Indiretos ( Principais) Iterações de
Jacobi onde M D-1 B, c D-1 b, B D - A.
Sendo D a diagonal da matriz A. O método escrito
para cada elemento do vetor x apresenta a
seguinte forma
10Métodos Indiretos
Iterações de Gauss-Seidel Este método é uma
modificação do método de Jacobi, cujo princípio é
de usar os novos valores de x tão logo eles
estejam disponíveis. Neste caso a matriz M (D
- L)-1 U e o vetor c (D - L)-1 b, onde D, L e
U são as matrizes diagonal, triangular inferior e
triangular superior, respectivamente, extraídas
da matriz A D - L - U. O método escrito para
cada elemento do vetor x apresenta a seguinte
forma
11Sistemas Esparsos
Sistemas Esparsos vários elementos nulos gtgthelp
issparse teste de esparsidade gtgthelp sparse
conversão de matriz cheia para matriz
esparsa gtgthelp full conversão de
matriz esparsa para matriz cheia Geração de
Matrizes Esparsas gtgthelp sprand geração de
matriz esparsa aleatória gtgthelp sparndsym
geração de matriz esparsa simétrica
aleatória Métodos para Sistemas Esparsos gtgt
help pcg Conjugate Gradiente gtgt help cgs
Conjugate Gradient Squared (CGS) gtgt help bicg
BiConjugate Gradient (BiCG) gtgthelp bicgstab
BiConjugate Gradient Stabilized (BiCGSTAB) gtgthelp
gmres Generalized Minimum Residual (GMRES) gtgthelp
qmr Quasi-Minimal Residual without lookahead
(QMR)
12Dicas Sistemas Lineares
Sistemas Sub-Determinados Numero de Equações
(ne) menor que o numero de incógnitas(ni) gtgtA\b
assume (ni-ne) variáveis nulas Sistemas
Sobre-Determinados Numero de Equações (ne)
Maior que o numero de incógnitas(ni) gtgtA\b
utiliza mínimos quadrados para minimizar os
resíduos Residuo(Ax-b) Conceito de
Norma gtgthelp norm A norma é utilizada como
critério de parada em loops multivariaveis.
13Equações Transcendentais
Equações sem solução analítica Ex f(x)
xexp(x/2) qual x / f(x)0? Resolução no
matlab gtgthelp optim gtgthelp fzero gtgthelp
fsolve Para utilizar as funções deve-se criar
uma função com a equação function
ffuncao_teste(x) fxexp(x/2)
chute
inicial gtgtfsolve(funcao_teste, 0) ou
gtgt fzero(funcao_teste, 0)
14Sistemas Não Lineares
Para resolver sistemas de equações function
ffuncao_teste2(x) x1x(1)x2x(2) f1x1x2-6 f2
x2x1-5 Ff1f2
chute inicial gtgtfsolve(fun
cao_teste2, 3 4)
15Métodos para Sistemas Não Lineares
Método de Substituição Sucessiva O processo
iterativo é aplicado à equação algébrica na forma
modificada da equação , que pode ser obtida por
um rearranjo interno desta equação ou pela
simples adição de x em ambos os lados da
igualdade.
16Métodos para Sistemas Não Lineares
Método da Bisseção
Os pontos iniciais devem satisfazer a condição
onde a função sign(f(x)) fornece o sinal da
função f(x).
17Métodos para Sistemas Não Lineares
Método de Newton Raphson O processo iterativo é
aplicado diretamente sobre a equação algébrica
na forma
18Newton para Sistemas não Lineares
Para sistemas não lineares
Onde
19Métodos para Sistemas Não Lineares
Método de Newton Secante O método de
Newton-secante baseia-se na aproximação da
derivada da função f(x), que aparece no método
clássico de Newton, pela equação de diferenças à
esquerda
20Dicas-Sistemas não lineares
Uma vez definida a função e criado o arquivo
contendo a mesma, Podemos executar a subrotina
criada, lembrando que a solução numérica é
sujeita a uma tolerância Se f(x)gttol, x é
solução da equação Para sistemas multivariaveis
iterativos devemos usar a norma norma(xk1
xk)gttol Ao usar os métodos do matlab podemos
criar um vetor de opções opoptimset(metodo)
Op(Propriedade1, valor, Propriedade2,valor)
21Equações Integrais
gtgthelp quad Método da quadratura de
Simpson gtgthelp quadl Método da quadratura de
Lobato gtgthelp quad8 Método de Alta
ordem gtgthelp trapz Método Trapezoidal gtgthelp
bdlquad Método para Integrais Duplas
22Métodos Integrais
Regra dos Trapézios Regra de Simpson Ex
integral do sin(x)/(x1) de 0 a 3.14 function
ffuncao_01(x) fsin(x)./(x1) gtgt
quad(funcao_01,0,3.14)
23Equações Diferenciais
Aproximação com ?x pequeno gtgthelp diff
Utilizando os métodos integrais gtgthelp ode 23
baixa ordem gtgthelp ode23s baixa ordem
rígido gtgthelp ode15s ordem moderada
rígido gtgthelp ode 45 alta ordem gtgthelp ode45s
alta ordem rígido gtgthelp odeset set de
propriedades dos métodos
24Exemplo Equações Diferenciais
Simples
y x
t Function dy df(t,y) dy-0.1(y-10) gtgtt,yode2
3(df, 0 60 , 100) Ou gtgtode23(df, 0 60 ,
100) Mostra a evolução da Integração
25Exemplo Equações Diferenciais
Sistema function dydt vdp1(t,y) dydt
y(2) (1-y(1)2)y(2)-y(1) gtgtode23(vdp1,0
20,2 0) Ou gtgtt,y ode23(vdp1,0 20,2
0) gtgtxy(,1) gtgtuy(,2)
26 Equações Diferenciais
Problemas de Valor inicial no Matlab t,y
odexx(func,tspan,yo) Yo-valor inicial Tspan-
valor inicial e final de tempo Func-função a ser
integrada
27Método de Euler Implicito
Condicoes Iniciais t0 f(0)fo
Passo de Integracao
28Método de Euler Implícito
Para sistemas
Sistema de Equações Algébricas que devem ser
resolvidas simultaneamente
29Método de Runge Kutta Implicito
30Métodos Explícitos
São os métodos implicitos só que a função g usa o
valor de t e y no novo ponto. Exemplo Euler
explicito Os métodos explícitos são mais
estavéis, no entanto se a a função g é não linear
o calculo requer a solução de um sistema não
linear a cada iteração. Para facilitar podemos
usar o método preditor corretor 1-usamos o
método explicito para calcular o novo
ponto 2-usamos o método implícito para
corrigir.
31Dicas Equações Diferenciais
Estabilidade Os métodos explícitos requerem
passos pequenos para manter a estabilidade, o
menor passo que pode ser dado pode ser calculado
pela expressão Onde p depende do método ( p2
para Euler) e lambda é o valor caracteristico do
sistema. Os valores característicos , são os
valores que multiplicam a variável t.
32Dicas Equações Diferenciais
O passo é limitado pela dinâmica mais rápida do
sistema, uma forma de medir essa limitação é dada
pelo conceito de rigidez Rigidez
33Problemas de Contorno
Os métodos vistos para problemas de valor
inicial, podem ser aplicados a problemas de
contorno substituindo por exemplo t por x.O único
problema é que para equações de ordem superior
esses métodos requerem como entrada a derivada no
primeiro ponto de x o que em alguns casos não é
conhecido. Para contornar esse tipo de problema
podemos chutar valores para a derivada e
verificar se a solução satisfaz o outro
ponto.Shooting Method Ex
C.C. Y1 para x1 e x2
function Fteste(x,y)
F(1)y(2)
F(2)6y(1)/x2 gtgtchute-1.5 gtgt
x,yode45(teste,1 2,1 chute) Interpolando
para x2 y1.1 Solução
Precisa chute-1.516
34Equações Diferenciais Parciais
gtgthelp pde toolbox de Equações Dif.
Parciais gtgtpdetool Ferramenta para
Simulação Usando o pdetool 1)Devemos desenhar
os contornos do problema 2)Em PDE, devemos editar
a equação a ser resolvida 3)Solve para resolver o
problema. Uma forma alternativa é usar
Diferenças Finitas e transformar o nosso problema
em um sistema de equações algébricas.Esse
procedimento pode ser usado também para problemas
de contorno.
35Otimização
gtgthelp optim toolbox de otimização gtgthelp
optimset set de propriedades dos
métodos Otimização sem restrição Problema a
ser resolvido 1)podemos aplicar o conceito de
derivada nula, gerando um sistema de equações que
podem ser resolvidos como visto anteriormente
usando fzero e fsolve. 2)Usando as
funções gtgthelp fmin monovariavel gtgthelp
fminbnd monovariavel com limites gtgthelp
fminsearch multivariavel
36Otimização sem Restrição
Exemplomin function Stest(x) S100(x(2)-x(1).
2).2(1-x(1)).2 gtgtx0 -1.2, 1 gtgtX ,S
FMINSEARCH(test,X0) xo 1, 1 ótimo
encontrado S 0 valor da função
objetivo Podemos criar um vetor de
Opções Op(optimset,Propriedade1,valor,....)
37Otimização
Otimização com restrição Problema a ser
resolvido gtgthelp fmincon Restrições
lineares e não lineares gtgthelp constr
Restrições lineares gtgthelp linprog
Programação Linear gtgthelp quadprog Programação
Quadrática gtgthelp lsqlin Mínimos Quadrados
38Otimização
Programação Linear S,g e h devem ser linear. Max
Devemos Escrever na Forma s.a
min f'x s.a.
A.x lt b
Aeq.xBeq Lb-limite inferior
Ub-Limite superior
gtgtx, Slinprog(f,A,b,Aeq,Beq,lb,ub)
x-121.8936 -1.8723 25.9787 S258.0213
39Otimização
Programação Não Linear Programação Linear
Sucessiva-SLP Quando um problema de otimização é
não linear, seja na função objetivo ou nas
restrições, uma possibilidade para encontrar o
ótimo é através da linearização em torno do ponto
ótimo. Além disso podemos utilizar métodos que
transformam um problema com restrição em um
problema sem restrição. Exemplo Multiplicadores
de Lagrange Função Penalidade Para maiores
detalhes sobre os métodos, vide na referência o
material sobre otimização.
40Otimização
Programação Quadrática Se função objetivo é
quadrática e as restrições são lineares, podemos
utilizar quadprog do Matlab. Exemplo min
s.a. A função objetivo deve ser escrita
na forma S0.5x'Hx f'x x,Squadprog(H
,f,A,b,Aeq,beq) x0.4812 2.4962 0.5263 -0.6023
0.7514 S17.7989
41Otimização
Programação Não Linear Exemplo min
s. a. Podemos usar fmincon do Matlab, devemos
criar um arquivo com a função objetivo e se as
restrições são não lineares, precisamos criar
outro arquivo com as restrições. Function
Sfob(x) Sexp(x(1))( 4x(1)2 2x(2)2
4x(1)x(2)2x(2)1) Function
G,Hrest(x) G(1)1.5x(1)x(2)-x(1)-x(2) G(2)-
x(1)x(2)-10 H(1)0 gtgtx Sfmincon('fob',-12
,,,,,,,'rest') x -9.5474 1.0474
S0.0236
42Otimização
Programação Inteira Mista Muitos problemas em
operação, projeto, localização e escalonamento de
plantas envolvem variáveis que não são contínuas
e sim discretas, ou seja, variáveis que são
inteiras. Exemplo Um dos algoritmos
numéricos mais empregados para PIM e denominada
Branch and Bound Technique. O Matlab não possui
uma rotina pronta para esse tipo de problema. As
rotinas podem ser encontradas no diretório
rotinas prontas/otimização/MILP e MINLP
43Rotinas Prontas
No diretório do CD-ROM Rotinas\MetodosNumericos
Temos uma série de rotinas prontas separadas por
tópicos. As rotinas seguem um padrão bem similar
às funções embutidas do Matlab e um help nome da
função explica o seu funcionamento.
44 Variáveis Simbólicas
gtgthelp symbolic toolbox Criando variaveis
simbolicas gtgthelp sym gtgt help syms ex
gtgtsyms x y cria x e y como var.
simbólicas Manipulando variáveis
simbólicas Uma vez criada as variáveis
simbólicas podemos usar todas as operações
matemáticas do matlab. gtgtfx2y gtgtgxy
gtgtfg gtgtfg gtgtf/g Além de algumas
operações especificas para var.
simbólicas gtgtfinverse(f) inversa da função
f gtgtcompose(f,g) função composta
f(g(x)) gtgtezplot(f,2,3) plotagem de f entre
os limites 2-3
45 Variáveis Simbólicas
O produto das operações pode resultar em
expressões matemáticas complicadas gtgtsimple
coloca a expressão na forma mais
simples gtgtsimplify simplifica a expressão gtgt
pretty exibe a expressão de uma forma mais
visual Após a manipulação e simplificação
pode-se desejar substituir valores para as
variáveis simbólicas gtgtsubs( f,2) substitui
em f x2 gtgtsubs(f, x,2) substitui em f x2 se
f é função multivariavel gtgtsubs(f,x,y)
substitui em f xy ex gtgt fxy gtgtsubs(subs(f,x,
2),y,3) ans5 x2 e y3
46Resolução Simbólica
Equações Algébricas gtgthelp solve gtgtx1,x2,..xns
olve( eq1,eq2,...eqn) As equações podem
ser escritas na forma xy2 ou
xy-2 Exemplo gtgt syms x gtgtfx4 gtgtgx4 gt
gtsolve(f) ans-4 gtgtsolve(g) ans-4 A
vantagem é que o solve retorna todas as soluções
do sistema, no entanto, o solve não é muito
robusto. Não resolvendo sistemas muito
complexos.
47Resolução Simbólica
Derivadas Simbólicas gtgt help diff gtgtsyms x
y gtgtf 2x xy 2y gtgtdiff(f, x) derivada
parcial em relação a x gtgthelp
jacobian gtgtjacobian( f g, x
y) Integrais Indefinidas gtgthelp int gtgtint(g)
g(x), integra g em relação a x com constante de
int0 gtgtint(g,x) g(x), integra g em relação a
x com constante de int0 gtgtint(g,a,b,c)
integral definida entre a e b Se a constante
de integração é diferente de zero, devemos somar
essa constante à solução obtida
48Resolução Simbólica
Equações Diferenciais gtgthelp dsolve gtgtdsolve(D
y4y) gtgtdsolve(Dy4y, y(0)1) gtgtdsolve(
eqdif 1, eqdif 2, ...., cond inicial
1,....) Exemplo gtgtS dsolve('Dx y', 'Dy
-x', 'x(0)0', 'y(0)1') As vezes, o matlab
retorna a resposta em uma estrutura S.x
sin(t) S.ycos(t)