apostila completa matlab

Upload: jackson

Post on 07-Apr-2018

276 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Apostila Completa MATLAB

    1/12

    Universidade Federal de Alagoas - UFALCentro de Tecnologia - CTEC Departamento de Engenharia Estrutural - EESCidade Universitria - Campus A. C. SimesTabuleiro do Martins - Macei AL - CEP 57072-970Tel: (082) 214 1277 - Fax: (082) 214 1625E-mail: [email protected] - Home page: http://www.ctec.ufal.br/ees

    INTRODUO AO MATLAB

    Eduardo Nobre LagesProfessor Adjunto

    E-mail: [email protected]

    Macei - AlagoasMaio de 1999

  • 8/6/2019 Apostila Completa MATLAB

    2/12

    Introduo ao MATLAB pgina 2/12

    INTRODUO AO MATLAB

    1. Introduo

    O MATLAB (MATrix LABoratory) um poderoso software de computao numrica, deanlise e de visualizao de dados, com um propsito bem mais amplo que o original laboratrio dematrizes. O MATLAB um sistema interativo e uma linguagem de programao para computaotcnica e cientfica em geral.

    Os comandos do MATLAB so muito prximos da forma como escrevemos expressesalgbricas, tornando mais simples o seu uso. Podem ser incorporados s rotinas predefinidas,pacotes para clculos especficos.

    Uma vez inicializado o MATLAB, aparecer na janela de comandos um prompt , para averso completa (Figura 1), ou EDU , no caso da verso estudante. O prompt significa que oMATLAB est esperando um comando. Todo comando deve ser finalizado teclando-se Enter.

    Figura 1 Janela inicial do programa MATLAB (verso completa).

    Para encerrar uma sesso de trabalho do MATLAB digita-se o comando exit (ou quit) nopromptdo programa.

    Inicialmente, para que o usurio avalie as potencialidades dos recursos do MATLAB quepodem ser explorados em suas futuras implementaes, recomenda-se a execuo do programademonstrativo (Figura 2), acessado atravs do comando demo.

    Figura 2 Janela do demonstrativo do MATLAB.

  • 8/6/2019 Apostila Completa MATLAB

    3/12

    Introduo ao MATLAB pgina 3/12

    A princpio, interessante verificar na regio esquerda os vrios blocos de demonstrativosda verso bsica do MATLAB (Matrices, Numerics, Visualization, etc). Ao selecionar um destesblocos, na regio inferior direita so listados os vrios exemplos existentes para o bloco escolhido. Oexemplo executado quando aciona-se o boto inferior direito Run.

    O MATLAB possui trs ambientes de ajuda, a saber:

    ?? Comando help

    Ao digitar o comando help o MATLAB apresenta uma listagem de todos os pacotes disponveis(Tabela 1).

    Tabela 1 Resultado da execuo do comando help. help

    HELP topics:

    matlab\general - General purpose commands.matlab\ops - Operators and special characters....For more help on directory/topic, type "help topic".

    Para se ter ajuda sobre um pacote especfico ou sobre um comando ou funo especfica,deve-se combinar o comando helpe o nome do pacote, comando ou funo de interesse (Tabelas 2e 3).

    Tabela 2 Utilizao do helpcom o nome de um pacote especfico. help elfun

    Elementary math functions.

    Trigonometric.sin - Sine.sinh - Hyperbolic sine.asin - Inverse sine....

    Exponential.exp - Exponential.log - Natural logarithm....

    Complex.abs - Absolute value.angle - Phase angle....

    Rounding and remainder.fix - Round towards zero.floor - Round towards minus infinity....

    Tabela 3 Ajuda da funo det. help det

    DET Determinant.DET(X) is the determinant of the square matrix X.

    Use COND instead of DET to test for matrix singularity.

    See also COND.

    Overloaded methodshelp sym/det.m

  • 8/6/2019 Apostila Completa MATLAB

    4/12

    Introduo ao MATLAB pgina 4/12

    ?? Comando helpwin

    Ao se executar o comando helpwin, abre-se uma nova janela textual de ajuda (Figura 3).Combinando-se o double-clicksobre um dos itens e os botes Back, Forwarde Homeobtm-se osvrios nveis de ajuda de um pacote especfico e de um comando ou funo de interesse. O nome deuma funo pode ser introduzida no campo superior esquerdo para se ter diretamente uma ajudadeste comando. No pull-down menu direita deste campo encontram-se os tpicos relacionadoscom a funo que est sendo explicada no momento.

    Figura 3 Janela acionada pelo comando helpwin.

    ?? Comando helpdesk

    Ao se executar o comando helpdesk, dispara-se um programa de navegao instalado no seucomputador (Netscape, Internet Explorer, etc) com um ambiente de ajuda mais completo que utiliza alinguagem de hipertexto (Figura 4).

    Figura 4 Janela acionada pelo comando de ajuda helpdesk.

    Neste ambiente de ajuda possvel obter uma listagem das funes por bloco de especificidade(MATLAB/Functions/by Subject) ou a listagem de todas as funes por ordem alfabtica(MATLAB/Functions/by Index). A ajuda especfica de um determinado comando pode ser feitodiretamente no campo abaixo de Go to MATLAB function. Alm disto, esto disponveis vriosdocumentos explicativos (Online Manuals).

    Back Forward

  • 8/6/2019 Apostila Completa MATLAB

    5/12

    Introduo ao MATLAB pgina 5/12

    2. Clculos Cientficos

    Clculos Simples

    A primeira forma de se utilizar o MATLAB como uma calculadora cientfica atravs dadigitao de comandos diretamente no seu prompt, a exemplo de

    3*5+12/4

    ans =18

    De acordo com os conhecimentos de programao, observa-se que no MATLAB amultiplicao tem precedncia sobre a adio. Nota-se tambm que o resultado da operao foiatribudo varivel ans. Uma outra forma de se fazer estes clculos seria trabalhar com variveisauxiliares, como mostrado a seguir:

    v1=3, v2=5, v3=12, v4=4v1 =

    3

    v2 =5

    v3 =12

    v4 =4

    resultado=v1*v2+v3/v4

    resultado =18

    Primeiro, so criadas quatro variveis auxiliares (v1, v2, v3e v4) e atribudas a elas os seusvalores respectivos. No MATLAB o sinal de igual tem um sentido diferente daquele da Matemtica.Aqui, igual significa atribuio. O que estiver direita do sinal de igual colocado na varivel queestiver esquerda. Finalmente, criamos uma varivel chamada resultadoque recebeu o total daoperao.

    A vrgula utilizada para separar os comandos que so dados em uma mesma linha. Estaseparao poderia ser feita com ponto e vrgula. Neste caso, o MATLAB no mostra os resultadosdos comandos. No exemplo anterior teramos

    v1=3; v2=5; v3=12; v4=4; resultado=v1*v2+v3/v4;

    Em qualquer momento, seria possvel verificar o valor que est contido em uma varivel,simplesmente digitando no prompto seu nome.

    resultado

    resultado =18

    O MATLAB oferece as seguintes operaes aritmticas:

    >> a+b soma a e b. Por exemplo, 5+6.>> a-b subtrai a de b. Por exemplo, 15-12.>> a*b multiplica a por b. Por exemplo, 3.14*0.15.>> a^b calcula a elevado a b. Por exemplo, 5^(1/2).

    A ordem com que so avaliadas as expresses dada pela seguinte regra: expresses soavaliadas da esquerda para a direita, com a potncia tendo a mais alta precedncia, seguida pelamultiplicao e diviso que tm igual precedncia, seguidas pela adio e subtrao que tm igual

  • 8/6/2019 Apostila Completa MATLAB

    6/12

    Introduo ao MATLAB pgina 6/12

    precedncia. Parnteses podem ser usados para alterar esta ordem. Sendo que neste caso, osparnteses mais internos so avaliados antes dos mais externos.

    rea de Trabalho

    Durante uma sesso, o MATLAB disponibiliza um recurso de recuperao de comandos jintroduzidos, utilizando as teclas ? e ? . Por exemplo, pressionando a tecla ? uma vez voc obtm oltimo comando digitado no prompt. Pressionando repetidamente a tecla ? se obtm os comandosdigitados anteriormente, um de cada vez na direo para trs. Analogamente, pressionando-se atecla ? , mas na direo para frente. Mais ainda, digitando no promptos primeiros caracteres de umcomando dado anteriormente e ento pressionando-se a tecla ? , obtm-se o comando mais recentetendo aqueles caracteres iniciais. Em qualquer momento, as teclas ? e ? podem ser usadas parase mover o cursor dentro de um comando, no prompt. Desta forma um comando pode ser corrigido,alm das teclas Deletee Backspace.

    Variveis

    O MATLAB tem certas regras para nomear as variveis. Os nomes de variveis devem seriniciados por letras e no podem conter espaos nem caracteres de pontuao. O MATLAB fazdiferena entre letras maisculas e minsculas. Existem alguns nomes de variveis predefinidas, asaber:

    ans- varivel usada para os resultados de comandos que no foram atribudos a nenhuma varivel.pi- nmero ?.eps- menor nmero tal que, quando adicionado a 1, cria um nmero maior que 1 no computador.flops- armazena o nmero de operaes em ponto flutuante realizadas.inf- significa infinito.NaNou nan- significa no um nmero, por exemplo, 0/0.

    iej- unidade imaginria 1? .nargin- nmero de argumentos de entrada de uma funo.nargout- nmero de argumentos de sada de uma funo.

    realmin- menor nmero que o computador pode armazenar.realmax- maior nmero que o computador pode armazenar.

    Os contedos das variveis do tipo texto (string) so delimitados atravs do uso deapstrofos. No bloco seguinte so definidas duas variveis strings e utilizada uma funo deconcatenao de texto (verificar outras funes no pacote matlab\strfun).

    nome='Eduardo'

    nome =Eduardo

    sobrenome=' Lages'sobrenome =

    Lages

    nome_completo=strcat(nome,sobrenome)

    nome_completo =Eduardo Lages

    As variveis podem ser redefinidas a qualquer momento, bastando para isso atribu-las umnovo valor.

    Para se ter uma listagem das variveis definidas no espao de trabalho do MATLAB utilizam-se os comandos who(listagem simples) e whos(listagem mais detalhada).As variveis do espao de trabalho do MATLAB podem ser excludas incondicionalmente

    usando-se o comando clear. Por exemplo:

    >> clearnome_da_varivel - exclui somente a varivel especificada.>> clearnome_da_varivel_1 nome_da_varivel_2 - exclui as variveis especificadas.>> clear- exclui todas as variveis do espao de trabalho.

  • 8/6/2019 Apostila Completa MATLAB

    7/12

    Introduo ao MATLAB pgina 7/12

    possvel armazenar em arquivo as variveis criadas no decorrer de uma sesso doMATLAB para recuper-las em uma outra sesso. Para isto, recorra opo File/Save WorkspaceAs da barra de menu (Figura 5). Em seguida, na janela padro do ambiente Windows para definiode arquivo, selecione o diretrio e o nome do arquivo (extenso .mat) onde sero salvas asvariveis correntes. Para recuperar as variveis salvas em alguma outra sesso, utilize a opoFile/Load Workspace, que se encontra acima da opo File/Save Workspace As.

    Figura 5 Localizao da opo File/Save Workspace As.

    Funes Cientficas

    O MATLAB tem uma srie de funes cientficas predefinidas. A maioria pode ser usada damesma forma que seria escrita matematicamente. Por exemplo:

    co=3

    co =3

    ca=4ca =

    4

    h=sqrt(co^2+ca^2)

    h =5

    a_rad=acos(ca/h)

    a_rad =0.9273

    a_graus=a_rad*180/pi

    a_graus =53.1301

    Estes comandos calculam a hipotenusa de um tringulo retngulo e o ngulo entre ahipotenusa e o cateto adjacente, inicialmente em radianos, depois em graus.

  • 8/6/2019 Apostila Completa MATLAB

    8/12

    Introduo ao MATLAB pgina 8/12

    Abaixo segue uma lista de funes cientficas disponveis:

    abs(x) - valor absoluto de x.acos(x) - arco cujo cosseno x.asin(x) - arco cujo seno x.atan(x) - arco cuja tangente x.cos(x) - cosseno de x.

    exp(x) - exponencial ex

    .gcd(x,y) - mximo divisor comum de x e y.lcm(x,y) - mnimo mltiplo comum de x e y.log(x) - logaritmo de x na base e.log10(x) - logaritmo de x na base 10.rem(x,y) - resto da diviso de x por y.sin(x) - seno de x.sqrt(x) - raiz quadrada de x.tan(x) - tangente de x.

    Formatos Numricos

    Quando o MATLAB mostra um resultado numrico ele segue certas regras. No caso de

    nenhum formato estar definido, se um resultado um nmero inteiro, o MATLAB mostra como uminteiro. Quando um resultado um nmero real, o MATLAB mostra uma aproximao com at quatrocasas decimais. Este foi o caso no exemplo do arco cosseno. Se os dgitos significativos estiveremfora desta faixa, o MATLAB mostra o resultado em notao cientfica. Voc pode definir um formatodiferente. Abaixo seguem algumas possibilidades:

    format short - exibe 4 dgitos.format long - exibe 16 dgitos.format rat - exibe no formato racional.format + - exibe positivo, negativo ou zero.format hex - exibe em notao hexadecimal.format bank - exibe 2 dgitos.

    importante salientar que o MATLAB no muda a sua forma de representar os nmerosinternamente, quando formatos diferentes de exibio de nmeros so escolhidos.

    3. Matrizes

    Para criar uma varivel onde armazenada uma matriz, basta escrever os elementos damatriz entre colchetes [ ... ], sendo os elementos de uma mesma linha da matriz separados porvrgula (ou espao em branco) e as linhas separadas por ponto e vrgula. Por exemplo, paraarmazenar a matriz

    ??

    ?

    ??

    ?

    654

    321

    numa varivel de nome A usamos o comando

    A=[1,2,3;4,5,6]

    A =1 2 34 5 6

    A=[1 2 3;4 5 6]A =

    1 2 34 5 6

  • 8/6/2019 Apostila Completa MATLAB

    9/12

    Introduo ao MATLAB pgina 9/12

    possvel acessar os elementos de uma matriz usando os comandos

    A(2,3)

    ans =6

    A(2,:)

    ans =4 5 6

    A(:,1)

    ans =14

    A(:,1:2)

    ans =1 24 5

    O primeiro comando foi para mostrar o elemento (1,2) da matriz A. O segundo para exibir a 2a linhae o terceiro para exibir a 1a coluna. Finalmente, o quarto comando para exibir a submatrizformada pela 1a e 2a colunas da matriz A.

    As matrizes podem ser concatenadas

    B=[A,[7;8]]

    B =1 2 3 74 5 6 8

    [A;[7,8,9]]

    ans =1 2 34 5 67 8 9

    As operaes matriciais so executadas de forma semelhante a que so executadasoperaes escalares

    A=[1,2;3,4]; B=[-3;1]; C=[3,5;-5,2]; A+C

    ans =4 7-2 6

    3*A

    ans =3 69 12

    C*A

    ans =18 261 -2

  • 8/6/2019 Apostila Completa MATLAB

    10/12

    Introduo ao MATLAB pgina 10/12

    B*A??? Error using ==> *Inner matrix dimensions must agree.

    A 2

    ans =7 1015 22

    (A*C)^2

    ans =-50 144-176 430

    O MATLAB tem funes que geram matrizes especiais, a saber:

    eye(m,n) - gera matriz com m-linhas e n-colunas com valor unitrio nos elementos de

    ndices iguais e zero para os demais elementos.zeros(m,n) - gera matriz nula com m-linhas e n-colunas.rand(m,n) - gera matriz com m-linhas e n-colunas com elementos randmicos.hilb(n) - gera matriz de Hilbert de ordem nxn.magic(n) - gera uma matriz mgica de ordem nxn com soma igual dos elementos daslinhas e das colunas.

    Abaixo um resumo das operaes matriciais

    >> A=[a11,a12,...,a1n;a21,a22,...; ...,amn] cria uma matriz, m por n, usando os elementos a11,

    a12, ..., amn e a armazena numa varivel de nome A.

    >> A+B a soma de A e B,

    >> A*B o produto de A por B,>> A.' a transposta de A,

    >> A-B a diferena A menos B,

    >> num*A o produto do escalar num por A,

    >> A^ k a potncia A elevado a k.

    >> Aj=A(:,j) a colunaj da matriz A, >> Ai=A(i,:) a linha i da matriz A.

    4. Arquivos de Comandos

    Um outro modo de se trabalhar com o MATLAB construir um bloco de comandos para serexecutado em conjunto. Para tal, so construdas as functionse scriptsdo MATLAB. Os mesmos soarquivos texto com a extenso ".m". Para ger-los, o usurio pode utilizar qualquer editor de texto,tipo ASCII, podendo ser utilizado o editor embutido no prprio MATLAB (Figura 6). Este editor acionado atravs da opo File/New/M-File ou atravs do cone .

    Uma function um m-file contendo um conjunto de comandos que para ser executadonecessita de parmetros de entrada e/ou fornee parmetros de sada. Quando isto acontecer, aprimeira linha deste arquivo texto deve atender seguinte sintaxe:

    function [variveis_sada]= nome_da_funo(variveis_entrada)

    Quando s existe um parmetro de sada, permitido omitir os colchetes. Nos quadros abaixo,exemplificam-se os corpos dos arquivos de funes com um e dois parmetros de sada.

    function vmedia= minha_media(n1,n2)% Esta funo calcula a mdia aritmtica de dois nmeros.vmedia=(n1+n2)/2;

    function [vmedia,vdiferena]= minha_media_diferenca(n1,n2)% Esta funo calcula a mdia aritmtica de dois nmeros e a diferena entre eles.vmedia=(n1+n2)/2;vdiferenca=n1-n2;

  • 8/6/2019 Apostila Completa MATLAB

    11/12

    Introduo ao MATLAB pgina 11/12

    Conforme exemplificado nos blocos anteriores, o caracter % utilizado para introduzir comentriosno corpo das funes. Recomenda-se o uso de comentrios ao longo dos programas para facilitar oentendimento dos seus funcionamentos.

    Figura 6 Janela do editor de texto embutido no MATLAB.

    Os arquivos devem ser gravados com os mesmos nomes das funes e com a extenso .m,no caso minha_media.m e minha_media_diferenca.m, respectivamente. Para dispor desta novafuno a partir da linha de comandos do MATLAB, preciso disponibilizar para o MATLAB o diretrioonde este arquivo est gravado. Isto feito atravs da opo File/Set Path ou atravs do cone .Neste instante, abre-se uma janela de definio dos diretrios disponveis para o MATLAB (Figura 7).

    Figura 7 Janela de definio dos diretrios disponveis para o MATLAB.

    O usurio deve selecionar a opo Path/Add to Path que dispara uma nova janela comdefinio de um novo diretrio (Figura 8). No boto com ..., o usurio vai escolher na rvore dediretrios do disco rgido aquele que ser includo na lista de diretrios disponveis para o MATLAB.Aps confirmar a escolha no boto OK, ao fechar a janela Path Browser o usurio ser consultado

  • 8/6/2019 Apostila Completa MATLAB

    12/12

    Introduo ao MATLAB pgina 12/12

    para saber se a incluso feita deve ou no valer para futuras sesses do MATLAB (Figura 9). Caso ousurio queira disponibilizar o diretrio escolhido para futuras sesses, ele deve apertar o boto deSim (Yes).

    Figura 8 Janela de seleo de um novo diretrio.

    Figura 9 Janela de confirmao se o diretrio escolhido estardisponvel em futuras sesses.

    Um script um m-filesem a declarao da palavra reservada functionno topo do arquivo. Umscriptse comporta diferente. Imagine que voc j dispe de uma lista de variveis na sua sessoatual. Suponhamos que x uma dessas variveis. Quando voc escreve um programa com adeclarao function, e voc usa a varivel x dentro do programa, o programa no usar o valor destavarivel da sua sesso (a menos que x seja passada como parmetro de entrada), e sim o valorapropriado do programa. Alm disso, a menos que voc declare um valor novo para x na sua sesso,o programa no mudar o valor de x da sesso. Isto muito cmodo uma vez que voc no precisase preocupar com as variveis da sesso. Tudo isso acontece por causa da declarao function. Se

    voc no faz a declarao de function, ento podem ser alteradas as variveis em sua sesso.

    5. Referncias

    R. Smith (1988) MATLAB Tutorial. http://www.math.ufl.edu/help/matlab-tutorial/index.html#SEC5(November).

    D. Hanselman & B. Littlefield (1997) MATLAB Verso Estudante Guia do Usurio Verso 4.MAKRON Books do Brasil. So Paulo.

    R. J. Santos (1998) Introduo ao MATLAB. http://www.mat.ufmg.br/~regi/topicos/intmatl.html

    (Junho).