48
Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros

Curso Matlab 6 Metnum

Embed Size (px)

DESCRIPTION

Maatlab

Citation preview

  • Curso MATLAB 6Instrutor: Marcelo EscobarMtodos Nmericos para Engenheiros

  • Mtodos Numricoslgebra MatricialSistemas LinearesSistemas no linearesEquaes IntegraisEquaes DiferenciaisOtimizaoManipulao Simblica

  • lgebra Matricial:

    Tpicos de Ajuda:

    >>help matfun>>help elmat>>help sparfun

    Multiplicao Matricial: [Produto Interno]

    Dadas as Matrizes A e B:

    A * B = C [n x m ] [ m x p] [n x p]

    >> A*B

    Diviso Matricial: [Produto Externo] B= C/A

    >>C\A

  • Conceitos Importantes:

    Conceitos Importantes:

    Matriz Transposta: B=AT se b(j,i)=A(i,j)

    Matriz Identidade: I(i,j)=1 se i==j e I(i,j)=0 se i~=j

    Matriz Inversa: se B*A=I, B a inversa da matriz A

    Matriz Singular: se det(A)=0, A singular

    Matriz Simtrica: se A= AT

    Diagonal Principal da Matriz : A(i,i) para i=1:n

    Matriz Triangular Superior: A(i,j)=0 se i>j

    Matriz Triangular Inferior: A(i,j)=0 se i

  • Sistemas Lineares:

    Sistemas Lineares: Forma Geral [ Ax=b ]

    Classificao:

    Possvel e Determinado : se det(A)~=0Possvel e Indeterminado: se det(A)=0 e todos det(A(:,i)=b)=0 i=1:nImpossvel: se det(A)=0 e pelo menos um det(A(:,i)=b)~=0 i=1:n

    Posto de uma Matriz: Nmero de Equaes Independentes>> rank(A)

    Valores Caractersticos: A-I=A para ~=0

    >>eig(A)

    Vetores Caractersticos: A* (*I) = (*I) *V

    >>[lambda V]=eig(A)

  • Mtodos Diretos:

    Mtodos de Resoluo de Sistemas Lineares:

    Forma mais simples no Matlab: x=A\bMnimos Quadrados: x=lsqlin(A,b)

    Mtodos Diretos: ( Principais)

    Eliminao Gaussiana:

    Fatorizao:

    >>help lu [ Decomposio LU]>>help qr [ Decomposio Ortogonal Triangular]>>help svd [ Decomposio em Valores Singulares]>>help schur [ Decomposio Schur]

    Ex: A = L U L y = b U x

  • Exemplo Mtodo de Gauss:

    Exemplo:Linha1=linha1/A(1,1)Linha2=linha2-A(2,1)*linha1Linha3=linha3-A(3,1)*linha1Linha2=linha2/A(2,2)Linha1=linha1-A(1,2)*linha1Linha3=linha3-A(3,2)*linha3Linha3=linha3/A(3,3)Linha1=linha1-A(1,3)*linha1Linha2=linha2-A(2,3)*linha2x1=-1 x2=2 x3=0

  • Exemplo Mtodo de Crammer:x1=-1 x2=2 x3=0X1=det(Ax)/det(A)

    X2=det(Ay)/det(A)

    X3=det(Az)/det(A)

    Linha1=b AxLinha2=bAyLinha3=bAz

  • Mtodos Indiretos:

    Mtodos Indiretos: ( Principais)

    Iteraes de Jacobi

    onde M = D-1 B, c = D-1 b, B = D - A. Sendo D a diagonal da matriz A. O mtodo escrito para cada elemento do vetor x apresenta a seguinte forma:

  • Mtodos Indiretos:

    Iteraes de Gauss-Seidel :

    Este mtodo uma modificao do mtodo de Jacobi, cujo princpio de usar os novos valores de x to logo eles estejam disponveis. Neste caso a matriz M = (D - L)-1 U e o vetor c = (D - L)-1 b, onde D, L e U so as matrizes diagonal, triangular inferior e triangular superior, respectivamente, extradas da matriz A = D - L - U. O mtodo escrito para cada elemento do vetor x apresenta a seguinte forma:

  • Sistemas Esparsos:

    Sistemas Esparsos: vrios elementos nulos

    >>help issparse [ teste de esparsidade]>>help sparse [ converso de matriz cheia para matriz esparsa]>>help full [ converso de matriz esparsa para matriz cheia]

    Gerao de Matrizes Esparsas:

    >>help sprand [gerao de matriz esparsa aleatria]

    >>help sparndsym [gerao de matriz esparsa simtrica aleatria]

    Mtodos para Sistemas Esparsos:

    >> help pcg Conjugate Gradiente>> help cgs Conjugate Gradient Squared (CGS)>> help bicg BiConjugate Gradient (BiCG)>>help bicgstab BiConjugate Gradient Stabilized (BiCGSTAB)>>help gmres Generalized Minimum Residual (GMRES)>>help qmr Quasi-Minimal Residual without lookahead (QMR)

  • Dicas Sistemas Lineares:

    Sistemas Sub-Determinados:

    Numero de Equaes (ne) menor que o numero de incgnitas(ni)

    >>A\b assume (ni-ne) variveis nulas

    Sistemas Sobre-Determinados:

    Numero de Equaes (ne) Maior que o numero de incgnitas(ni)

    >>A\b utiliza mnimos quadrados para minimizar os resduos

    Residuo=(A*x-b)

    Conceito de Norma:

    >>help norm

    A norma utilizada como critrio de parada em loops multivariaveis.

  • Equaes Transcendentais:Equaes sem soluo analtica:Ex: f(x)= x*exp(x/2) qual x / f(x)=0?Resoluo no matlab:>>help optim>>help fzero>>help fsolve

    Para utilizar as funes deve-se criar uma funo com a equao:

    function f=funcao_teste(x)f=x*exp(x/2) chute inicial>>fsolve(funcao_teste, 0) ou >> fzero(funcao_teste, 0)

  • Sistemas No Lineares:

    Para resolver sistemas de equaes:

    function f=funcao_teste2(x)x1=x(1);x2=x(2);f1=x1*x2-6;f2=x2+x1-5;F=[f1;f2]; chute inicial>>fsolve(funcao_teste2, [ 3; 4])

  • Mtodos para Sistemas No Lineares

    Mtodo de Substituio Sucessiva:O processo iterativo aplicado equao algbrica na forma modificada da equao , que pode ser obtida por um rearranjo interno desta equao ou pela simples adio de x em ambos os lados da igualdade.

  • Mtodos para Sistemas No Lineares:

    Mtodo da Bisseo:

    Os pontos iniciais devem satisfazer a condio:

    onde a funo sign(f(x)) fornece o sinal da funo f(x).

  • Mtodos para Sistemas No Lineares:

    Mtodo de Newton Raphson:O processo iterativo aplicado diretamente sobre a equao algbrica na forma:

  • Newton para Sistemas no Lineares:Para sistemas no lineares:Onde:

  • Mtodos para Sistemas No Lineares

    Mtodo de Newton Secante: O mtodo de Newton-secante baseia-se na aproximao da derivada da funo f(x), que aparece no mtodo clssico de Newton, pela equao de diferenas esquerda:

  • Dicas-Sistemas no lineares:Uma vez definida a funo e criado o arquivo contendo a mesma,Podemos executar a subrotina criada, lembrando que a soluo numrica sujeita a uma tolerncia:

    Se f(x)>tol, x soluo da equao

    Para sistemas multivariaveis iterativos devemos usar a norma:

    norma(xk+1 xk)>tol

    Ao usar os mtodos do matlab podemos criar um vetor de opes:

    op=optimset(metodo)

    Op=(Propriedade1, valor, Propriedade2,valor)

  • Equaes Integrais :

    >>help quad [ Mtodo da quadratura de Simpson]>>help quadl [Mtodo da quadratura de Lobato]>>help quad8 [Mtodo de Alta ordem]>>help trapz [ Mtodo Trapezoidal]>>help bdlquad [Mtodo para Integrais Duplas]

  • Mtodos Integrais :Regra dos Trapzios:

    Regra de Simpson:

    Ex: integral do sin(x)/(x+1) de 0 a 3.14

    function f=funcao_01(x)f=sin(x)./(x+1);>> quad(funcao_01,0,3.14)

  • Equaes Diferenciais:Aproximao com x pequeno:>>help diff Utilizando os mtodos integrais:

    >>help ode 23 [baixa ordem]>>help ode23s [baixa ordem rgido]>>help ode15s [ordem moderada rgido]>>help ode 45 [ alta ordem]>>help ode45s [alta ordem rgido]>>help odeset [ set de propriedades dos mtodos]

  • Exemplo Equaes Diferenciais:Simples:

    y x tFunction dy= df(t,y)dy=-0.1*(y-10)>>[t,y]=ode23(df, [0 60] , 100)

    Ou>>ode23(df, [0 60] , 100)Mostra a evoluo da Integrao

  • Exemplo Equaes Diferenciais:Sistema:

    function dydt = vdp1(t,y)dydt = [y(2); (1-y(1)^2)*y(2)-y(1)];>>ode23(vdp1,[0 20],[2 0]);

    Ou>>[t,y]= ode23(vdp1,[0 20],[2 0]);>>x=y(:,1);>>u=y(:,2);

  • Equaes Diferenciais:

    Problemas de Valor inicial no Matlab:

    [t,y]=odexx(func,tspan,yo)

    Yo-valor inicialTspan- valor inicial e final de tempoFunc-funo a ser integrada

  • Mtodo de Euler Implicito:Condicoes Iniciais:t=0 f(0)=foPasso de Integracao:

  • Mtodo de Euler Implcito :Para sistemas :Sistema de Equaes Algbricas que devem ser resolvidas simultaneamente:

  • Mtodo de Runge Kutta Implicito :

  • Mtodos Explcitos:

    So os mtodos implicitos s que a funo g usa o valor de t e y no novo ponto.Exemplo: Euler explicitoOs mtodos explcitos so mais estavis, no entanto se a a funo g no linear o calculo requer a soluo de um sistema no linear a cada iterao.

    Para facilitar podemos usar o mtodo preditor corretor:1-usamos o mtodo explicito para calcular o novo ponto2-usamos o mtodo implcito para corrigir.

  • Dicas Equaes Diferenciais:

    Estabilidade:Os mtodos explcitos requerem passos pequenos para manter a estabilidade, o menor passo que pode ser dado pode ser calculado pela expresso:

    Onde p depende do mtodo ( p=2 para Euler) e lambda o valor caracteristico do sistema. Os valores caractersticos , so os valores que multiplicam a varivel t.

  • Dicas Equaes Diferenciais:

    O passo limitado pela dinmica mais rpida do sistema, uma forma de medir essa limitao dada pelo conceito de rigidez: Rigidez

  • Problemas de Contorno:

    Os mtodos vistos para problemas de valor inicial, podem ser aplicados a problemas de contorno substituindo por exemplo t por x.O nico problema que para equaes de ordem superior esses mtodos requerem como entrada a derivada no primeiro ponto de x o que em alguns casos no conhecido.Para contornar esse tipo de problema podemos chutar valores para a derivada e verificar se a soluo satisfaz o outro ponto.[Shooting Method]Ex: C.C. Y=1 para x=1 e x=2

    function F=teste(x,y) F(1)=y(2); F(2)=6*y(1)/x^2; >>chute=-1.5>> [x,y]=ode45(teste,[1 2],[1 chute])Interpolando: para x=2 y=1.1 Soluo Precisa: chute=-1.516

  • Equaes Diferenciais Parciais:

    >>help pde [ toolbox de Equaes Dif. Parciais]>>pdetool [Ferramenta para Simulao]

    Usando o pdetool:

    1)Devemos desenhar os contornos do problema2)Em PDE, devemos editar a equao a ser resolvida3)Solve para resolver o problema.

    Uma forma alternativa usar Diferenas Finitas e transformar o nosso problema em um sistema de equaes algbricas.Esse procedimento pode ser usado tambm para problemas de contorno.

  • Otimizao:>>help optim [ toolbox de otimizao]>>help optimset [ set de propriedades dos mtodos]

    Otimizao sem restrio:Problema a ser resolvido:1)podemos aplicar o conceito de derivada nula, gerando um sistema de equaes que podem ser resolvidos como visto anteriormente usando fzero e fsolve.2)Usando as funes:>>help fmin [monovariavel]>>help fminbnd [monovariavel com limites]>>help fminsearch [multivariavel]

  • Otimizao sem Restrio:Exemplo:min

    function S=test(x)

    S=100*(x(2)-x(1).^2).^2+(1-x(1)).^2;

    >>x0 = [-1.2, 1]>>[X ,S]= FMINSEARCH(test,X0)

    xo = [1, 1] [ timo encontrado]S = 0 [valor da funo objetivo]

    Podemos criar um vetor de Opes:

    Op=(optimset,Propriedade1,valor,....)

  • Otimizao:Otimizao com restrio:Problema a ser resolvido:

    >>help fmincon [ Restries lineares e no lineares]>>help constr [ Restries lineares]>>help linprog [ Programao Linear]>>help quadprog [Programao Quadrtica] >>help lsqlin [Mnimos Quadrados]

  • Otimizao:Programao Linear:S,g e h devem ser linear.Max Devemos Escrever na Forma: s.a: min f'*x s.a.: A.x >[x, S]=linprog(f,A,b,Aeq,Beq,lb,ub) x=[-121.8936 ; -1.8723; 25.9787 ] S=258.0213

  • Otimizao:Programao No Linear:[Programao Linear Sucessiva-SLP]Quando um problema de otimizao no linear, seja na funo objetivo ou nas restries, uma possibilidade para encontrar o timo atravs da linearizao em torno do ponto timo.Alm disso podemos utilizar mtodos que transformam um problema com restrio em um problema sem restrio.Exemplo:[Multiplicadores de Lagrange][Funo Penalidade]

    Para maiores detalhes sobre os mtodos, vide na refernciao material sobre otimizao.

  • Otimizao:Programao Quadrtica:Se funo objetivo quadrtica e as restries so lineares, podemos utilizar quadprog do Matlab.Exemplo: min s.a.

    A funo objetivo deve ser escrita na forma: S=0.5*x'*H*x + f'*x

    [x,S]=quadprog(H,f,A,b,Aeq,beq) x=[0.4812 2.4962 0.5263 -0.6023 0.7514] S=17.7989

  • Otimizao:Programao No Linear:Exemplo: min s. a.

    Podemos usar fmincon do Matlab, devemos criar um arquivo com a funo objetivo e se as restries so no lineares, precisamos criar outro arquivo com as restries.Function S=fob(x)S=exp(x(1))*( 4*x(1)^2 +2*x(2)^2 +4*x(1)*x(2)+2*x(2)+1);Function [G,H]=rest(x)G(1)=1.5+x(1)*x(2)-x(1)-x(2);G(2)=-x(1)*x(2)-10;H(1)=0;>>[x S]=fmincon('fob',[-1;2],[],[],[],[],[],[],'rest') x=[ -9.5474 1.0474] S=0.0236

  • Otimizao:Programao Inteira Mista:Muitos problemas em operao, projeto, localizao e escalonamento de plantas envolvem variveis que no so contnuas e sim discretas, ou seja, variveis que so inteiras. Exemplo:

    Um dos algoritmos numricos mais empregados para PIM e denominada Branch and Bound Technique.O Matlab no possui uma rotina pronta para esse tipo de problema. As rotinas podem ser encontradas no diretrio rotinas prontas/otimizao/MILP e MINLP

  • Rotinas Prontas:No diretrio do CD-ROM Rotinas\MetodosNumericosTemos uma srie de rotinas prontas separadas por tpicos.As rotinas seguem um padro bem similar s funes embutidas do Matlab e um help nome da funo explica o seu funcionamento.

  • Variveis Simblicas:>>help symbolic [ toolbox ]

    Criando variaveis simbolicas:

    >>help sym >> help syms ex: >>syms x y [ cria x e y como var. simblicas]

    Manipulando variveis simblicas:Uma vez criada as variveis simblicas podemos usar todas as operaes matemticas do matlab.>>f=x+2*y >>g=x*y >>f+g; >>f*g; >>f/g;

    Alm de algumas operaes especificas para var. simblicas:>>finverse(f); [inversa da funo f]>>compose(f,g); [ funo composta f(g(x))]>>ezplot(f,2,3); [ plotagem de f entre os limites 2-3]

  • Variveis Simblicas:O produto das operaes pode resultar em expresses matemticas complicadas:>>simple; [ coloca a expresso na forma mais simples]>>simplify; [ simplifica a expresso]>> pretty; [ exibe a expresso de uma forma mais visual]

    Aps a manipulao e simplificao pode-se desejar substituir valores para as variveis simblicas:>>subs( f,2) [ substitui em f x=2]>>subs(f, x,2) [ substitui em f x=2 se f funo multivariavel]>>subs(f,x,y) [ substitui em f x=y] ex:>> f=x+y>>subs(subs(f,x,2),y,3) [ ans=5] [x=2 e y=3]

  • Resoluo Simblica:Equaes Algbricas:>>help solve>>[x1,x2,..xn]=solve( eq1,eq2,...eqn)

    As equaes podem ser escritas na forma:

    x*y=2 ou x*y-2

    Exemplo:

    >> syms x>>f=x+4;>>g=x+4;>>solve(f) [ ans=-4]>>solve(g) [ ans=-4]A vantagem que o solve retorna todas as solues do sistema, no entanto, o solve no muito robusto. No resolvendo sistemas muito complexos.

  • Resoluo Simblica:Derivadas Simblicas:>> help diff>>syms x y>>f= 2*x + x*y + 2*y;>>diff(f, x) [ derivada parcial em relao a x]

    >>help jacobian:>>jacobian( [f; g], [ x ; y])

    Integrais Indefinidas:

    >>help int>>int(g) [ g(x), integra g em relao a x com constante de int=0]>>int(g,x) [ g(x), integra g em relao a x com constante de int=0]>>int(g,a,b,c) [integral definida entre a e b]

    Se a constante de integrao diferente de zero, devemos somar essa constante soluo obtida

  • Resoluo Simblica:Equaes Diferenciais:

    >>help dsolve

    >>dsolve(Dy=4*y)>>dsolve(Dy=4*y, y(0)=1)>>dsolve( eqdif 1, eqdif 2, ...., cond inicial 1,....)

    Exemplo:>>S = 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.y=cos(t)