Minicurso Matlab Encit 2010

73
Uma Breve Introduc ¸ ˜ ao ao Matlab r Fran S´ ergio Lobato [email protected] ucleo de Modelagem, Simula¸ ao, Controle e Otimiza¸ ao de Processos Faculdade de Engenharia Qu´ ımica Universidade Federal de Uberlˆ andia, Brasil 13 th Brazilian Congress of Thermal Sciences and Engineering Faculdade de Engenharia Mecˆ anica Universidade Federal de Uberlˆ andia, Brasil 6` a 8 de Dezembro de 2010 F. S. Lobato Encit 2010 1/73

description

Apostila de Matlab.

Transcript of Minicurso Matlab Encit 2010

  • Uma Breve Introducao ao

    Matlabr

    Fran Sergio [email protected]

    Nucleo de Modelagem, Simulacao, Controle e Otimizacao de ProcessosFaculdade de Engenharia Qumica

    Universidade Federal de Uberlandia, Brasil

    13th Brazilian Congress of Thermal Sciences and EngineeringFaculdade de Engenharia Mecanica

    Universidade Federal de Uberlandia, Brasil

    6 a 8 de Dezembro de 2010

    F. S. Lobato Encit 2010 1/73

  • Objetivos Gerais

    Apresentar uma breve introducao ao software MatLabr:

    divulgar os comandos basicos;ilustrar aplicacoes em problemas classicos de engenharia ematematica usando os pacotes;entender com o software pode ser usado para o desenvolvimento desubrotinas para aplicacoes gerais;compreender as vantagens e desvantagens do software;apresentar estudos de caso.

    F. S. Lobato Encit 2010 2/73

  • O que e o MatLabr?

    The MathWorks - http//www.mathworks.com;

    Fundada em 1984 por Jack Little e Cleve Moler, a MathWorksdesenvolve software para engenheiros e cientstas (2200 pessoas em15 pases, com sede em Massachusetts, U.S.A).

    O MatLabr (Matrix Laboratory) e um sistema interativo de linguagem deprogramacao para computacao numerica e visualizacao para as areastecnicas e cientficas;

    Seu elemento basico de dados e uma matriz (operacoes vetoriais ematriciais);

    O MatLabr permite a solucao de muitos problemas numericos em uma

    fracao do tempo que seria necessario para escrever um programa em uma

    linguagem como Fortran, Pascal ou C;

    Matematica (simbolica) e otimizacao, estatstica e analise dedados, projeto de sistemas de controle, processamento de sinais eimagens, financas, etc.Aeroespacial, automotiva, bioqumica, farmaceutica, eletronica esemi-condutores, producao de energia, automacao industrial, etc.

    Pode trabalhar em conjunto com outras linguagens de programacao.

    Ultima versao: MatLabr Release 2010b (Setembro de 2010).

    F. S. Lobato Encit 2010 3/73

  • Vantagens e Desvantagens do MatLabr

    Vantagens:

    facilidade de uso;independencia de plataforma (tem suporte em diferentes sistemascomputacionais - Windows, Linux, versoes de Unix e Macintosh);funcoes pre-definidas (conta com uma grande biblioteca de funcoespre-definidas);diferente da maioria das linguagens de computador, o MatLabr

    apresenta muitos comandos para desenhos e imagens, constituindouma ferramenta interessante para a visualizacao de dados;interface grafica com o usuario (permite uma interacaousuario/programa mais amigavel, facilitiando desta forma odesenvolvimento de programas mais sofisticados).

    Desvantagens:

    como e uma linguagem interpretada, por isso pode ser mais lentoque linguagens compiladas.outra desvantagem e o custo (uma copia completa e cerca de cincoa dez vezes mais cara que um compilador convencional C ouFortran).

    F. S. Lobato Encit 2010 4/73

  • O Primeiro Contato

    Figura 1: Janela de apresentacao do MatLabr.

    F. S. Lobato Encit 2010 5/73

  • Help!

    Figura 2: Janela de apresentacao do help no MatLabr.

    F. S. Lobato Encit 2010 6/73

  • Comandos Gerais Basicos no MatLabr

    Tabela 1: Comandos basicos.Funcao Descricao

    cd Muda o diretorio corrente

    clc Limpa a janela de comandos

    clear Apaga todas as variaveis da memoria

    delete Apaga arquivos

    demo Executa programas de demonstracao do MatLabr

    dir Lista arquivos no diretorio corrente

    help Lista os topicos de ajuda disponveis

    helpwin Abre janela a navegacao em topicos de ajuda

    lookfor Procura arquivos .m por palavra chave

    quit Encerra a sessao do MatLabr

    whos Mostra informacoes sobre as variaveis armazenadas na memoria

    F. S. Lobato Encit 2010 7/73

  • Constantes e Variaveis

    Uma constante numerica e formada por uma sequencia de dgitos que

    pode estar ou nao precedida de um sinal positivo ou negativo e pode

    conter um ponto decimal. Esta sequencia pode terminar ou nao por uma

    das letras e, E, d ou D.

    2, 2.6e-1, 3.090D+1;

    Em modo interativo, o MatLabr e um interpretador de expressoes

    =.

    x=3+85OBS : Se o nome da variavel e o sinal de atribuicao forem omitidos entao

    o resultado sera dado na variavel default ans.

    3+85OBS : Regras a respeito do nome de variaveis

    deve conter ate 19 caracteres,deve comecar com letra seguida de letras, numeros ou (underline),o tamanho da letra e diferenciador (raiz, Raiz e RAIZ sao variaveisdiferentes),se voce nao deseja mostrar o resultado da operacao na tela use ; nofinal da linha de comando.

    F. S. Lobato Encit 2010 8/73

  • Arranjos e Matrizes

    O tratamento de numeros complexos e feito da mesma forma que nos

    numeros reais.

    a=2+3i ou b=1-3j

    a=[1 2 3] ou a=[1,2,3] (a(1)=1 ...)

    b=::

    a=1:1:5 ou b=10:-2:0 (e se o for negligenciado?)a(1:3)?, x=length(a)?

    Usando o comando linspace

    a=linspace(,,)c=linspace(1,10,10)se o for omitido 100 (default)

    v=[1;2;3;4;5] ou v=[1 2 3 4 5], v=v

    a=[1 2 3; 4 5 6; 7 8 9] ou a=[1,2,3;4,5,6;7,8,9]

    se a(2,2)=0?

    b=a([1 3],2)?

    b=a(3:-1:1,1:3)?, b=a(3:-1:1,:)?

    c=[a b], a e b de mesma dimensao!

    [t=size(a) ou [t,w]=size(a)

    F. S. Lobato Encit 2010 9/73

  • Arranjos e Matrizes

    O MatLaBr tem funcoes que se aplicam individualmente a cada colunada matriz produzindo um vetor linha com elementos correspondentes aoresultado de cada coluna.

    Tabela 2: Algumas funcoes praticas para o tratamento de matrizes.

    Funcao Descricao

    sum soma dos elementos

    prod produto dos elementos

    mean media aritmetica

    std desvio padrao

    max maior elemento

    min menor elemento

    sort ordenacao em ordem crescente

    a=magic(4) (n3)b=sum(a), b=sum(a(:,2))

    F. S. Lobato Encit 2010 10/73

  • Arranjos e Matrizes

    Tabela 3: Algumas funcoes praticas para o tratamento de matrizes.

    Funcao Descricao

    se o argumento for um vetor, cria uma matriz diagonal com os

    diag elementos do vetor; se o argumento for uma matriz, produz

    um vetor coluna contendo os elementos da diagonal

    tril extrai a parte triangular inferior de uma matriz

    triu extrai a parte triangular superior de uma matriz

    a=magic(4) (n3), b=diag(a), c=diag(b)b=tril(a), b=triu(a)

    a=zeros(n), a=ones(n), a=eye(n), a=rand(n) e a=randn(n) (nm)

    F. S. Lobato Encit 2010 11/73

  • Caracteres e Variaveis Especiais

    Uma variavel pode conter uma cadeia de caracteres

    a=Flamengo, b=Campeao Mundial de 1981, c=[a , b],c=a(1:3)

    Tabela 4: Variaveis especiais.

    Variavel Descricao

    ans nome de variavel default

    pi 3,14159 ...menor numero tal que quando adicionado a 1

    eps cria um numero de ponto flutuante maior que 1

    eps 21052=2,22041016

    inf infinito (1/0)

    NaN nao e um numero (Not a Number) - 0/0

    i e j i=j=1

    realmin menor numero de ponto flutuante (2,225110308)realmax maior numero de ponto flutuante (2,225110308)

    F. S. Lobato Encit 2010 12/73

  • Expressoes: aritmeticas, logicas e literais

    Tabela 5: Operacoes aritmeticas.

    operacao expressao operador exemplo

    adicao a + b + 1 + 2

    subtracao a - b - 1 - 2

    multiplicacao a b 2 3divisao a b 3 2potenciacao ab 2 3

    Tabela 6: Operacoes com vetores (a=[a1 ... an], b=[b1 ... bn] e c=escalar).

    operacao expressao resultado

    adicao escalar a + c [a1 + c a2 + c ... an + c]

    adicao vetorial a + b [a1 + b1 a2 + b2 ... an + bn]

    multiplicacao escalar a c [a1 c a2 c ... an c]multiplicacao vetorial a . b [a1 b1 a2 b2 ... an bn]divisao a direita a ./ b [a1/b1 a2/b2 ... an/bn]

    divisao a esquerda a .\ b [a1 \ b1 a2 \ b2 ... an \ bn]potenciacao a . c [ac1 ac2 ... acn]

    a . b [ab11 ab22 ... a

    bnn ]

    F. S. Lobato Encit 2010 13/73

  • Expressoes: aritmeticas, logicas e literais

    Tabela 7: Funcoes Trigonometricas.

    funcao descricao funcao descricao

    acos arco co-seno cos co-seno

    acosh arco co-seno hiperbolico cosh co-seno hiperbolico

    acot arco co-tangente cot co-tangente

    acoth arco co-tangente hiperbolica coth co-tangente hiperbolica

    acsc arco co-secante csc co-secante

    acsch arco co-secante hiperbolica csch co-secante hiperbolica

    asec arco secante sec secante

    asech arco secante hiperbolica sech secante hiperbolica

    asin arco seno sin seno

    asinh arco seno hiperbolico sinh seno hiperbolico

    atan arco tangente tan tangente

    atanh arco tangente hiperbolica tanh tangente hiperbolica

    F. S. Lobato Encit 2010 14/73

  • Expressoes: aritmeticas, logicas e literais

    Tabela 8: Funcoes Exponenciais, Complexas, etc.

    funcao descricao funcao descricao

    exp exponencial log logaritmo decimal

    log logaritmo natural sqrt raiz quadrada

    abs valor absoluto imag parte imaginaria do complexo

    angle angulo de fase real parte real do complexo

    conj complexo conjugado gcd maximo divisor comum

    lcm mnimo multiplo comum rem resto de divisao

    round arredonda sign sinal

    F. S. Lobato Encit 2010 15/73

  • Expressoes: aritmeticas, logicas e literais

    Tabela 9: Expressoes Logicas (1 significa verdadeiro e 0 significa falso).

    operador relacional descricao

    > maior que

    >= maior ou igual a

    < menor que

  • Comandos de entrada e sada

    pi?

    O comando format e usado para modifcar o formato numerico.

    Tabela 11: Comando format.comando resultado

    format short 3.1415 4 dgitos decimais

    format bank 3.14 2 dgitos decimais

    format long 3.14159265358979 14 dgitos decimais

    format short e 3.1416+00 4 dgitos decimais e expoente

    format long e 3.141592653589793+00 16 dgitos e expoente

    format hex 400921fb54442d18 hexadecimal

    format rat 355/113 aproximacao racional

    format compact suprime linhas em branco

    format loose mantem linhas em branco

    format atribui o padrao short e loose

    F. S. Lobato Encit 2010 17/73

  • Comandos de entrada e sada

    O comando disp() e usado para exibir sem

    mostrar o seu nome ou para exibir uma cadeia de caracteresdisp(numeros aleatorios entre 0 e 1) disp(rand(2,6))

    O comando fprintf(,A) exibe na tela os valores da variavel Acom a forma especificada na cadeia de caracteres a qual deveconter caracteres alfa-numericos e/ou especificacoes de conversao.

    Tabela 12: Especificacoes de conversao para o formato fprintf.

    formato especificacao

    %ni usado para valores inteiros, sendo n o tamanho do campo de exibicao

    %n.d f notacao na forma [-]mmm.ddd, sendo n o tamanho do campo e d o

    numero de dgitos decimais

    %n.de notacao na forma [-]m.dddxx, sendo n o tamanho do campo e d onumero de dgitos decimais

    %n.dg equivalente a %n.de ou %n.d f, dependendo de qual formato for mais

    curto, alem disso os zeros insignificantes nao sao exibidos

    %ns exibe caracteres em um campo de tamanho n

    fprintf(a precisao deste computador e %12.5e \n,eps/2)

    F. S. Lobato Encit 2010 18/73

  • Comandos de entrada e sada

    O comando =input() exibe e espera que

    um valor seja atribudo a

    n=input(Entre com o tamanho do vetor)

    Estruturas de erro: error() - causa a interrupcao daexecucao de um programa e exibe

    O comando save e usado para gravar as variaveis do espaco de trabalho

    em um arquivo em disco. Sua sintaxe e save

    , onde e o nome do arquivo a

    ser gravado (.mat (default) ou .txt), e a variavel que

    contem as informacoes a serem gravadas e as podem ser:

    -ascii: define que o arquivo sera na forma ASCII e seu nome naocontera a extensao .mat (arquivos binarios)-double: define que os numeros serao gravados com 16 dgitos aoinves de 8-tabs: define que os dados estarao tabulados

    O comando load e usado para recuperar os dados gravados em umarquivo. Sua sintaxe e load .

    F. S. Lobato Encit 2010 19/73

  • Arquivos .m

    Alem de poder entrar com cada comando de uma vez, o MatLabr

    permite, como qualquer linguagem de programacao que seja executada

    uma sequencia de comandos escrita em um arquivo de extensao .m

    1- clc % Limpa a tela de comandos2- close all % Fecha todas as janelas3- clear all % Limpa todas as variavies4- fprintf(Programa que calcula a soma de dois numeros informados

    pelo usuario \n)5- a=input(entre com o valor do coeficiente a: )6- b=input(entre com o valor do coeficiente b: )7- fprintf(Calcular a soma dos numeros a e b: )8- a+b

    OBS: O smbolo % e usado para documentar (comentar) oprograma desenvolvido

    F. S. Lobato Encit 2010 20/73

  • Subprograma function

    Um outro tipo de arquivo de roteiro e usado para o proprio usuario criarnovas funcoes para o MatLabr. Alem de aumentar a flexibilidade, osarquivos de funcao tem o mesmo status que as outras funcoes doMatLabr.

    O nome da funcao tem que ser igual ao nome do arquivo .m aonde elaesta definida, mas sem a extensao .m. Ao contrario do programa no qualas variaveis sao globais, em uma function, as variaveis sao locais, ouseja, elas nao tem acesso e nem podem criar variaveis no espaco detrabalho.

    Exemplo:

    1- function s=soma(a,b)2- fprintf(A soma dos dois numeros e: )3- s=a+b

    OBS: clc?, close all? e clear all?

    F. S. Lobato Encit 2010 21/73

  • Programa principal + subprograma function

    Podemos escrever um programa como combinacao dos anteriores:

    programa principal.m

    1- clc2- close all3- clear all4- fprintf(Programa que calcula a soma de dois numeros fornecidos

    pelo usuario \n)5- a=input(Entre com o primeiro numero: )6- b=input(Entre com o segundo numero: )7- c=soma2n(a,b) % Subprograma soma2n.m8- fprintf(A soma dos numeros e:

    subprograma soma2n.m

    1- function y=soma2n(a,b)2- y=a+b;

    F. S. Lobato Encit 2010 22/73

  • Controle de Fluxo

    Os comandos que controlam o fluxo especificam a ordem em que acomputacao e feita. No MatLabr estes comandos sao semelhantes aos usadosna linguagem C, mas com uma estrutura diferente (mais simples).

    Laco for:

    1- for x = ::2- 3- end

    Programa que gera a matriz A(i,j)=i+j

    1- clc; close all; clear all;2- n=input(Entre com a dimensao da matriz: );3- A=zeros(n,n); % Atribui zero a cada elemento da matriz4- for i=1:n % Laco de repeticao para a linha5- for j=1:n % Laco de repeticao para a coluna6- A(i,j)=i+j; % Lei de recorrencia7- end % fim for para i8- end % fim for para j9- A % imprimindo a matriz A

    F. S. Lobato Encit 2010 23/73

  • Controle de Fluxo

    Ao contrario do Laco for, que executa um grupo de comandos um numero fixode vezes, o laco while executa um grupo de comandos um numero indefinidode vezes. O laco while e executado enquanto a condicao forverdadeira:

    Laco while:

    1- while 2- 3- end

    Programa que identifica o menor numero que somado a um o modifica

    1- clc; close all; clear all;2- x=1; % parametro informado pelo usuario3- while 1+x > 1 % expressao a ser verificada4- x = x/2; % comando5- end % fim do laco while6- x % imprimindo o numero x

    F. S. Lobato Encit 2010 24/73

  • Controle de Fluxo

    Em diversas situacoes, as sequencias de comandos tem de ser executadascondicionalmente, com base em um teste relacional. Essa logica eimplementada por meio de uma das diversas formas da estrutura if-else-end.A mais simples e:

    Laco if-else-end:

    1- if 2- 3- else4- 5- end

    Programa que gera a matriz identidade

    1- clc; close all; clear all;2- n=input(Entre com a dimensao da matriz: )3- A=zeros(n,n);4- for i=1:n; for j=1:n; if i==j5- A(i,j)=1;6- else7- A(i,j)=0;8- end; end; end;9- A

    F. S. Lobato Encit 2010 25/73

  • Controle de Fluxo

    Essa estrutura funciona como uma chave seletora, escolhendo a expressaocorreta para executar os comandos (chavear condicionalmente expressoes). Oformato geral do comando switch e:

    Laco switch:

    1- switch 2- case ...3- 4- case ...5- 6- otherwise7- 8- end

    Programa que identifica um determinado metodo

    1- clc; close all; clear all;2- method = Bilinear;3- switch lower(method)4- case linear,bilinear disp(Method is linear)5- case cubic disp(Method is cubic)6- otherwise disp(Unknown method.) end

    F. S. Lobato Encit 2010 26/73

  • Graficos no MatLabr

    Graficos sao ferramentas poderosas quando se deseja interpretarvisualmente os resultados.O comando mais simples para desenhar um grafico no MatLabr e oplot(,,), onde e ovetor que contem o eixo das abscissas, e o eixo dasordenadas, e a cor dos pontos plotados e e o estilo delinha.

    Tabela 13: Cor e estilo em graficos no MatLabr.

    smbolo cor smbolo estilo de linha

    y amarela pontom lilas crculoc turquesa x marca x

    r vermelho + mais

    g verde asteriscob azul - linha solida

    w branco : linha pontilhada

    k preto - linha de traco e ponto linha tracejada

    F. S. Lobato Encit 2010 27/73

  • Graficos no MatLabr

    Tabela 14: Caractersticas gerais em graficos no MatLabr.

    comando descricao

    xlabel() escreve abaixo do eixo das abscissas

    ylabel() escreve ao lado do eixo das ordenadas

    title() escreve no alto da figura

    text(xi ,yi ,) escreve na posicao (xi ,yi )

    gtext() escreve na posicao indicada pelo mouse

    Exemplo pratico:

    1- x=linspace(0,,50); % abscissa2- y=sin(x); % ordenada3- plot(x,y,b-); % grafico de x contra y4- xlabel(x ); ylabel(y ) % labels5- title(funcao seno); % ttulo do grafico6- text(1,1,sin(x)); % texto no grafico7- gtext(sen(x)); % texto no grafico8- grid on; % malha o ambiente grafico

    F. S. Lobato Encit 2010 28/73

  • Graficos no MatLabr

    Alternativamente pode-se usar o comando fplot para construir o grafico deuma funcao f

    a- fplot(sin(x)x,[-20 20]); grid on;b- fplot(sin(x)x,[-18 18 -10 10]); grid on;

    (a) restricao em x (b) restricao em x e em y

    Figura 3: Comando fplot.

    F. S. Lobato Encit 2010 29/73

  • Graficos no MatLabr

    Tabela 15: Comandos para tracar graficos.

    Funcao Descricao

    plot Grafico 2D em escala linear para ambos eixos

    loglog Grafico 2D em escala logartmica para ambos eixos

    semilogx Grafico 2D em escala logartmica para o eixo x e linear para y

    semilogy Grafico 2D em escala linear para o eixo x e logartmica para y

    plotyy Grafico 2D com eixos y diferentes a direita e a esquerda

    comet Traca trajetoria animada 2D dos pontos (x,y)

    bar Grafico de barras

    hist Histograma

    polar Grafico usando coordenadas polares com angulo em radianos

    stairs Grafico em forma escada

    stem Grafico 2D com sequencia discreta de y

    plot3 Traca curvas em 3D

    comet3 Traca trajetoria animada 3D dos pontos (x,y,z)

    mesh Traca uma malha colorida em 3D, meshc (+ contorno)

    surf Traca uma superfcie colorida em 3D, surfc (+ contorno)

    F. S. Lobato Encit 2010 30/73

  • Graficos no MatLabr

    Tabela 16: Comandos para editar e modificar graficos.

    Funcao Descricao

    axis Controla a escala e a visualizacao dos eixos

    colormap Especifica o mapa de cores utilizado

    grid Adiciona ou remove linhas de grelha do grafico corrente

    hold Mantem o grafico corrente (futuros graficos sao sobrepostos a este)

    legend Adiciona e define uma legenda no grafico corrente

    subplot Divide uma figura em varias sub-figuras e seleciona uma delas

    text Coloca um texto no grafico corrente

    title Ttulo do grafico corrente

    xlabel Ttulo do eixo x corrente

    ylabel Ttulo do eixo y corrente

    F. S. Lobato Encit 2010 31/73

  • Graficos no MatLabr

    Comandos hold on/off e legend

    1- clc; close all; clear all;

    2- x=0:0.1:2; % gera um vetor de 0 a 2

    3- y=sin(x); % calcula o vetor das amplitudes

    4- plot(x,y); % plota o grafico

    5- xlabel(valores de x); % adiciona legenda no eixo x

    6- ylabel(amplitude); % adiciona legenda no eixo y

    7- grid on; % coloca grid no grafico

    8- y2=2sin(x); % gera um outro vetor de amplitudes

    9- hold on; % segura o grafico anterior para plotar junto com o novo grafico

    10- plot(x,y2,r+:); % plota o novo grafico

    11- title(Grafico da Funcao seno); % insere ttulo no grafico

    12- legend(Amplitude = 1,Amplitude = 2); % insere legenda no grafico

    F. S. Lobato Encit 2010 32/73

  • Graficos no MatLabr

    Comandos hold on/off e legend

    Figura 4: Uso de hold on/off e legend.

    F. S. Lobato Encit 2010 33/73

  • Graficos no MatLabr

    Comando subplot: gera varios eixos em uma mesma janela.

    Sintaxe: subplot(m,n,p), onde m e numero de eixos na vertical (numero

    de linhas), n e o numero de eixos na horizontal (numero de colunas) e p e

    o ndice do eixo corrente.

    1- clc; close all; clear all;2- x=linspace(0,pi);3- y1=sin(x);4- y2=cos(x);5- subplot(1,2,1) % Identifica a posicao do grafico 16- plot(x,y1,bo);7- xlabel(x)8- ylabel(sin(x))9- subplot(1,2,2) % Identifica a posicao do grafico 2

    10- plot(x,y2,ro);11- xlabel(x)12- ylabel(cos(x))

    F. S. Lobato Encit 2010 34/73

  • Graficos no MatLabr

    Comando subplot: gera varios eixos em uma mesma janela.

    Figura 5: Uso do comando subplot.

    F. S. Lobato Encit 2010 35/73

  • Graficos no MatLabr

    Comandos bar, bar3, stairs e barh.

    1- clc; close all; clear all;

    2- x=-2.9:0.2:2.9; y=exp(-x2);

    3- subplot(2,2,1)

    4- bar(x,y)

    5- title(Grafico de barras de uma curva em forma de sino);

    6- subplot(2,2,2)

    7- bar3(x,y)

    8- title(Grafico de barras 3-D de uma curva em forma de sino);

    9- subplot(2,2,3)

    10- stairs(x,y)

    11- title(Grafico em escada de uma curva em forma de sino);

    12- subplot(2,2,4)

    13- barh(x,y)

    14- title(Grafico de barras horizontal);

    F. S. Lobato Encit 2010 36/73

  • Graficos no MatLabr

    Comandos bar, bar3, stairs e barh.

    Figura 6: Uso dos comandos bar, bar3, stairs e barh.

    F. S. Lobato Encit 2010 37/73

  • Graficos no MatLabr

    Graficos 3D: plot3d

    1- clc; close all; clear all;

    2- x=-4:0.1:4;

    3- y=-4:0.1:4;

    3- plot3(cos(x),sin(y),(x+y))

    3- xlabel(eixo x)

    3- ylabel(eixo y)

    3- zlabel(eixo z)

    F. S. Lobato Encit 2010 38/73

  • Graficos no MatLabr

    Graficos 3D: plot3d

    Figura 7: Uso do comando plot3d.

    F. S. Lobato Encit 2010 39/73

  • Graficos no MatLabr

    Graficos 3D: contour3

    1- clc; close all; clear all;

    2- [X,Y] = meshgrid([-2:.25:2]);

    3- Z = X.exp(-X.2-Y.2);4- contour3(X,Y,Z,30)

    5- surface(X,Y,Z,EdgeColor,[.8 .8 .8],FaceColor,none)

    6- colormap cool

    F. S. Lobato Encit 2010 40/73

  • Graficos no MatLabr

    Graficos 3D: contour3

    Figura 8: Uso do comando contour3.

    F. S. Lobato Encit 2010 41/73

  • Graficos no MatLabr

    Graficos 3D: mesh.

    1- clc; close all; clear all;

    2- x=-:0.5:;

    3- y=-:0.5:;

    4- [Mx,My]=meshgrid(x,y);

    5- Mz=cos(Mx).sin(My);6- mesh(Mx,My,Mz);

    F. S. Lobato Encit 2010 42/73

  • Graficos no MatLabr

    Graficos 3D: mesh

    Figura 9: Uso do comando mesh.

    F. S. Lobato Encit 2010 43/73

  • Graficos no MatLabr

    Graficos 3D: meshc.

    1- clc; close all; clear all;

    2- [X,Y] = meshgrid(-3:.125:3);

    2- Z = peaks(X,Y);

    2- meshc(X,Y,Z);

    2- axis([-3 3 -3 3 -10 5])

    F. S. Lobato Encit 2010 44/73

  • Graficos no MatLabr

    Graficos 3D: meshc

    Figura 10: Uso do comando meshc.

    F. S. Lobato Encit 2010 45/73

  • Graficos no MatLabr

    Graficos 3D: surf

    1- clc; close all; clear all;

    2- x=-:0.5:;

    3- y=-:0.5:;

    4- [Mx,My]=meshgrid(x,y);

    5- Mz=cos(Mx).sin(My);6- mesh(Mx,My,Mz);

    7- surf(Mx,My,Mz);

    F. S. Lobato Encit 2010 46/73

  • Graficos no MatLabr

    Graficos 3D: surf

    Figura 11: Uso do comando surf.

    F. S. Lobato Encit 2010 47/73

  • Equacoes Lineares no MatLabr

    Comando solve: resolve simbolicamente ou numericamente uma ou maisequacoes algebricas lineares.

    Sintaxe: solve(eq,var,par), onde eq e a equacao (sistema de equacoes),

    var e o vetor de variaveis e par e o conjunto de parametros.

    1- solve(ax2 + bx + c) [1/2/a(-b+(b2-4ac)(1/2)),1/2/a(-b-(b2-4ac)(1/2))]

    2- solve(ax2 + bx + c,b) [-(ax2+c)/x]3- S=solve(x + y = 1,x - 11y = 5) [S.y = -1/3, S.x = 4/3]

    Comando inv: resolve numericamente um sistema de equacoes algebricaslineares (Ax=b x=b/A=inv(A)b)

    Sintaxe inv(A) (dada a matriz A quadrada)

    1- x=inv(A)b2- A=[1 1 1;3 1 0;1 -2 -1]3- b=[1;3;0]4- x=inv(A)b=[4/5 -2/5 3/5]

    F. S. Lobato Encit 2010 48/73

  • Equacoes Nao-Lineares no MatLabr

    Comando fsolve: resolve simbolicamente ou numericamente uma ou maisequacoes algebricas nao-lineares.

    Sintaxe: [sol,fval,exitflag]=fsolve(eq,x,options), onde sol e a solucao dosistema de equacoes eq, fval e o numero de avaliacoes da funcao, exitflage o sinalizador (-4 ... 4; 0 - numero maximo de iteracoes alcancadas; 1 -converge; etc), x e o vetor de variaveis e options e o conjunto deparametros (iterations; Number of function evaluations, algorithm;etc).

    Resolva o sistema: {2x1-x2-exp(x1);-x1+2x2-exp(x2)}1- x0 = [-5; -5]; % Estimativa inicial2- options=optimset(Display,iter); % Opcoes para imprimir a

    sada3- [x,fval] = fsolve(@myfun,x0,options) % Chama o solver4- function F = myfun(x) % Function que contem o sistema de

    equacoes5- F = [2x(1)-x(2)-exp(-x(1)); -x(1)+2x(2)-exp(-x(2))];6- x=[0.5671 0.5671] e fval=[-0.4059106 -0.4059106]

    F. S. Lobato Encit 2010 49/73

  • Interpolacao Numerica no MatLabr

    Comando interp1: interpolacao de pontos 1D usando diferentes metodos.

    Sintaxe: yi = interp1(x,y,xi,method), onde x e y sao os pontostabulados, xi e o conjunto de abscissas onde o polinomio interpolador yisera avaliado e method e o metodo utilizado (linear, spline, etc).

    Exemplo:

    1- x = 0:10; % Abscissas2- y = sin(x); % Ordenadas3- xi = 0:.25:10; % Pontos onde a aproximacao sera avaliada4- yi = interp1(x,y,xi); % Interpolacao5- plot(x,y,o,xi,yi,b+) % Plotando os resultados

    Comando spline: interpolacao de pontos 1D usando polinomios cubicos porelementos.

    Sintaxe: yi = spline(x,y,xi), onde x e y sao os pontos tabulados e xi e oconjunto de abscissas onde o polinomio interpolador yi sera avaliado.

    Exemplo:

    1- idem ao anterior ... substitui-se interp1(x,y,xi) porspline(x,y,xi).

    F. S. Lobato Encit 2010 50/73

  • Integracao Numerica no MatLabr

    Comando trapz: integracao numerica usando o Metodo dos Trapezios.

    Sintaxe: I = trapz(x,f(x)), onde x e f(x) sao os pontos tabulados.

    Exemplo:

    0

    sin(x)dx (solucao analtica - 2)

    1- x = 0:/100:; % Abscissas2- y = sin(x); % Ordenadas3- I = trapz(x,y); % Integracao

    Comando quad: integracao numerica usando o Metodo da Quadratura deSimpson.

    Sintaxe: I = quad(fun,a,b,tol), onde fun e a funcao a ser integrada, a e bsao os limites da integracao e tol e a tolerancia usada no procedimentonumerico.

    Exemplo:

    20

    1

    x3 2x 5 dx

    1- F = @(x)1./(x3 2 x 5); % Funcao a ser integrada2- Q = quad(F,0,2); % Resultado da integracao

    F. S. Lobato Encit 2010 51/73

  • Otimizacao no MatLabr

    Comando fminsearch:

    Sintaxe: [x,fval,exitflag]=fminsearch(fun,x0,options), onde x e a solucaodo problema, fval e o numero de avaliacoes da funcao objetivo fun,exitflag e o sinalizador (1 - convergiu para a solucao; 0 - o numeromaximo de avaliacoes da funcao objetivo foi alcancada e -1 - tente outracondicao iniacial x0) e options e o conjunto de parametros (iterations;Number of function evaluations, algorithm; etc).

    Minimize f (x) = 100(x(2) x(1)2)2 + (1 x(1))2

    1- x0 = [-1.2, 1]; % Estimativa inicial2- options=optimset(TolX,1e-8); % Opcoes para a tolerancia3- [x,fval,exitflag] = fminsearch(banana,x0,options) % Chama o

    solver4- banana = @(x)100(x(2)-x(1)2)2+(1-x(1))2; % Function a ser

    otimizada5- Solucao x=[1 1] e fval=[8.1777106]

    F. S. Lobato Encit 2010 52/73

  • Equacoes Diferenciais no MatLabr

    Comando ode: pacote que implementa varios metodos para a resolucao desistemas de equacoes diferenciais de valor inicial.

    Sintaxe: [T,Y]=solver(odefun,tspan,y0,options), onde T e o vetor quecontem a variavel independente, Y e a matriz que contem as variaveisdependentes, solver discrimina o metodo empregado na resolucao doproblema, tspan e o vetor que contem o domnio da variavelindependente, y0 e o vetor que contem as condicoes iniciais para cadavariavel dependente e options contem as opcoes que podem ser utilizadas.

    Exemplo:

    y 1 = y2y3 y1(0) = 0 (1)

    y 2 = y1y3 y2(0) = 1 (2)y 3 = 0.51y1y2 y3(0) = 1 (3)

    1- options = odeset(RelTol,1e-4,AbsTol,[1e-4 1e-4 1e-5]);1- [T,Y] = ode45(@rigid,[0 12],[0 1 1],options); % Solver2- plot(T,Y(:,1),-,T,Y(:,2),-.,T,Y(:,3),.)3- function dy = rigid(t,y)4- dy=zeros(3,1);5- dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);

    F. S. Lobato Encit 2010 53/73

  • Equacoes Diferenciais no MatLabr

    Tabela 17: Integradores de equacoes diferenciais ordinarias.

    Funcao Descricao

    ode45 Runge-Kutta explcito de ordem 4/5 (Dormand-Prince)

    ode23 Runge-Kutta explcito de ordem 2/3 (Bogacki-Shampine)

    ode113 Preditor-corretor de passo variavel (Adams-Bashforth-Moulton)

    ode15s BDF de passo quase constante para EDOs rgidas

    (Klopfenstein-Shampine)

    ode23t Implementacao da regra trapezoidal

    ode23s Implementacao de um par Rosenbrock (2,3) modificado

    para EDOs rgidas

    ode23tb Runge-Kutta implcito trapezoidal/BDF

    (Bank-Rose-Hosea-Shampine)

    F. S. Lobato Encit 2010 54/73

  • Equacoes Diferenciais no MatLabr

    Comando odeset: comando que altera as opcoes default de ode.

    Sintaxe: options = odeset(name1,value1,name2,value2,...)

    Tabela 18: Algumas propriedades do comando odeset.

    Propriedade Descricao

    RelTol Tolerancia relativa (1E-3)

    AbsTol Tolerancia absoluta (1E-6)

    InitialStep Tamanho do passo inicial

    MaxStep Tamanho maximo do passo de integracao

    Jacobian Informacao a respeito da matriz Jacobiana

    MaxOrder Maxima ordem nos Metodos BDF

    options=odeset(RelTol,1E-8,AbsTol,1E-6,...).

    F. S. Lobato Encit 2010 55/73

  • Algumas Funcoes Uteis do MatLabr

    Zeros de polinomios

    roots, calcular p(x) = 5/8x5 5x4 3x3 + 2x 10Sintaxe: roots([5/8 -5 -3 0 2 -10])

    Determinante de uma matriz

    det, A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]

    Sintaxe: det(A)

    Inversa de uma matriz

    inv, A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]

    Sintaxe: inv(A)

    Autovalores e Autovetores

    eig, A=[1 -1;-4 1]

    Sintaxe: [V,D]=eig(A) (D - autovalores e V - auto-vetores; AV =VD)

    Posto (Rank) de uma matriz

    rank, A=[1 2 8; 2 4 16; 0 1 3]

    Sintaxe: rank(A)

    F. S. Lobato Encit 2010 56/73

  • Algumas Funcoes Uteis do MatLabr

    Demonstracao de recursos do MatLabr

    Sintaxe: demo

    Tamanho de um vetor

    Sintaxe: length(A); A=[2 3 4 5 6]

    Identifica ndices de elementos nao nulos

    Sintaxe: find(A); A=[2 3 0;6 0 0;0 9 9]

    Verifica se os elementos sao numeros reais

    Sintaxe: isreal(A); A=2i

    Arredonda para o inteiro mais proximo

    Sintaxe: round(A); A=0.25

    Interrompe a execucao dos lacos for e while

    Sintaxe: break;

    Interrompe a execucao do programa enquanto o usuario nao confirmar

    Sintaxe: pause;

    Interrompe a execucao do programa por n segundos

    Sintaxe: pause(n);

    F. S. Lobato Encit 2010 57/73

  • Algumas Funcoes Uteis do MatLabr

    Mostra mensagem e aborta a execucao do programa

    Sintaxe: error()

    Retorna para o ponto que a funcao foi chamada

    Sintaxe: return

    Mostra a data

    Sintaxe: date

    Executa uma funcao no MatLabr definida por uma string

    Sintaxe: eval(x+1) (o valor de x deve ser definido anteriormente)

    Converte um numero numa expressao alfanumerica (string)

    Sintaxe: num2str(2)

    Transformada rapida de Fourier

    Sintaxe: fft(x)

    Transformada inversa de Fourier

    Sintaxe: ifft(x)

    Calcula a derivada de um polinomio

    Sintaxe: polyder([2 3 4]) %(2x2 + 3x + 4)

    F. S. Lobato Encit 2010 58/73

  • Medida de tempo e operacoes

    O MatLabr prove dois modos de analisar o desempenho de um dado metodo:o tempo de execucao e o numero de operacoes aritmeticas.

    Comando tic-toc: e possvel saber o tempo gasto para a execucao de

    um grupo de comandos. Sua sintaxe e:

    1- tic2- 3- =toc

    OBS: se o computador estiver executando varias tarefas simultaneamente,esse comando pode nao ser uma medida muito confiavel.

    O comando cputime fornece o tempo de CPU. Sua sintaxe e:

    1- tempo1=cputime2- 3- cputime-tempo1

    O comando flops fornece o numero acumulado de operacoes de pontoflutuante, bastando executar o comando flops(0) para zerar o contador.E importante observar que esse comando nao conta exatamente todas asoperacoes mas sim as que o MatLabr considera mais importantes (matrizde ordem n n3 n2, mas e contado apenas n3 operacoes).

    F. S. Lobato Encit 2010 59/73

  • Metodo de Newton

    Deseja-se obter o zero da funcao f (x) = 0.

    Figura 12: Concepcao conceitual do Metodo de Newton.

    F. S. Lobato Encit 2010 60/73

  • Metodo de Newton

    Seja a funcao f (x) = 0:

    Fundamentado no truncamento da Serie de Taylor:

    xn+1 = xn f (xn)

    f (xn)(4)

    Este metodo e iterativo, isto e, a partir de uma estimativa inicial(xn, n = 0) fornecida pelo usuario, novos valores para a raz(xn, n = 1, 2, ...) sao obtidos atraves da relacao de recorrencia acima;

    Exige a avaliacao da derivada da funcao f (x):

    Analiticamente (poucos casos);Numericamente (diferencas finitas).

    Para sistemas de equacoes faz-se necessario a avaliacao da matrizJacobiana - J (matriz de derivadas primeiras).

    xn+1 = xn f (xn)

    J (xn)(5)

    F. S. Lobato Encit 2010 61/73

  • Metodo de Gauss-Siedel

    E um metodo iterativo para a resolucao do sistema linear Ax = b a partir deuma estimativa inicial xo . Para ilustrar, seja o sistema linear dado por: 5 1 22 6 3

    2 1 7

    x1x2x3

    = 12

    32

    (6)Neste caso, o Metodo de Gauss-Siedel consiste em:

    xk+11 = 1

    5(1 + xk2 2xk3 ) (7)

    xk+12 =1

    6(2 xk+11 + 3xk3 ) (8)

    xk+13 =1

    7(32 2xk+11 xk+12 ) (9)

    Com essa configuracao o processo iterativo e mais rapido com relacao ase todas as variaveis atualizadas fossem apenas utilizada na proximaiteracao (Metodo de Gauss-Jacobi).

    F. S. Lobato Encit 2010 62/73

  • Ajuste Polinomial

    Este metodo consiste em passar um polinonio de grau n por m pontos, atravesda resolucao de um sistema de equacoes lineares; Seja o polinomio interpoladoryi = ao + a1xi + a2x

    2i + ...+ anx

    ni :

    1 xo x2o x

    3o xno

    1 x1 x21 x

    31 xn1

    ......

    ......

    . . ....

    1 xn x2n x

    3n xnn

    aoa1...

    an

    =

    y expoy exp1

    ...y expn

    (10)

    A principal ideia desta tecnica e capturar a tendencia comportamentaldos pontos;

    A reducao do grau do polinomio evita o fenomeno de Runge;

    O polinomio ajustado so podera ser empregado para predizer ocomportamento do fenomeno dentro do domnio utilizado para obte-lo,isto e, nao e permitido extrapolacao.

    F. S. Lobato Encit 2010 63/73

  • Metodo de Euler

    Objetivo: obter a solucao aproximada da equacao diferncial ordinaria deprimeira ordem:

    dy (x)

    dx= f (x , y) y(xo) = yo (11)

    xf x xo (12)ME- e o metodo mais simples ja concebido para a resolucao de equacoesdiferenciais:

    Fundamentado no truncamento da Serie de Taylor;

    dy (x)

    dx yi+1 yi

    h= f (x , y) y(xo) = yo (13)

    yi+1 = yi + hf (x , y) (14)

    h xf xon

    (15)

    O ME e altamente dependente do numero de pontos (n) utilizados, n precisao aumento do custo computacional;OBS: cada metodo numerico tem uma qualidade inerente, isto e; naoadianta fazer com que n tenta a infinito para melhorar a qualidade dasolucao.

    F. S. Lobato Encit 2010 64/73

  • Metodo de Runge-Kutta

    Objetivo: obter a solucao aproximada da equacao diferncial ordinaria deprimeira ordem:

    dy (x)

    dx= f (x , y) y(xo) = yo (16)

    xf x xo (17)

    Fundamentado na seguinte funcao de recorrencia (n - ordem do metodo):

    yi+1 = yi + h(xi , yi , h) = yi + h(c1k1 + c2k2 + ...+ cnkn) (18)

    k1 = f (xi , yi ) (19)

    k2 = f (xi + p2h, yi + a21hk1) (20)

    k3 = f (xi + p3h, yi + a31hk1 + a32hk2) (21)

    ... (22)

    kn = f (xi + pnh, yi + an1hk1 + ...+ ann1hkn1) (23)

    Os parametros ci , pj e akl sao obtidos a partir da comparacao destaformula de recorrencia com o truncamento da Serie de Taylor.

    F. S. Lobato Encit 2010 65/73

  • Metodo de Runge-Kutta 4a Ordem

    Objetivo: obter a solucao aproximada da equacao diferncial ordinaria deprimeira ordem:

    yi+1 = yi +h

    6(k1 + 2k2 + 2k3 + k4) (24)

    k1 = f (xi , yi ) (25)

    k2 = f (xi +1

    2h, yi +

    1

    2hk1) (26)

    k3 = f (xi +1

    2h, yi +

    1

    2hk2) (27)

    k4 = f (xi + h, yi + hk3) (28)

    A famlia de MRK e auto-inicializavel (sendo utilizados para inicializacaodos metodos implcitos);

    A principal desvantagem destes metodos e o elevado numero deavaliacoes com relacao a outras abordagens.

    F. S. Lobato Encit 2010 66/73

  • Metodo da Maxima Descida - Steepest Descent

    Deseja-se minimizar a funcao f (x). Na otimizacao classica, a formula derecorrencia utiliza no processo iterativo e:

    xk+1 = xk+Sk (onde e o tamanho do passo no sentido da direcao debusca Sk).

    Sk - derivada da funcao (a depender da quantidade de informacoes e daordem da derivada utilizada, define-se o metodo).

    No Metodo da Maxima Descida, Sk e f (x)k .xk+1=xk+f (x)ksubstitui-se todas as variaveis de projeto (xk+1) na funcao original,isto implica que o problema original (multi-dimensional) etransformado em um problema uni-dimensional, cuja variavel e (f ()).

    df

    d= 0 = F (xk ,f (x)k) (29)

    F. S. Lobato Encit 2010 67/73

  • Metodo do Trapezio

    O objetivo e determinar o valor da:

    I (f ) =

    ba

    f (x) dx (30)

    Figura 13: Concepcao conceitual do Metodo dos Trapezios.

    Neste metodo, a integral e aproximada por:

    I (f ) In (f ) =n

    j=1

    hj2

    [f (xj1) + f (xj)] (31)

    onde h nao necessariamente e variavel.F. S. Lobato Encit 2010 68/73

  • Metodo de Newton-Cotes

    Nesta classe de metodos sao utilizados polinomios interpoladores paraaproximar a funcao a ser integrada. O polinomio interpolador utilizado define otipo de metodo.

    2a ordem: Metodo de Simpson 1/3 (n - par)

    I (f ) =h

    3

    (f0 + 4

    n1j=1,3,5,...

    fj + 2n2

    j=2,4,6,...

    fj + fn

    )(32)

    3a ordem: Metodo de Simpson 3/8 (n - mpar)

    I (f ) =3h

    8

    (f0 + 3

    n1j=1,4,7,...

    (fi + fi+1) + 2n2

    j=3,6,9,...

    fj + fn

    )(33)

    F. S. Lobato Encit 2010 69/73

  • Metodo das Diferencas Finitas

    Nesta metodologia e utilizado a Serie de Taylor (truncada) para aobtencao de aproximacoes para derivadas.

    u (X0 + X ) = u (X0) +du

    dX

    X0

    X +d2u

    dX 2

    X0

    (X )2

    2!+

    d3u

    dX 3

    X0

    (X )3

    3!+

    (34)

    u (X0 X ) = u (X0)du

    dX

    X0

    X +d2u

    dX 2

    X0

    (X )2

    2! d

    3u

    dX 3

    X0

    (X )3

    3!+

    (35)

    Somando as duas equacoes acima, obtemos a aproximacao para aderivada segunda:

    d2u

    dX 2=

    u (X0 + X ) 2u (X0) + u (X0 X )(X )2

    + (X )2 (36)

    Neste contexto, transforma-se EDP em ED ou em sistemas de equacoesalgebricas (lineares ou nao lineares) que podem ser resolvidas mediante aaplicacao de tecnicas apropriadas.

    F. S. Lobato Encit 2010 70/73

  • Consideracoes Finais

    Sobre o mini-curso

    E importante destacar que o objetivo desta breve introducao foiapresentar a linguagem de programacao MatLabr;

    Neste contexto, nao foram abordadas funcoes especficas, como porexemplo, no tratamento de imagens e na apresentacao de uma das suasprincipais ferramentas, o Simulinkr, responsavel pela parte de controle;

    Finalmente, cabe a todos nos buscar aprimoramento no software, demodo a extrair o maximo de suas potencialidades.

    F. S. Lobato Encit 2010 71/73

  • Agradecimentos

    Agradeco a oportunidade oferecida por:

    Enio Pedone Bandarra Filho

    Su Jian UFRJ

    Elie Luis Martnez Padilla

    Francisco Jose de Souza

    Odenir de Almeida

    Oscar Saul Hernadez Mendoza

    Ricardo Fortes de Miranda

    Ricardo Hernandez Pereira

    Solidonio Rodrigues de Carvalho

    F. S. Lobato Encit 2010 72/73

  • Referencias Bibliograficas

    S. J. ChapmanProgramacao em Matlab Para Engenheiros.Editora Cengage Learning, 2a Edicao, 2010.

    A. GilatMatlab Com Aplicacoes em Engenharia.Editora Bookman, 2a Edicao, 2006.

    S. A. VicenteCurso Introdutorio de Matlab 6.5Apostila, Janeiro, 2003.

    S. A. VicenteMatlab & Simulink,Apostila, Faculdade de Engenharia Industrial, 1994.

    F. S. Lobato Encit 2010 73/73

    Main Talk