curso matlab basico

Upload: felipe-kenji-kanashiro

Post on 08-Jul-2015

270 views

Category:

Documents


1 download

TRANSCRIPT

Curso de MATLAB APRESENTAO

i

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

1

Carregando o MatLabNo 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 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

2

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 . O comando anterior retorna, e voc pode, ento, mover o cursor para trs usando a tecla 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

3

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. INTRODUOO 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 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

4

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

5

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

6

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

7

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

8

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

9

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 MATRIZESAs 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 CONJUNTOSO 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. POLINMIOSAchar 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

6

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 MATRIZESO 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 LINEAREssa 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 351Ax = 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. FUNESUma 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. GRFICOSA 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 plot. 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