II Jornada de Cursos do PET de Engenharia Mecânica da UFCG (PETMEC-CG) Introdução ao Prof.: ® MATLAB José Eustáquio Rangel de Queiroz I Considerações Iniciais I MATLAB® (Matrix Laboratory) I Origem Final da década de 70, na Stanford University (Cleve Moler). Foco Cursos de teoria matricial, álgebra linear e análise numérica. Algoritmos-bases Bibliotecas EISPAC e LINPACK em código FORTRAN. 2 Considerações Iniciais II MATLAB® II Propósito inicial Utilização de pacotes sem a necessidade de se escrever códigos em FORTRAN. Propósito atual Linguagem de programação iterativa para computação técnica e científica comercializada pela MathWorks (www.mathworks.com). 3 Considerações Iniciais III MATLAB® III Linguagem de alto desempenho para computação técnica Computação, visualização e programação em um ambiente de uso fácil 4 Considerações Iniciais IV MATLAB® IV Aplicações típicas Computação e análise numérica. Desenvolvimento de algoritmos. Modelagem, simulação e prototipagem. Processamento, análise e visualização de dados. Representação gráfica científica e de engenharia. Desenvolvimento de aplicações, incluindo Interfaces Gráficas com o Usuário (GUI ). 5 Considerações Iniciais V MATLAB® V Características I Processamento matricial. Visualização gráfica. Facilidade de uso. Linguagem matemática familiar. Pacotes e caixas de ferramentas para aplicações específicas. 6 Considerações Iniciais VI MATLAB® VI Características II Possibilidade de tratamento de variáveis numérica e simbolicamente. Uso difundido em cursos de graduação e pós-graduação de Engenharia, Matemática e Física. 7 Considerações Iniciais VII MATLAB® VII Janela multifacetada de abertura Comandos Espaço de Trabalho Pasta Atual Histórico de Comandos Detalhes 8 Considerações Iniciais VIII MATLAB® VIII Inicialização I Seleção da opção “MATLAB”, na árvore de inicialização ou do ícone do MATLAB, no desktop do Windows. Janela principal Janela de Comandos Centro da janela multifacetada. Digitação de comandos após o prompt de comandos (»). 9 Considerações Iniciais IX MATLAB® IX Inicialização II Janela do Diretório Atual Localização Parte superior à esquerda da janela de Comandos. Propósito Exibição dos arquivos existentes na pasta atual, na qual o MATLAB® busca inicialmente arquivos e funções. 10 Considerações Iniciais X MATLAB® X Inicialização III Janela do Espaço de Trabalho Localização Parte superior Comandos. à direita da janela de Propósito Exibição de todas as variáveis declaradas. 11 Considerações Iniciais XI MATLAB® XI Inicialização IV Janela do Histórico de Comandos Localização Parte inferior Comandos. à direita da janela de Propósito Exibição de todos os recentemente digitados. comandos mais Reuso do comando pelo MATLAB® Seleção com duplo clique no comando desejado. 12 Considerações Iniciais XII MATLAB® XII Inicialização V Janela de Detalhes Localização Parte inferior à esquerda da janela de Comandos. Propósito Exibição de detalhes de um arquivo selecionado na janela da Pasta Atual. 13 Considerações Iniciais XIII MATLAB® XIII Encerramento Digitação do comando: » quit Seleção da opção File Exit MATLAB Fechamento da janela multifacetada (clique no botão , situado no canto superior direito da janela). 14 Considerações Iniciais XIV MATLAB® XIV Tipos de Dados Array Caractere (e.g.,‘a’) Numérico Uint8 (inteiro sem sinal, 8 bits) Estrutura Célula (e.g., imagem.largura = 120 imagem.nome = ‘face1’ Double (8 bytes) 15 Considerações Iniciais XV Formatos de exibição de números I 16 Considerações Iniciais XVI Formatos de exibição de números II 17 Considerações Iniciais XVII Formatos de exibição de números III Estilo Resultado Exemplo short (default) 4 dígitos após o ponto decimal [Para matrizes com faixa extensa de valores, empregar shortG] 3.1416 long Formato decimal fixo longo, com 15 dígitos após o ponto decimal para valores double e 7 dígitos após o ponto decimal para valores single 3.141592653589793 shortE Notação científica curta, com 4 dígitos após o ponto decimal 3.1416e+00 longE Notação científica longa, com 15 dígitos após o ponto decimal para valores double e 7 dígitos após o ponto decimal para valores single 3.141592653589793e+00 shortG Notação decimal fixa curta ou notação científica mais compacta, com 5 dígitos 3.1416 longG Notação decimal fixa longa ou notação científica mais compacta, com 15 dígitos para valores double e 7 dígitos para valores single 3.14159265358979 shortEng Notação curta para engenharia, com 4 dígitos após o ponto decimal e um expoente múltiplo de 3 3.1416e+000 longEng Notação curta para engenharia, com 15 dígitos significativos e um expoente múltiplo de 3 3.14159265358979e+000 18 Considerações Iniciais XVIII Formatos de exibição de números IV 19 Considerações Iniciais XIX Formatos de exibição de números V Estilo Resultado Exemplo + Formato Positivo/Negativo, com +, - e espaço em branco exibidos para elementos positivos, negativos e nulos + bank Formato monetário, com 2 dígitos após o ponto decimal 3.14 hex Representação hexadecimal de um número binário representado com precisão dupla 400921fb54442d18 rat Razão de inteiros pequenos 355/113 Digitação do comando format no prompt Retorno ao formato default, i.e., short 20 Considerações Iniciais XX Formatos de exibição de números VI (Ajuda de comando sobre formatos) >> help format linha de >> format short (5 algarismos) >> format shortE (5 expoente) algarismos + 21 Considerações Iniciais XXI Formatos de exibição de números VI >> format long (16 algarismos) >> format longE (16 expoente) algarismos negativo + >> format + nulo) (Positivo, ou >> format rat (Aproximação racional) 22 Considerações Iniciais XXII Configurações de separadores Ponto Casas decimais Vírgula Algarismos inteiros Todos os comandos devem ser digitados em letras minúsculas M-file Editor Editor de arquivos do MATLAB, para a digitação de programas Seleção de File New M-File 23 Considerações Iniciais XXIII Ajuda Janela de Comandos (Tópicos de ajuda) >> help >>helpdesk (doc) (Documentação) Na versão 2014a, recebe-se a advertência Warning: HELPDESK will be removed in a future release. Use DOC instead. > In helpdesk at 10 >>helpwin (Ajuda online) >>lookfor termo (Busca contextual) 24 Escalares I Tratamento de (quase) TUDO (default) como arrays de vírgula flutuante de precisão dupla Suporte a variáveis tipadas (integer, float, char, …) Usualmente empregado somente para aplicações específicas. 25 Escalares II Variáveis I » a = 1+2+3 »a= 6 » b = 4+5+6 »a= 15 » c = a+b »c= 21 26 Escalares III Variáveis II » x = 1.5+2.03+3.456 »x= 6.9860 » y = 4.391+5.9+6.34 »a= 16.6310 » w = x+y »w= No 23.6170 são MATLAB®, variáveis introduzidas pela atribuição de um valor. 27 Escalares IV Variáveis III » 3*c+c/5 Um comando não necessita ser iniciado pela atribuição <variável> =. » ans = 67.2000 » exp(w)-17.8*c » ans = 1.8061e+010 » sqrt(ans*ans + c^w) » ans = 4.1061e+015 pode ser empregado como uma variável. ans 28 Escalares V Variáveis IV » a = 1+2+3 »a= 6 » a = 1+2+3; »a a= 6 29 Escalares VI Variáveis V Comando who Listagem de variáveis espaço de trabalho. Exemplo » who Your variables are: a ans b c d w x presentes no y 30 Escalares VII Variáveis VI Comando whos Listagem de variáveis presentes no espaço de trabalho e algumas de suas propriedades. Exemplo » whos Name Size a ans b c 1x1 1x1 1x1 1x1 Bytes Class 8 8 8 8 Attributes double double double double 31 Escalares VIII Variáveis VII Comandos com mais de uma uma linha Terminação da linha com ... e Enter e continuação na linha seguinte Exemplo 01 » z = 1.458 + 2 + ... 1.009 + 3.98 + 4.768 z= 13.2150 32 Escalares IX Variáveis VIII Expressões matemáticas NÃO se podem digitar matemáticas literalmente. expressões Exemplo 02 »j=k+l ??? Undefined function or variable 'k'. 33 Escalares X Variáveis IX Operações padrão Padrão MATLAB® a+b a+b a-b a-b ab a*b a b a/b ab a^b As variáveis desta tabela devem ser interpretadas como números. 34 Escalares XI Variáveis X Ordem das operações Padrão Potenciação, multiplicação e divisão e, por fim, adição e subtração Uso de parênteses (( )) para definir a ordem dos cálculos Exemplo: Cálculo de >> 1/(exp(3)+1) ans = 0.0474 1 exp( 3 ) 1 35 Escalares XII Variáveis XI Interrupção de cálculos longos Uso de Ctrl+c , após o que um novo prompt aparecerá para a entrada de novos comandos 36 Escalares XIII Variáveis XII Incompletude de comandos Finalização de comandos incompletos ou inválidos Aparecimento de uma mensagem de erro, seguida de um novo prompt. Aparecimento de um cursor piscante, à esquerda da linha, abaixo do comando 37 Escalares XIV Variáveis XIII Aparecimento de um cursor piscante à esquerda da linha, abaixo do comando Possibilidade de finalização do comando, seguida de sua avaliação pelo MATLAB® Possibilidade de interrupção do comando, utilizando Ctrl+c , seguida do surgimento de um novo prompt 38 Escalares XV Variáveis XIV Nomes Inicialização com uma letra, seguida de um número arbitrário de letras, números ou símbolos, e.g., _ e - Sensibilidade do MATLAB® a maiúsculas e minúsculas (case sensitive) 39 Escalares XVI Variáveis XV Variáveis especiais II Variável Descrição ans Contém o resultado do último cálculo não atribuído a outra variável. eps Variável utilizada internamente para o arredondamento de todos os números, antes do armazenamento na memória do computador, cujo valor é ≈2,2204.10-16 e representa a acurácia computacional do MATLAB®. i ou j Número complexo i, com a propriedade i2=-1. pi Igual a 3,1415... Inf Corresponde ao resultado da divisão de 1 por 0, i.e., 1/0 = Inf. NaN Representação de Not a Number, entendido como um não número pelo sistema e produzido por cálculos tais como 0/0 ou por valores que o sistema não entende como números. 40 Escalares XVII Variáveis XVI Variáveis especiais II Possibilidade de atribuição de valores às variáveis internas do MATLAB® Impacto nos cálculos que envolvam tais variáveis. Remoção de valores atribuídos a variáveis internas, por acidente, a partir do comando clear ou do navegador do espaço de trabalho. EVITAR atribuir valores às variáveis internas do MATLAB®. 41 Escalares XVIII Exercícios I Solucionar os exercícios 1.1 a 1.7 da URL http://www.imc.tue.nl/IMC-main/IMCmain-node78.html 42 Vetores e Matrizes I Geração de vetores no Caractere dois pontos (:). MATLAB® >> x = 1:5 (Geração de um vetor linha contendo os números de 1 a 5, com incremento unitário) x= 1 2 3 4 5 43 Vetores e Matrizes II Matriz diagonal ou diagonal da matriz I diag(x) Geração de uma matriz com os elementos de um vetor x em sua diagonal principal. >> diag(x) ans = 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5 44 Vetores e Matrizes III Matriz diagonal ou diagonal da matriz II diag(X) Geração de um vetor coluna com os elementos da diagonal principal de uma matrix X. >> X=[3 11 5; 4 1 -3; 6 2 1]; >> diag(X) ans = 3 1 1 45 Vetores e Matrizes IV Uso de índices Comando Resultado A(i,j) Apresenta o elemento da i-ésima linha e jésima coluna do array A. A(i,:) Apresenta a j-ésima linha do array A. A(:,j) Apresenta a j-ésima coluna do array A. A(i,:)=[a;b;c] Altera os valores da i-ésima linha do array A para a, b e c, se e somente se o array for i x n e n ? 2. A(:,j)=[d;e;f] Altera os valores da j-ésima coluna do array A para d, e e f, se e somente se o array for n x j e n ? 2. A(i,[k,l]) Apresenta um array constituído do k-ésimo e lésimo elementos da i-ésima linha do array A. [ A, B ] Concatena os arrays A e B, se e somente se tiverem o mesmo número de linhas ou de colunas. 46 Vetores e Matrizes V Operações em arrays I Operações (tais como adição ou subtração) aplicadas aos elementos correspondentes de arrays com a mesma forma. >> A = [1,2,3]; B = [6,5,4]; >> A+B ans = 7 7 7 47 Vetores e Matrizes VI Operações em arrays II >> A = [1,2,3]; B = [6,5,4]; >> A-B ans = -5 -3 -1 >> A*B ??? Error using ==> mtimes Inner matrix dimensions must agree. 48 Vetores e Matrizes VII Operações em arrays III >> A = [1,2,3]; B = [6,5,4]; >> A.*B ans = 6 10 12 No MATLAB®, a multiplicação (*), a divisão (/) e a potenciação (^) DEVEM ser indicadas por um ponto (.) antes do sinal da operação, a fim de que a operação seja executada elemento a elemento. 49 Vetores e Matrizes VIII Operações em arrays IV >> A = [1,2,3]; B = [6,5,4]; >> A./B ans = 0.1667 0.4000 0.7500 50 Vetores e Matrizes IX Operações em arrays V >> A = [1,2,3]; B = [6,5,4]; >> A.^B ans = 1 32 81 51 Vetores e Matrizes X Operações em arrays VI >> A = [1,2,3]; >> B = [6, 5, 4]; >> A*B ans = 28 52 Vetores e Matrizes XI Operações com arrays – Lembretes I Aplicação a elementos correspondentes de 2 arrays de mesma forma Computação elemento a elemento Adição e subtração de arrays são automaticamente interpretadas Necessidade da utilização do ponto decimal (.) como parte da notação nas demais operações 53 Vetores e Matrizes XII Operações com arrays – Lembretes II Exemplos I >> a = [1.2,2.7,3.5]; b = [6.09,5.48,4.18]; >> a+b ans = 7.2900 8.1800 7.6800 >> a-b ans = -4.8900 -2.7800 -0.6800 54 Vetores e Matrizes XIII Operações com arrays – Lembretes III Exemplos II >> a.*b ans = 7.3080 14.7960 14.6300 >> a./b ans = 0.1970 0.4927 0.8373 >> a.\b ans = 5.0750 2.0296 1.1943 55 Vetores e Matrizes XIV Operações com arrays – Lembretes IV Exemplos III >> 2.718.^a ans = 3.3197 14.8756 33.1034 >> [2 2 2].^b ans = 68.1197 44.6318 18.1261 >> a.^b ans = 3.0354 231.1391 188.0202 56 Vetores e Matrizes XV Geração de um array contendo valores de uma função I Seja a função f ( x ) sin( 5 x )e x/5 e que se deseja atribuir o vetor linha f (0) f ( 0,05 ) f ( 0,1 ) f ( 2,95 ) f ( 3 ) à variavel y 57 Vetores e Matrizes XVI Geração de um array contendo valores de uma função II Geração do gráfico no MATLAB® >> ezplot (‘sin(5*x)*exp(x/5)’) >> hold on >> grid 58 Vetores e Matrizes XVII Geração de um array contendo valores de uma função III Gráfico traçado a partir da função ezplot() (sem a grade) 59 Vetores e Matrizes XVIII Geração de um array contendo valores de uma função IV Gráfico traçado a partir da função ezplot() (com a grade) 60 Vetores e Matrizes XIX Geração de um array contendo valores de uma função V >> x=0:0.05:3 .. . 61 Vetores e Matrizes XX Geração de um array contendo valores de uma função VI >> y=sin(5*x)*exp(x/5) Error using * Inner matrix dimensions must agree. CUIDADO com o emprego da função sin(), assim como com o emprego do . !!! 62 Vetores e Matrizes XXI Geração de um array contendo valores de uma função VII >> y=sin(5*x).*exp(x./5.) .. . 63 Vetores e Matrizes XXII Construção de tabelas I Seja o vetor coluna >> v = (0:9)'; >> pows = [v 2.^v v.^(1/2)] 64 Vetores e Matrizes XXII Construção de tabelas II Seja a sequência de comandos a seguir >> format long g >> x = (1:0.05:1.3)'; lognat = [x log(x)] 65 Vetores e Matrizes XXIII Construção de tabelas II Seja a sequência de comandos a seguir >> format long g >> x = (1:0.05:1.3)'; lognat = [x log(x)] 66