Você está na página 1de 46

Curso de MATLAB APRESENTAO

Este curso faz parte da programao da XXIII Semana de Engenharia Mecnica (SENGMEC-2002) da Faculdade de Engenharia de Ilha Solteira, promovida pelo Grmio Estudantil do Curso de Engenharia Mecnica e pelo Departamento de Engenharia Mecnica, com o apoio do Programa de Ps-Graduao em Engenharia Mecnica, no perodo de 26 a 31 de agosto de 2002. O curso destinado a alunos de graduao, de ps-graduao, de escolas tcnicas, exalunos, tcnicos e professores. Todo o material aqui impresso estar tambm disponvel em um CD-ROM que conter ainda toda a programao do evento. Esperamos que este curso possa contribuir para a formao e/ou especializao de todos os participantes inscritos. Atenciosamente, COMISSO ORGANIZADORA DA SENGMEC-2002 Carlos Alexandre Z. Vilchez - Grmio Estudantil da Engenharia Mecnica (Presidente) Ricardo Carvalhal - Grmio Estudantil da Engenharia Mecnica (Vice-Presidente) Alexandre Camargos Koguchi - Grmio Estudantil da Engenharia Mecnica (1o Secretrio) Alessandro Tomio Takaki - Grmio Estudantil da Engenharia Mecnica (2o Secretrio) Geraldo Vidotto Junior - Grmio Estudantil da Engenharia Mecnica (1o Tesoureiro) Claudio A. V. Barbosa - Grmio Estudantil da Engenharia Mecnica (2o Tesoureiro) Rogrio Erbereli - Grmio Estudantil da Engenharia Mecnica (Suplente) Ricardo Alan Verd Ramos - Departamento de Engenharia Mecnica (Chefe) Vicente Afonso Ventrella - Departamento de Engenharia Mecnica (Vice-Chefe) Joo Antonio Pereira - Departamento de Engenharia Mecnica (Coord. PPGEM) Amarildo Tabone Paschoalini - Departamento de Engenharia Mecnica (Colaborador) Andr Luiz Seixlack - Departamento de Engenharia Mecnica (Colaborador) Aparecido Carlos Gonalves - Departamento de Engenharia Mecnica (Colaborador) Cssio Roberto Macedo Maia - Departamento de Engenharia Mecnica (Colaborador) Hidekasu Matsumoto - Departamento de Engenharia Mecnica (Colaborador) Rus Camargo Tokimatsu - Departamento de Engenharia Mecnica (Colaborador) Elias Amaral dos Santos - Departamento de Engenharia Mecnica (Webmaster) rika Renata B. Lomba - Departamento de Engenharia Mecnica (Desenhista) Sandra L. M. Pereira - Departamento de Engenharia Mecnica (Secretria) Alex Sander Borges - Departamento de Engenharia Mecnica (Aux. Administrativo) Gilmar Pereira da Silva - Escola Tcnica de Ilha Solteira (Estagirio)

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB NDICE Carregando o MatLab Modificando o ambiente do MatLab Linhas de Comando 1. INTRODUO 1.1. Entrando com Matrizes Simples 1.2. Elementos das Matrizes 1.3. Declaraes e Variveis 1.4. Obtendo Informaes da rea de Trabalho 1.5. Nmeros e Expresses Aritmticas 1.6. Nmeros e Matrizes Complexos 1.7. Formato de Sada 1.8. As Facilidades do HELP (Ajuda) 1.9. Funes 2. OPERAES COM MATRIZES 2.1. Transposio 2.2. Adio e Subtrao 2.3. Multiplicao 2.4. Diviso 2.5. Exponenciao 2.6. Outros Comandos 3. OPERAES COM CONJUNTOS 3.1. Adio e Subtrao 3.2. Multiplicao e Diviso 3.3. Exponenciao 3.4. Operaes Comparativas 3.5. Endereamento de Conjuntos 4. POLINMIOS 4.1. Razes 4.2. Multiplicao, Diviso, Adio 4.3. Clculo de Polinmios 5. MANIPULAO DE VETORES E MATRIZES 5.1. Gerando Vetores 5.2. Elementos de Matrizes 6. SISTEMA LINEAR 7. FUNES 7.1. Integrao Numrica XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

ii

1 1 2 3 3 4 5 6 6 7 7 8 10 10 10 11 12 13 13 13 14 14 14 15 15 16 18 18 18 19 20 20 21 23 24 25

Curso de MATLAB 7.2. Equaes No-Lineares e Otimizao 7.3. Equaes Diferenciais 8. GRFICOS 8.1. Grficos Bidimensionais 8.2. Estilos de Linha e Smbolo 8.3. Nmeros Complexos 8.4. Escala Logartmica, Coordenada Polar e Grfico de Barras 8.5. Plotando Grficos Tridimensionais e Contornos 8.6. Anotaes no Grfico 9. AJUSTE DE CURVA E INTERPOLAO 9.1. Ajuste de Curva 10. CONTROLE DE FLUXO 10.1. O Lao for 10.2. O Lao while 10.3. Declarao if e break 11. ARQUIVOS .M 12. OPERAES COM O DISCO 12.1. Manipulao do Disco 12.2. Executando Programas Externos 13. PROGRAMAO 13.1. Mtodo Numrico 13.2. Outros Comandos de Programao 14. BIBLIOGRAFIA BSICA

iii 25 27 28 28 31 32 32 32 34 35 35 37 37 37 38 38 39 39 39 40 40 41 42

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

iv

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

Carregando o MatLab
No ambiente Windows, selecione o Menu Iniciar, v at o item Programas e encontre o atalho para o MATLAB, o qual, quando selecionado, inicia o aplicativo. Quando o MATLAB carregado, exibida a Janela de Comando (Command Window), e o prompt padro () exibido na tela como mostra a figura abaixo. O MATLAB tambm possui uma Janela Grfica (Graphic Window), que exibida quando algum grfico plotado.

Modificando o ambiente do MatLab. Com a tecla Options e em seguida a tecla command window font pode-se obter a janela adequada para a realizao do seu trabalho como mostra a figura abaixo.

A partir deste ponto, o MATLAB espera as instrues do usurio. Para entrar com uma matriz pequena, usa-se: A = [ 1 2 3; 4 5 6; 7 8 9] colocando colchetes em volta dos dados e separando as linhas com ponto e vrgula. Quando se pressiona a tecla <enter> o MATLAB responde com:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB A= 123 456 789 Para inverter esta matriz usa-se: B = inv(A) e o MATLAB responde como resultado a matriz invertida. Linhas de Comando

Para buscar o arquivo .m desejado necessrio que verifique o diretrio em que ele se encontra, feito isso digite cd e o nome do arquivo. Exemplo: cd c: Aplica os dois pontos (:) somente para o diretrio principal depois no necessrio: cd matlab Para voltar a raiz: cd .. As teclas das setas podem ser usadas para encontrar comandos usados anteriormente, os quais podem ser executados com ou sem alteraes. Por exemplo, suponha que voc entre com: log (sqt(tan(pi/5))) Como para calcular a raiz quadrada o comando certo sqrt, o MATLAB responde com uma mensagem de erro: ??? Undefined function or variable sqt. Ao invs de reescrever a linha inteira, simplesmente pressione a tecla <seta para cima>. O comando anterior retorna, e voc pode, ento, mover o cursor para trs usando a tecla <seta para esquerda> ou com o mouse, colocar o cursor no lugar apropriado para inserir a letra r. Ento, o comando retorna a resposta apropriada: log (sqrt(tan(pi/5))) ans = -0.1597 Alm das teclas com setas, pode-se usar outras teclas para alterar a linha de comando. A seguir dada uma breve descrio dessas teclas:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

Existem alguns comandos bsicos no Matlab que so importantes para que possamos trabalhar de forma tima no seu ambiente de trabalho. Abaixo, listamos alguns comandos:

1. INTRODUO
O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz numrica retangular podendo conter elementos complexos (deve-se lembrar que um escalar uma matriz de dimenso 1x1 e que um vetor uma matriz que possui somente uma linha ou uma coluna). 1.1. Entrando com Matrizes Simples As matrizes podem ser introduzidas no MATLAB por diferentes caminhos: digitadas na Janela de Comando (lista explcita de elementos) geradas por comandos e funes criadas em arquivos com extenso .m carregadas a partir de um arquivo de dados externo O mtodo mais fcil de entrar com pequenas matrizes no MATLAB usando uma lista explcita. Os elementos de cada linha da matriz so separados por espaos em branco ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetes em volta do grupo de elementos que formam a matriz. Por exemplo, entre com a expresso: A=[1 2 3;4 5 6;7 8 9] Pressionando <enter> o MATLAB mostra o resultado: A= 123 456 789

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

A matriz A salva na memria RAM do computador, ficando armazenada para uso posterior. As matrizes podem, tambm, ser introduzidas linha a linha, que indicado para matrizes de grande dimenso. Por exemplo: A=[1 2 3 456 7 8 9] Exemplos de funes utilizadas para gerar matrizes: rand, magic, hilb. rand(n) gera matriz quadrtica de dimenses n x n, aleatria com distribuio uniforme, no intervalo [0,1]. Ex.: x=rand(3) rand(m,n) gera uma matriz de dimenses m x n. Ex: x=rand(3,4) magic(n) cria uma matriz integral de dimenses n x n que matriz quadrada (linhas e colunas tm a mesma soma). Ex: x=magic(4) Em todos os exemplos, m e n so inteiros positivos. Outra forma de gerar matrizes atravs de "loops" "for". Para especificar um nico elemento da matriz usa-se ndices entre parnteses. Ex: x(2,3). Esta notao denota um valor na segunda linha e terceira coluna. Tente: x(3,5). Indexadores de matrizes no MATLAB tm que ser inteiros positivos (no nulos). Saindo-se do Matlab perde-se todas as variveis. O comando save permite salvar as variveis em disco chamado matlab.mat. Ex.: a=rand(3); b=rand(5); c=rand(20); who save clear O comando load restaura o espao de trabalho ao seu estado anterior. Ex.: who load who 1.2. Elementos das Matrizes Os elementos das matrizes podem ser qualquer expresso do MATLAB, por exemplo: x=[-1.3 sqrt(2) ((1+2+3)*4/5)^2] resulta em: x= -1.3000 1.4142 23.0400 Um elemento individual da matriz pode ser referenciado com ndice entre parnteses. Continuando nosso exemplo: x(6)=abs(x(1)) XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB produz: x= -1.3000 1.4142 23.0400 0 0 1.3000

Note que a dimenso do vetor x aumentada automaticamente para acomodar o novo elemento e que os elementos do intervalo indefinido so estabelecidos como zero. Grandes matrizes podem ser construdas a partir de pequenas matrizes. Por exemplo, pode-se anexar outra linha na matriz A usando: r=[10 11 12]; A=[A;r] que resulta em: A= 1 4 7 10 2 3 5 6 8 9 11 12

Note que o vetor r no foi listado porque a ele foi acrescentado um sinal de ponto e vrgula ; . Pequenas matrizes podem ser extradas de grandes matrizes usando o sinal de dois pontos : . Por exemplo, o comando a seguir toma as trs primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua forma original. A=A(1:3,:); 1.3 . Declaraes e Variveis O MATLAB uma linguagem de expresses. As expresses usadas so interpretadas e avaliadas pelo sistema. As declaraes no MATLAB so freqentemente da forma: varivel=expresso ou simplesmente expresso As expresses so compostas de operadores e outros caracteres especiais, de funes, e dos nomes das variveis. A avaliao das expresses produzem matrizes, que ento mostrada na tela e atribuda varivel para uso futuro. Se o nome da varivel e o sinal de igualdade = so omitidos, a varivel com o nome ans, abreviatura de answer (resposta), automaticamente criada. Por exemplo, a expresso: 1900/81 produz: ans = 23.4568 Se o ltimo caractere da declarao um ponto e vrgula, a impresso na tela suprimida, mas a tarefa realizada. Esse procedimento usado em arquivos com extenso .m e em XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

situaes onde o resultado uma matriz de grandes dimenses e temos interesse em apenas alguns dos seus elementos. Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar a expresso na prxima linha usando um espao em branco e trs pontos ..., ao final das linhas quebradas. Por exemplo: s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 -1/10 + 1/11 - 1/12 + 1/13; calcula o resultado da srie, atribuindo a somatria varivel s, mas no imprime o resultado na tela. Note que os espaos em branco entre os sinais =, + e - so opcionais, mas o espao em branco entre 1/7 e ... obrigatrio. As variveis e funes podem ser formadas por um conjunto de letras, ou por um conjunto de letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so identificados. O MATLAB faz distino entre letras maisculas e minsculas, assim a e A no so as mesmas variveis. Todas as funes devem ser escritas em letras minsculas: inv(A) calcula a inversa de A, mas INV(A) uma funo indefinida. 1.4 . Obtendo Informaes da rea de Trabalho Os exemplos de declaraes mostrados nos itens acima criaram variveis que so armazenadas na rea de Trabalho do MATLAB. Ao executar-se o comando: who obtm-se uma lista das variveis armazenadas na rea de Trabalho: Your variables are: A ans r s x

que mostra as cinco variveis geradas em nossos exemplos, incluindo ans. Uma informao mais detalhada mostrando a dimenso de cada uma das variveis correntes obtido com o comando whos, que para nosso exemplo produz:

Grand total is 20 elements using 160 bytes.

Cada elemento de uma matriz real requer 8 bytes de memria, assim nossa matriz A de dimenso 3x3 usa 72 bytes e todas variveis utilizadas um total de 160 bytes. 1.5 . Nmeros e Expresses Aritmticas A notao decimal convencional, com ponto decimal opcional e o sinal de menos, usada para nmeros. A potncia de dez pode ser includa como um sufixo. A seguir so mostrados alguns exemplos de nmeros aceitos:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

As expresses podem ser construdas usando os operadores aritmticos us uais e as regras de precedncia:

Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem o mesmo valor numrico, isto 0.25. Parnteses so usados em sua forma padro para alterar a precedncia usual dos operadores aritmticos. 1.6. Nmeros e Matrizes Complexos Nmeros complexos so permitidos em todas operaes e funes no MATLAB. Os nmeros complexos so introduzidos usando-se as funes especiais i e j. Por exemplo: z = 3 + 4*i ou z = 3 + 4*j ou w = r * exp(i*theta) As seguintes declaraes mostram dois caminhos convenientes para se introduzir matrizes complexas no MATLAB, produzindo o mesmo resultado: A = [1 2; 3 4]+i*[5 6; 7 8] e A = [1+5*i 2+6*i; 3+7*i 4+8*i] Se i ou j forem usadas como variveis, de forma que tenham seus valores originais modificados, uma nova unidade complexa dever ser criada e utilizada da maneira usual: ii = sqrt (-1); z = 3 + 4*ii 1.7. Formato de Sada O formato numrico exibido na tela pode ser modificado utilizando-se o comando format, que afeta somente como as matrizes so mostradas, no como elas so computadas ou salvas (o MATLAB efetua todas operaes em dupla preciso). Se todos os elementos das matrizes so inteiros exatos, a matriz mostrada em um formato sem qua lquer ponto decimal. Por exemplo: x = [-1 0 1]

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB sempre resulta em: x= -1 0 1

Se pelo menos um dos elementos da matriz no um inteiro exato, existem vrias possibilidades de formatar a sada. O formato padro, chamado de formato short, mostra aproximadamente 5 dgitos significativos. Os outros formatos mostram mais dgitos significativos ou usam notao cientfica. Por exemplo a expresso abaixo resulta em: x = [4/3 1.2345e-6]

Com o formato short e long, se o maior elemento da matriz maior que 1000 ou menor que 0,001, um fator de escala comum aplicado para que a matriz completa seja mostrada. Por exemplo: x = 1.e20*x O resultado da multiplicao ser mostrado na tela: x= 1.0e+20 * 1.3333 0.0000 O formato + uma maneira compacta de mostrar matrizes de grandes dimenses. Os smbolos +, - e espao em branco so mostrados, respectivamente para elementos positivos, elementos negativos e zeros. 1.8. As Facilidades do HELP (Ajuda) O MATLAB possui um comando de ajuda (help ), que fornece informaes sobre a maior parte dos tpicos. Digitando: help obtem-se uma lista desses tpicos disponveis:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

Para obter informaes sobre um tpico especfico, digite help tpico . Por exemplo, help plotxy que fornece uma lista de todos os comandos relacionados com grficos bidimensionais:

Finalmente, para obter informaes sobre um comando especfico, por exemplo title , digite: help title e informaes mais detalhadas sobre este comando sero exibidas: XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB TITLE Titles for 2-D and 3-D plots. TITLE('text') adds text at the top of the current axis. See also XLABEL, YLABEL, ZLABEL, TEXT.

10

Note que o exemplo mostrado para adicionar o ttulo em um grfico, TITLE(text ), est escrito com letras maisculas somente para destacar. Deve-se lembrar que todos os comandos do MATLAB devem ser escritos com letras minsculas, portanto, para adicionar o texto Ttulo do Grfico em um grfico, digite: title (Ttulo do Grfico) 1.9. Funes A fora do MATLAB vem de um conjunto extenso de funes. O MATLAB possui um grande nmero de funes intrnsecas, que no podem ser alteradas pelo usurio. Outras funes esto disponveis em uma biblioteca externa, distribudas com o programa original (MATLAB TOOLBOX), que so na realidade arquivos com exte nso .m criados a partir das funes intrnsecas. A biblioteca externa (MATLAB TOOLBOX) pode ser constantemente atualizada medida que novas aplicaes so desenvolvidas. As funes do MATLAB, intrnsecas ou arquivos .m, podem ser utilizadas apenas no ambiente MATLAB. As categorias gerais de funes matemticas disponveis no MATLAB incluem: Matemtica elementar, Funes especiais, Matrizes elementares, Matrizes especiais, Decomposio e fatorizao de matrizes, Anlise de dados, Polinmios, Soluo de equaes diferenciais, Equaes no-lineares e otimizao, Integrao numrica, Processamento de sinais. As sees subseqentes mostram mais detalhes dessas diferentes categorias de funes.

2. OPERAES COM MATRIZES


As operaes com matrizes no MATLAB so as seguintes: Adio, Subtrao, Multiplicao, Diviso a direita, Diviso a esquerda, Exponenciao, Transposio. 2.1. Transposio O caracter apstrofo ( ` ) indica a transposta de uma matriz. A declarao: A = [1 2 3; 4 5 6; 7 8 0] B=A` XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB resulta em: A= 123 456 780 B= 147 258 360 enquanto que: x = [-1 0 2] produz x= -1 0 2

11

Se Z uma matriz complexa, Z ser o conjugado complexo transposto. Para obter simplesmente a transposta de Z deve-se usar Z., como mostra o exemplo: Z = [1 2; 3 4] + [5 6; 7 8]*i Z1 = Z Z2 = Z. que resulta em: Z= 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i Z1 = 1.0000 - 5.0000i 3.0000 - 7.0000i 2.0000 - 6.0000i 4.0000 - 8.0000i Z2 = 1.0000 + 5.0000i 3.0000 + 7.0000i 2.0000 + 6.0000i 4.0000 + 8.0000i 2.2. Adio e Subtrao A adio e subtrao de matrizes so indicadas, respectivamente, por + e - . As operaes so definidas somente se as matrizes tiverem as mesmas dimenses. Por exemplo, a soma com as matrizes mostradas acima, A + x, no correta porque A 3 x3 e x 3 x1. Porm, C=A+B aceitvel, e o resultado da soma :

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB C= 2 6 10 6 10 14 10 14 0

12

A adio e subtrao tambm so definidas se um dos operadores um escalar, que uma matriz 1x1. Nesse caso, o escalar adicionado ou subtrado de todos os elementos do outro operador. Por exemplo y = x 1 resulta em y= -2 -1 1 2.3. Multiplicao A multiplicao de matrizes indicada por *. A multiplicao x * y definida somente se a segunda dimenso de x igual a primeira dimenso de y. A multiplicao: x* y resulta em: ans = 4 evidente que o resultado da multiplicao y * x ser o mesmo. Existem dois outros produtos, que so transpostos um do outro: x*y' ans = 2 1 -1 0 0 0 -4 -2 2 y*x' ans = 2 0 -4 1 0 -2 -1 0 2 O produto de uma matriz por um vetor um caso especial do produto entre matrizes. Por exemplo A e x : b = A*x resulta em: b= 5 8 -7 XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB Naturalmente, um escalar pode multiplicar, ou ser multiplicado, por qualquer matriz. pi*x ans = -3.1416 0 6.2832 2.4. Diviso

13

Existem dois smbolos para diviso de matrizes no MATLAB: \ e /. Se A uma matriz quadrada no-singular, ento A\B e B/A correspondem, respectivamente, a multiplicao esquerda e direita da matriz B pela inversa da matriz A, ou inv(A)*B e B*inv(A), mas o resultado obtido diretamente. Em geral: X = A\B a soluo de A*X = B X = B/A a soluo de X*A = B Por exemplo, como o vetor b foi definido como A* x, a declarao: z = A\b resulta em: z= -1 0 2 2.5. Exponenciao A expresso A^p eleva A p-sima potncia e definida se A uma matriz quadrada e p um escalar. Se p um inteiro maior que um, a exponenciao computada como mltiplas multiplicaes de A por A. Por exemplo: A^3 ans = 279 360 306 684 873 684 738 900 441 2.6. Outros Comandos O MATLAB possui algumas funes estatsticas que so importantes e so listados logo a seguir:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

14

Observe que as funes esto sendo executadas para uma matriz x. Por exemplo, vamos supor que tenhamos a seguinte situao: B =[1 4 7; 2 5 8; 3 6 0] B= 147 Observe que as funes esto sendo executadas para uma matriz x. Por exemplo, vamos supor que tenhamos a seguinte situao: B =[1 4 7; 2 5 8; 3 6 0] B= 147 258 360 sum(B) ans = 6 15 15

3. OPERAES COM CONJUNTOS


O termo operaes com conjuntos usado quando as operaes aritmticas so realizadas entre os elementos que ocupam as mesmas posies em cada matriz (elemento por elemento). As operaes com conjuntos so feitas como as operaes usuais, utilizando-se dos mesmos caracteres ( */ \ ^ e ) precedidos por um ponto . (.* ./ .\ .^ e .). 3.1. Adio e Subtrao Para a adio e a subtrao, a operao com conjuntos e as operaes com matrizes so as mesmas. Deste modo os caracteres + e - podem ser utilizados tanto para operaes com matrizes como para operaes com conjuntos. 3.2. Multiplicao e Diviso A multiplicao de conjuntos indicada por .* . Se A e B so matrizes com as mesmas dimenses, ento A.*B indica um conjunto cujos elementos so simplesmente o produto dos elementos individuais de A e B. Por exemplo, se: x = [1 2 3]; y = [4 5 6]; ento: z = x.*y resulta em: z= 4 10 18 As expresses A./B e A.\B um conjunto cujos elementos so simplesmente os quocientes dos elementos individuais de A e B. Assim: XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB z = x.\y resulta em: z= 4.0000 2.5000 2.0000 3.3. Exponenciao

15

A exponenciao de conjuntos indicada por .^ . So mostrados, a seguir, alguns exemplos usando os vetores x e y. A expresso: z = x.^y resulta em: z= 1 32 729 A exponenciao pode usar um escalar: z = x.^2 z= 149 Ou, a base pode ser um escalar: z = 2.^[x y] z= 2 4 8 16 32 64 3.4. Operaes Comparativas Essas so os seis operadores usados para comparao de duas matrizes com as mesmas dimenses:

A comparao feita entre os pares de elementos correspondentes; o resultado uma matriz composta dos nmeros um e zero, com um representando VERDADEIRO e zero FALSO. Por exemplo: 2 + 2 ~= 4 ans = 0

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB Pode-se usar, tambm, os operadores lgicos & (e) e | (ou). Por exemplo, 1==1 & 4==3 ans = 0 1==1 | 4==3 ans = 1 3.5. Endereamento de Conjuntos

16

Vamos supor que o conjunto x possua 10 elementos. Caso voc queira saber o valor do stimo elemento, basta digitar: x(7) ans = 0.123 Se voc quiser saber o valor dos cinco primeiros elementos, ento e s digitar: a(1:5) ans = 12345 Voc pode alterar o incremento, indo por exemplo, de 2 em 2: a(1:2:5) ans = 135 Observe, que ele deu apenas os valores do primeiro, terceiro e do quinto, pois a ordem foi feita de dois em dois.

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB EXERCCIOS 1 Execute os seguintes comandos e interprete os resultados: a = 2500/20 a = 2500/20; b = [1 2 3 4 5 6 7 8 9] c = [1 2 3 ; 4 5 6 ; 7 8 9] c = [c ; [10 11 12] c(2,2) = 0 l = length(b) [m,n] = size(b) [m,n] = size(c) who whos clear who b = l + 2 + 3 + 4 + ... 5+6-7 x=1:2:9 x = (0.8 : 0.2 : 1.4); y = sin(x) help sin dir a = 2^3 a = 4/3 format long a = 4/3 format short clear a=[1 2 3 ; 4 5 6 ; 7 8 9]; b = a c=a+b c = a-b a(l,:) = [-1 -2 -3] c = a(:,2) c = a(2:3, 2:3) x = [- 1 0 2]; y = [-2 -1 1]; x*y c=x+2 a = [1 0 2; 0 3 4 ; 5 6 0]; size(a) b = inv(a); c = b*a c = b/a c = b\a clear a b x y whos

17

2 Crie duas matrizes A e B aleatoriamente 5X5. Obtenha a matriz C sendo ela a multiplicao de A e B, a soma dos elementos de cada coluna da matriz C, o valor mediano, valor mximo e o valor mnimo da matriz C.

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

18

4. POLINMIOS
Achar as razes de um polinmio, isto , os valores para os quais o polinmio igual a zero, um problema comum a muitas reas do conhecimento. O MATLAB resolve esse problema e tambm apresenta outras ferramentas para a manipulao polinomial. 4.1. Razes No MATLAB, um polinmio representado por um vetor de linha dos seus coeficientes em ordem decrescente. Por exemplo, o polinmio x 4 12x 3 + 0 x 2 + 25 x = 116 introduzido como: p=[1 -12 0 25 116] p= 1 -12 0 25 116 Observe que os termos com coeficientes zero tm de ser includos. O MATLAB no tem como saber quais termos esto com coeficiente zero, a menos que voc os indique especificamente. Dada essa forma, as razes do polinmio so encontradas usando-se a funo roots: r=roots(p) r= 11.7473 2.7028 -1.2251+1.4672i -1.2251-1.4672i 4.2. Multiplicao, diviso, adio A multiplicao polinomial efetuada por meio da funo conv (que faz a convoluo entre dois conjuntos). Consideremos o produto de dois polinmios a( x) = x 3 + 2 x 2 + 3x + 4 e b( x ) = x 3 + 4 x 2 + 9 x + 16 : a=[1 2 3 4]; b=[1 4 9 16]; c=conv(a,b) c= 1

20

50

75

84

64

Esse resultado c( x ) = x 6 + 6 x 5 + 20x 4 + 50x 3 + 75 x 2 + 84x + 64 . Para realizar a diviso, utiliza-se o mesmo princpio, mas com a funo deconv. No caso da adio e subtrao, deve-se tomar cuidado para preencher os coeficientes de forma adequada, para que os polinmios de menor ordem sejam preenchidos com os valores zero.

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB 4.3. Clculo de Polinmios

19

J que possvel somar, subtrair, multiplicar, dividir e derivar polinmios com base em vetores de linha e seus coeficientes, voc deve tambm ser capaz de calcul -los. No MATLAB, isto pode ser feito a partir da funo polyval. Clculo do valor numrico de um polinmio. Como exemplo vamos calcular o valor numrico do polinmio p(x) = 2x 2 + x + 10. E em seguida sua derivada. Calculemos seu valor numrico nos pontos x= (-1:0.01:3). Assim temos: x=(-1:0.01:3); p=[2 1 10]; v=polyval(p,x); plot(x,v)

Uma outra funo interessante a polyder(p ), que calcula a derivada do polinmio p. y = polyder(p) y= 4 v=polyval(y,x); plot(x,v,r-) 1

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

20

5. MANIPULAO DE VETORES E MATRIZES


O MATLAB permite a manipulao de linhas, colunas, elementos individuais e partes de matrizes. 5.1. Gerando Vetores Os caracter dois pontos (: ) um caracter importante no MATLAB. A declarao: x = 1:5 gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Produzindo: x= 12345 Outros incrementos, diferentes de um, podem ser usados: y = 0 : pi/4 : pi y= 0.0000 0.7854 1.5708 2.3562 3.1416 z = 6 : -1 : 1 z= 654321 Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo: k=linspace(0,1,6)

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB k= 0

21

0.2000

0.4000

0.6000

0.8000

1.0000

gera um vetor linearmente espaado de 0 a 1, contendo 6 elementos. 5.2. Elementos das Matrizes Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre parnteses. Por exemplo, dada a matriz A: A= 123 456 789 a declarao: A(3,3) = A(1,3) + A(3,1) resulta em: A= 123 456 7 8 10 Um subscrito pode ser um vetor. Se X e V so ve tores, ento X(V) [ X(V(1)), X(V(2)), ..., X(V(n)) ]. Para as matrizes, os subscritos vetores permitem o acesso sub-matrizes contnuas e descontnuas. Por exemplo, suponha que A uma matriz 10....10. A= 92 99 11 18 15 67 74 51 58 40 98 80 17 14 16 73 55 57 64 41 14 81 88 20 22 54 56 63 70 47 85 87 19 21 13 60 62 69 71 28 86 93 25 12 19 61 68 75 52 34 17 24 76 83 90 42 49 26 33 65 23 15 82 89 91 48 30 32 39 66 79 16 13 95 97 29 31 38 45 72 10 12 94 96 78 35 37 44 46 53 11 18 100 77 84 36 43 50 27 59 ento: A(1:5,3) resulta em: ans = 11 17 88 19 25 XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

22

e especifica uma sub-matriz 5....1, ou vetor coluna, que consiste dos cinco primeiros elementos da terceira coluna da matriz A. Analogamente: A(1:5,7:10) ans = 74 51 58 40 55 57 64 41 56 63 70 47 62 69 71 28 68 75 52 34 uma sub-matriz 5....4, que consiste das primeiras cinco linhas e as ltimas quatro colunas. Utilizando os dois pontos no lugar de um subscrito denota -se todos elementos da linha ou coluna. Por exemplo: A(1:2:5,:) ans = 92 99 11 18 15 67 74 51 58 40 14 81 88 20 22 54 56 63 70 47 86 93 25 12 19 61 68 75 52 34 uma sub-matriz 3....10, que consiste da primeira, terceira e quinta linhas e todas colunas da matriz A. Muitos efeitos sofisticados so obtidos usando sub-matrizes em ambos os lados das declaraes. Por exemplo, sendo B uma matriz 10....10 unitria: B=ones(10) B= 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 11111111 11 1111111111 1111111111 1111111111 a declarao: B(1:2:7,6:10)=A(5:-1:2,1:5) produz:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB B= 1 1 1 1 1 1 1 1 1 1

23

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

86 1 85 1 14 1 98 1 1 1

93 1 87 1 81 1 80 1 1 1

25 1 19 1 88 1 17 1 1 1

12 1 21 1 20 1 14 1 1 1

19 1 13 1 22 1 16 1 1 1

6. SISTEMA LINEAR
Essa parte tem como objetivo, fornecer subsdios para a resoluo de sistemas lineares, atravs do MATLAB. Vamos considerar o seguinte sistema linear: 1x 1 + 2x 2 + 3x 3 = 366 4 x 1 + 5 x 2 + 6x 3 = 804 7x 1 + 8x 2 + 0 x 3 = 351 Essas equaes podem ser organizadas em uma equao matricial da seguinte forma:

1 2 3 x1

366

4 5 6 x 2 = 804 7 8 0 x3 351
Ax = b onde a multiplicao agora definida na sua forma matricial, em vez de na forma de conjunto discutida anteriormente. Para resolver o problema, inicialmente devemos introduzir A e b: A=[1 2 3; 4 5 6; 7 8 0] A= 123 456 780 b=[366;804;351] b= 366 804 351 Sem entrar em maiores detalhes, sabemos que esse problema tem uma soluo nica sempre que o determinante da matriz A for diferente de zero: det(A)

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB ans = 27

24

Como a determinante diferente de zero, a soluo possvel. Ento igualar x ao produto da inversa de A por b: x=inv(A)*b x= 25.0000 22.0000 99.0000 Uma outra restrio de que a matriz A seja quadrada. Isso bsico, pois nada mais , do que o nmero de equaes ser igual ao nmero de incgnitas. EXERCCIOS 3 Calcule a raiz e a derivada da equao f(x)=x 3 -9x+3 utilizando o MATLAB. 4 Resolva o sistema linear abaixo usando MATLAB. 17x 1 + 24 x 2 + 1x 3 + 8 x 4 + 15x 5 = 175 33x 1 + 5x 2 + 7 x 3 + 14x 4 + 16x 5 = 190 4 x 1 + 6 x 2 + 13x 3 + 20x 4 + 22x 5 = 245 10x 1 + 12x 2 + 19x 3 + 21x 4 + 3x 5 = 190 11x 1 + 18 x 2 + 25 x 3 + 2x 4 + 9x 5 = 175 5 klsdf Em uma sala esto 8 pessoas, reunidas em uma mesa circular. Cada uma escolhe um nmero aleatoriamente e pega o seu nmero e soma com os nmeros das pessoas ao lado, a sua esquerda e direita. Passa-se as 8 somas para voc, que estava fora da reunio. Como voc descobre o nmero que cada pessoa escolheu ? Utilize o MATLAB.

7. FUNES
Uma classe de comandos do MATLAB no trabalha com matrizes numricas, mas com funes matemticas. Esses comandos incluem: Integrao numrica Equaes no-lineares e otimizao Soluo de equaes diferenciais As funes matemticas so representadas no MATLAB por arquivos .m . Por exemplo, a funo

est disponvel no MATLAB como um arquivo .m chamado humps.m:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB O grfico da funo : x = -1:0.01:2; plot(x,humps(x))

25

7.1. Integrao Numrica A rea abaixo da curva pode ser determinada atravs da integrao numrica da funo humps(x), usando o processo chamado quadratura. Integrando a funo humps(x) de -1 a 2: q=quad('humps',-1,2) q= 26.3450 Os dois comandos do MATLAB para integrao usando quadratura so:

7.2. Equaes No-Lineares e Otimizao Os comandos para equaes no-lineares e otimizao incluem:

Continuando o exemplo, a localizao do mnimo da funo humps(x) no intervalo de 0.5 a 1 obtido da seguinte maneira: XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB xm = fmin(humps,0.5,1) xm = 0.6370 ym = humps(xm) ym = 11.2528 O grfico deste intervalo com o ponto de mnimo pode ser construdo: x=0.5:0.01:1; plot(x,humps(x),xm,ym,'o')

26

Pode-se ver que a funo humps(x) apresenta dois zeros no intervalo de -1 a 2. A localizao do primeiro zero prxima do ponto x=0: xz1=fzero('humps',0) xz1 = -0.1316 e a localizao do segundo zero prxima do ponto x=1, xz2=fzero('humps',1) xz2 = 1.2995 O grfico da funo com os dois zeros obtido atravs da expresso: x = -1:0.01:2 plot(x,humps(x),xz1,humps(xz1),'*',xz2,humps(xz2),'+'),grid

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

27

7.3. Equaes Diferenciais Os comandos do MATLAB para resolver equaes diferenciais ordinrias so:

Considere a equao diferencial de segunda ordem chamada Equao de Van der Pol:

Pode-se reescrever esta equao como um sistema acoplado de equaes diferenciais de primeira ordem

O primeiro passo para simular esse sistema criar um arquivo .m contendo essas equaes diferenciais. Por exemplo o arquivo volpol.m :

Para simular a equao diferencial no intervalo 0 20 == t , usa-se o comando ode23:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB t0 = 0; tf = 20; x0 = [0 0.25]; [t,x] = ode23(volpol,t0,tf,x0); plot(t,x)

28

8. GRFICOS
A construo de grficos no MATLAB mais uma de suas facilidades. Atravs de comandos simples pode-se obter grficos bidimensionais ou tridimensionais com qualquer tipo de escala e coordenada. Existe no MATLAB uma vasta biblioteca de comandos grficos. 8.1 Grficos Bidimensionais Estes so os comandos para plotar grficos bidimensionais:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

29

Se Y um vetor, plot(Y) produz um grfico linear dos elementos de Y versos o ndice dos elementos de Y. Por exe mplo, para plotar os nmeros [ 0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14], entre com o vetor e execute o comando plot: Y = [ 0.0 0.48 0.84 1.0 0.91 0.6 0.14]; plot(Y) O resultado mostrado na Janela Grfica:

Se X e Y so vetores com dimenses iguais, o comando plot(X,Y) produz um grfico bidimensional dos elementos de X versos os elementos de Y. Por exemplo: t = 0:0.05:4*pi; y = sin(t); plot(t,y) resulta em: XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

30

O MATLAB pode tambm plotar mltiplas linhas e apenas um grfico. Existem duas maneiras, a primeira usando apenas dois argumentos, como em plot(X,Y), onde X e/ou Y so matrizes. Ento: Se Y uma matriz e X um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de Y versos o vetor X. Se X uma matriz e Y um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de X versos o vetor Y. Se X e Y so matrizes com mesma dimenso, plot(X,Y) plota sucessivamente as colunas de X versos as colunas de Y. Se Y uma matriz, plot(Y) plota sucessivamente as colunas de Y versos o ndice de cada elemento da linha de Y. A segunda, e mais fcil, maneira de plotar grficos com mltiplas linhas usando o comando plot com mltiplos argumentos. Por exemplo: plot(t,sin(t),t,cos(t),t,sin(t+pi),t,cos(t+pi))

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

31

8.2. Estilos de Linha e Smbolo Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser controlados se os padres no so satisfatrios. Por exemplo: X=0:0.05:1; subplot(121),plot(X,X.^2,'k*') subplot(122),plot(X,X.^2,'b--')

Outros tipos de linhas, pontos e cores tambm podem ser usados: XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

32

8.3. Nmeros Complexos Quando os argumentos para plotar so complexos, a parte imaginria ignorada, exceto quando dado simplesmente um argumento complexo. Para este caso especial plotada a parte real versos a parte imaginria. Ento, plot(Z), quando Z um vetor complexo, equivalente a plot(real(Z),imag(Z)). 8.4. Escala Logartmica, Coordenada Polar e Grfico de Barras O uso de loglog, semilogx, semilogy, e polar idntico ao uso de plo t. Estes comandos so usados para plotar grficos em diferentes coordenadas e escalas: polar(Theta,R) plota em coordenadas polares o ngulo Theta [rad] versos o raio R; loglog plota usando a escala log10....log10; semilogx plota usando a escala semi-logartmica. O eixo x log10 e o eixo y linear; semilogy plota usando a escala semi-logartmica. O eixo x linear e o eixo y log10; O comando bar(X) mostra um grfico de barras dos elementos do vetor X, e no aceita mltiplos argumentos. 8.5. Plotando Grficos Tridimensionais e Contornos Estes so alguns comandos para plotar grficos tridimensionais e contornos:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

33

O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da matriz Z em relao ao plano definido pelas matrizes X e Y. Por exemplo: [X,Y] = meshdom(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); mesh(X,Y,Z) surf(X,Y,Z)

e o comando contour(Z,10) mostra a projeo da superfcie acima no plano xy com 10 iso-linhas:

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

34

8.6. Anotaes no Grfico O MATLAB possui comandos de fcil utilizao para adicionar informaes em um grfico:

Por exemplo: fplot(sin,[-pi pi]) title(Grfico da funo f(x)=seno(x), -pi<x<pi) xlabel(x) ylabel(f(x)) grid

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

35

9. AJUSTE DE CURVA E INTERPOLAO


Em diversas reas do conhecimento, com freqncia necessrio descrever os dados obtidos experimentalmente por meio de uma funo analtica. Sero apresentados mtodos que o MATLAB utiliza para fazer esse tipo de aproximao, atravs dos ajustes de curva e interpolao. 9.1. Ajuste de Curva Matematicamente falando, esse mtodo denominado ajuste de curvas a um polinmio pelos mnimos quadrados. No MATLAB, a funo polyfit resolve o problema do ajuste de curva pelo mtodo dos mnimos quadrados. Para exemplificar o uso desta funo, iniciemos com os dados iniciais: x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.3 11.2]; plot(x,y,'*')

Ser efetuado agora, um ajuste de curva. Inicialmente, precisamos escolher uma ordem do polinmio. Vamos supor que o polinmio que desejamos seja de ordem 2. Assim, basta entrarmos com o comando: p=polyfit(x,y,2) p= -9.8108 20.1293 -0.0317 Logo, o polinmio encontrado y = 9,8108x 2 + 20,1293x 0,0317 . Para podermos comparar a soluo de ajuste de curva aos pontos de dados, plotemos ambos: xi=linspace(0,1); z=polyval(p,xi); plot(x,y,'*',x,y,xi,z,':')

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

36

Caso desejemos uma soluo melhor, podemos alterar a ordem do polinmio, embora isso nem sempre signifique melhora nos resultados. vlido lembrar que da mesma forma que um polinmio de primeira ordem uma reta, e uma reta necessita de dois pontos para form-lo, um polinmio de ordem n, precisa de n+1 reta para realizar a interpolao. EXERCCIOS 6 Escreva o programa abaixo e verifique o ajuste de curvas de dados experimentais. t = (-1:.1:1); x = t.^2; xr = x+0.2(rand(size(x))-.5); figure(1); plot(t, xr, g*) p = polyfit(t, xr, 2); xa = po1yval(p, t); figure(l); plot(t, xr, g*, t, xa) % Aps a prxima instruo, clique em dois pontos do grfico, e os valores % das coordenadas sero retornados em [x,y] [x, y] = ginput(2) 7 Faa um programa que desenhe uma pirmide 3D. Utilize o mesh(). 8 Faa um programa que resolva a equao da dinmica do pndulo simples linearizado (pequenos valores do ngulo).

Onde, y0=[1 0]; o vetor de condies iniciais t0=0, o tempo inicial tf=10; o tempo final Construa a funo para l=2 e g=9.8. XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

37

10. CONTROLE DE FLUXO


Os comandos que controlam o fluxo especificam a ordem em que a computao feita. No MATLAB estes comandos so semelhantes aos usados na Linguagem C, mas com uma estrutura diferente. 10.1. O Lao for O lao for o controlador de fluxo mais simples e mais usado na programao MATLAB. Analisando a expresso for i=1:5, X(i)=i^2; end pode-se notar que o lao for dividido em trs partes: A primeira parte (i=1) realizada uma vez, antes do lao ser iniciado. A segunda parte o teste ou condio que controla o lao, (i<=5). Esta condio avaliada; se verdadeira, o corpo do lao (X(i)=i^2) executado. A terceira parte acontece quando a condio se torna falsa e o lao termina.

O comando end usado como limite inferior do corpo do lao. comum construes onde conjuntos de laos for so usados, principalmente com matrizes: for i=1:8, for j=1:8, A(i,j)=i+j; B(i,j)=i-j; end end C=A+B; 10.2. Lao while No lao while apenas a condio testada. Por exemplo na expresso: a=1;b=15; while a<b, clc a=a+1 b=b-1 pause(1) end disp(fim do loop) a condio a<b testada. Se ela verdadeira, o corpo do lao executado. Ento a condio retestada, e se verdadeira, o corpo executado novamente. Quando o teste se tornar falso o lao terminar, e a execuo continuar no comando que segue o lao, aps o end.

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB 10.3. Declarao if e break A seguir apresentado um exemplo do uso da declarao if no MATLAB. for i=1:5, for j=1:5, if i == j A(i,j) = 2; elseif abs(i-j) == 1 A(i,j) = -1; else A(i,j) = 0; end end end A

38

Os valores de i e j variam de 1 a 5, varrendo toda a matriz A. Se (if) i igual a j, A(i,j)=2, ou se (elseif ) o valor absoluto de i-j igual a 1, A(i,j)=-1, ou (els e) A(i,j)=0, se nenhuma das condies anteriores forem satisfeitas. conveniente, s vezes, controlarmos a sada de um lao de outro modo alm do teste, no incio ou no fim do mesmo. O comando break permite uma sada antecipada de um for ou while. Um comando break faz com que o lao mais interno seja terminado imediatamente.

11. ARQUIVOS .M
Os comandos do MATLAB so normalmente digitados na Janela de Comando, onde uma nica linha de comando introduzida e processada imediatamente. O MATLAB tambm capaz de executar seqncias de comandos armazenadas em arquivos. Os arquivos que contm as declaraes do MATLAB so chamados arquivos .m e consistem de uma seqncia de comandos normais do MATLAB, possibilitando incluir outros arquivos . m, escritos no formato texto (ASCII). Para editar um arquivo texto na Janela de Comando do MATLAB selecione New M-File para criar um novo arquivo ou Open M-File para editar um arquivo j existente, a partir do menu File. Os arquivos podem, tambm, ser editados fora do MATLAB utizando qualquer editor de texto. Existem alguns comandos e declaraes especiais para se usar nos arquivos, por exemplo %Plota uma funo y=ax^2 + bx +c no intervalo -5<x<5 clear aux='s'; while aux=='s', clc a=input('a = '); b=input('b = '); c=input('c = '); x=-5:0.1:5; y=a*x.^2+b*x+c; plot(y) figure(1) pause clc aux=input('Plotar outro ? (s/n) ==> ','s'); end XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

39

O caracter % usado para inserir um comentrio no texto, o comando clear apaga todos os dados da memria (tente executar este mesmo programa sem este comando), o comando input usado quando se deseja entrar com um dado a partir da Janela da Comando, pause provoca uma pause na execuo do arquivo at que qualquer tecla seja digitada, clc limpa a Janela de Comando e figure(1) mostra a Janela Grfica nmero 1.

12. OPERAES COM O DISCO


Os comandos load e save so usados, respectivamente, para importar dados do disco (rgido ou flexvel) para a rea de trabalho do MATLAB e exportar dados da rea de trabalho para o disco. Outras operaes com o disco podem ser efetuadas, como executar programas externos, trocar o diretrio de trabalho, listagem do diretrio, e sero detalhadas a seguir. 12.1. Manipulao do Disco Os comandos cd, dir, delete, type e what do MATLAB so usados da mesma maneira que os comandos similares do sistema operacional.

Para maiores detalhes sobre estes comandos utilize o help. 12.2. Executando Programas Externos O caracter ponto de exclamao, !, um desvio e indica que o restante da linha ser um comando a ser executado pelo sistema operacional. Este procedimento vem sendo historicamente utilizado em todos as verses do MATLAB como prompt para indicar a execuo de um comando do DOS sendo muito til nas verses que usavam somente o DOS. No ambiente Windows, entretando, este comando desnecessrio, mas foi mantido nas verses do MATLAB para Windows. Para entrar com o caracter de desvio no prompt do MATLAB, deve-se coloca-lo no incio do comando do DOS ou Windows que se deseja executar. Por exemplo, para carregar um aplicativo como o programa Notepad do Windows (Bloco de Notas), sem sair do MATLAB, entre com ! Notepad Uma nova janela aberta, o Notepad carregado, podendo ser utilizado da maneira usual. Pode-se usar, tambm, qualquer comando implcito do DOS, por exemplo: copy, format, ren, mkdir, rmdir, ...

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB

40

13. PROGRAMAO
A parte de programao do MATLAB, trs consigo, algumas funes importantes e comandos essenciais. Para uma melhor explicao, iremos realizar a sua aplicao em dois exemplos. 13.1. Mtodo Numrico O primeiro exemplo consiste na resoluo de uma equao transcendental. A equao transcendental aquela onde a raiz s pode ser encontrada atravs de processos iterativos. E dentro desse tipo de processo, devemos adotar um mtodo numrico que melhor se aplica na resoluo do problema. Vamos supor a seguinte equao transcendental:

Esse tipo de equao s pode ser resolvido por meio de um processo iterativo. Para isso, vamos aplicar o mtodo de Newton, para encontrar as razes, com tolerncia de erro de 0,01. Sabemos, de clculo numrico, que:

O que ocorre, que temos a funo f(x) e f'(x ), bastando ento, realizarmos um estimativa de chute inicial para o valor de x1, assim teremos determinado o valor de x2. Se o valor da diferena entre x1 e x2 for menor que 0,001; ento foi encontrada a raiz da equao. Observe que deve ser feito um certo nmero de iteraes, at que ocorra a convergncia para a raiz. O programa deve ser feito em um arquivo m. Para isto, basta abrir um novo m file . Lembre-se que no mtodo de Newton, voc deve utilizar uma boa aproximao para que haja convergncia da raiz. O programa possui um looping, para realizar as iteraes necessrias para encontrarmos a raiz da equao. Abaixo, temos as linhas de programao: a=1; xx=1; while a==1; c=2*xx-cos(xx); d=2+sin(xx); xxx= xx-(c/d); erro=xxx-xx; if erro > 0.001; xx=xxx; else; a=2; end end s1=sprintf('%10.4f ',xxx); disp([s1]); pause; end Depois de digitado o programa, basta salvarmos no disco rgido, e na janela de comando do MATLAB, digitar o nome de programa. Aps realizar as iteraes, ele fornecer a raiz da equao. Outros mtodos podem ser utilizados.

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB 13.2. Outros Comandos de Programao

41

Iremos apresenta r agora, outros comandos de programao que podem ser executados pelo MATLAB. Vamos criar agora o seguinte programa: Temos uma lanchonete, e nela voc deseja fazer a conta de bebidas atravs de um programa.. Por simplificao, vamos apenas supor que a lanc honete venda apenas refrigerante, suco e gua. O programa ter a seguinte linha de comandos. clear aux=1; while aux==1; k=menu('Bebidas','Refrigerante', 'Suco','gua','Conta','Exit'); if k==1; clc; disp('Preo:R$0,80'); disp(''); b=input('Entre com o nmero de refrigerantes '); pr1=b*0.8; end; if k==2; clc disp('Preo:R$1,10'); disp(''); c=input('Entre com o nmero de sucos '); pr2=c*1.1; end; if k==3; clc; disp('Preo:R$0,60'); disp(''); d=input('Entre com o nmero de guas '); pr3=d*0.6; end; if k==4; clc; disp('O seu gasto foi de:'); prf=pr1+pr2+pr3; s1=sprintf('%10.2f ',prf); disp([s1]); disp(''); disp(' '); disp('Tecle qualquer tecla para continuar'); pause; end; if k==5; aux=2; end end

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Curso de MATLAB EXERCCIOS

42

9 - Escreva um programa (utilizando o comando while) que aceite entradas numricas pelo teclado. Os valores devem ser nmeros entre 0 e 5, e caso o usurio digite algum valor fora deste intervalo, o programa encerrado. 10 - Faa um programa semelhante ao exemplo do item 13.2 onde a lanchonete ser modificada por uma loja de computadores ou loja de autopeas.

14. BIBLIOGRAFIA BSICA


[1] Hanselman, D.; Littlefield, B. Matlab Verso do Estudante: Guia do Usurio. Makron Books, So Paulo, 1997. [2] Sampaio, R.; Cataldo, E.; Riquelme,R. Introduo ao MATLAB: Agncia Espacial Brasileira, Rio de Janeiro, 1997. [3] MATLAB for Windows Users Guide, The Math Works Inc., 1991. [4] Ruggiero, M.A.G., Lopes, V.L.R., Clculo Numricos - Aspectos Tericos e Computacionais, Ed. MacGraw-HiII, So Paulo, 1988. [5] Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP, Campus de Ilha Solteira.

XXIII SEMANA DE ENGENHARIA MECNICA unesp Ilha Solteira 26 a 31/08/2002

Você também pode gostar