IFSP – Instituto Federal de São Paulo LABORATÓRIO 1 Introdução ao MATLAB Prof. Dr. Cesar da Costa São Paulo Maio/2016 1 Capítulo 4 – Software MATLAB 4.1 Introdução O MATLAB (MATrix LABoratory) é um software interativo de alto desempenho voltado para o cálculo científico. O MATLAB integra funções de alto nível, análise de dados, gráficos, análise numérica, cálculos matemáticos, processamento de sinais, modelagem e simulação. No MATLAB o elemento básico da informação é uma matrix, que não requer dimensionamento, permitindo a resolução de muitos problemas numéricos em apenas uma fração de tempo, que se gastaria para escrever um programa semelhante em linguagens de programação como Fortran, Basic ou C. O objetivo principal do MATLAB é fornecer ao usuário, técnicas de resolução de problemas, sem necessidade de desenvolver rotinas em linguagens de programação convencionais. O MATLAB possui um conjunto de bibliotecas que permitem resolver classes particulares de problemas. Associado ao MATLAB encontra-se a ferramenta de simulação denominada SIMULINK, que tem como principal função a simulação de sistemas dinâmicos. Os modelos são criados recorrendo-se a uma interface gráfica, que contém blocos que representam e modelam operações específicas. Ao contrário de linguagens de programação clássicas no ambiente MATLAB o usuário não se preocupa com: Declaração de variáveis; Alocação de memória; Utilização de ponteiros; Outras tarefas de rotinas. 4.2 Ambiente MATLAB Para iniciar uma sessão MATLAB em MS Windows, basta dar um duplo clique no ícone do MATLAB, abrindo-se uma janela designada por MATLAB Desktop. Quando o MATLAB é carregado surge uma janela principal dividida em quatro sub-janelas, com diferentes informações, conforme mostradas na Figura 4.1. As sub-janelas podem ser ativadas/desativadas, através da opção Desktop. a) Command Windows (Janela de Comandos): permite executar os comandos e funções no MATLAB; b) Current Folder (Navegador de Diretórios): permite visualizar ou alterar o diretório de trabalho; c) Workspace (Espaço de Dados): permite visualizar e manipular as variáveis existentes em memória, na sessão do MATLAB; d) Command History (Histórico de Comandos): apresenta os últimos comandos executados. 2 Figura 4.1 – Janelas de trabalho do MATLAB. 4.2.1 Janela de Comandos Nesta janela podem-se introduzir variáveis, comandos, funções e executar arquivos M. Quando a janela está pronta para receber comandos, surge o símbolo >>, designado prompt. A janela de comando pode ser limpa por meio do comando clc, ou através do comando Clear Command Window no menu Edit. Para facilitar a digitação de comandos previamente utilizados, o MATLAB permite ao usuário por meio das teclas de direção do teclado, facilidade de navegação pelo histórico dos comandos executados, conforme a Tabela 4.1. Tabela 4.1- Teclas de navegação Acessa o último, penúltimo e assim sucessivamente, os comandos utilizados. Tecla Tecla Tecla Tecla Acessa os comandos utilizados na ordem inversa a tecla Move o cursor para a direita Move o cursor para a esquerda 4.2.2 Linhas de Comando e Variáveis do MATLAB As linhas de comando do MATLAB frequentemente são da forma nome da variável = valor numérico. Podem ser compostas expressões com operadores e outros caracteres especiais, com funções, e com nomes de variáveis. A execução da expressão produz uma matriz. A matriz é mostrada na tela e assume o nome da variável definida na linha de comando, para que possa ser utilizada em outra situação. Se for omitido o nome da variável e o sinal de igual, 3 o MATLAB cria automaticamente no Workspace uma variável com o nome ans . A Figura 4.2 apresenta um exemplo de linha de comando que cria duas variáveis a e b; e outro exemplo, que omite o nome da variável e o sinal de igual. As variáveis criadas são apresentadas na janela Workspace. Figura 4.2 – Definição de variáveis. Uma linha de comando normalmente termina com a tecla Enter. Entretanto, se o último caractere for um ponto-e-vírgula (;), a variável que é produzida não é mostrada na tela. O MATLAB é uma linguagem case-sensitive, interpreta de forma diferente letras maiúsculas e minúsculas. A letra “A” (maiúscula) e a letra “a” (minúscula), não são a mesma variável. Os nomes das funções devem ser digitados em letras minúsculas. O sinal de igual (=), utilizado para definir variáveis é designado por operador ou sinal de atribuição. A Figura 4.3 apresenta a forma correta de atribuir uma variável e dois erros normalmente cometidos na atribuição de variáveis. No primeiro caso, só uma variável pode estar do lado esquerdo da expressão e no segundo caso, uma variável só pode ter atribuído uma valor, se o lado direito da expressão apresentar um valor computável. No caso do último exemplo, a variável b deveria ter sido definida anteriormente, caso contrário ocorrerá um erro. Figura 4.3 – Erros na atribuição de variáveis. 4 No MATLAB pode-se atribuir diversas variáveis numa única linha e separá-las por ponto e vírgula ou por vírgula. No caso de usar vírgula, o resultado de cada uma das atribuições é apresentado na janela de comandos, ao contrário do ponto e vírgula. A Figura 4.4 apresenta a atribuição de diferentes variáveis numa única linha e ilustra-se a possibilidade de escrever um comando em linhas sucessivas, utilizando o símbolo (...) três pontos, para separação das diferentes linhas em que o comando é escrito. Figura 4.4 – Diversas atribuições na mesma linha. Como apresentado nas Figuras anteriores os comentários são iniciados com o símbolo (%) percentual. Quando o MATLAB executa o programa e encontra este símbolo, não executa o que se encontra à sua direita, até o final da linha. Os comentários devem ser utilizados para descrever a funcionalidade das linhas de comando. Caso deseje saber quais as variáveis que estão atribuídas no Workspace, utiliza-se o comando who. Na Figura 4.5 é apresentado um exemplo de aplicação do comando who. Para um melhor detalhamento da variável como, tipo e tamanho ocupado em bytes na memória, utiliza-se o comando whos. Figura 4.5 – Informações sobre variáveis. A Tabela 4.2 lista as teclas que podem ser usadas para edição na linha de comandos do 5 MATLAB e alguns comandos importantes para gerenciamento de variáveis e do Workspace. Tabela 4.2- Lista de teclas e comandos importantes na edição Ctrl-P Chama uma linha de comando anterior. Ctrl-N Chama uma linha de comando posterior. Ctrl-F Move o cursor um caractere à direita. Ctrl-B Move o cursor um caractere à esquerda. Delete Move o cursor à esquerda, apagando um caractere. Ctrl-L Move o cursor uma palavra à esquerda. Ctrl-A Move o cursor para o começo da linha. Ctrl-R Move o cursor uma palavra à direita. Ctrl-E Move o cursor para o final da linha. Ctrl-D Apaga o caractere que está sobre o cursor. Ctrl-U Cancela a linha. Ctrl-K clc Apaga até o final da linha. Limpa a janela Command Window. Lista de variáveis correntes. who Detalha as variáveis. whos Limpa as variáveis correntes na memória. clear Lista diretório de arquivos no diretório corrente. what Lista a versão do software, número da licença e todas as Toolbox instaladas com as respectivas versões. ver Carrega arquivo do disco no Workspace. load Salva arquivo do Workspace no disco. save 4.2.3 Funções Matemáticas no MATLAB O MATLAB é uma ferramenta completa para funções matemáticas básicas e elementares. A utilização das funções matemáticas no MATLAB é de uso intuitivo, porém para um melhor entendimento recomenda-se a consulta à documentação do MATLAB, comando help < nome da função>, e também no Apêndice 1 deste livro está disponível um resumo das principais funções do MATLAB. A seguir serão apresentados alguns exercícios resolvidos, para analisar algumas funções matemáticas elementares do MATLAB. Podem ser construídas expressões com os operadores de aritmética usuais e as regras de precedência. A Tabela 4.3 apresenta as funções matemáticas básicas. Tabela 4.3- Funções matemáticas básicas + adição - subtração 6 * multiplicação \ divisão por número à esquerda / ^ divisão por número à direita Potência Exercício 4.1: Dada a igualdade trigonométrica na Equação 4.1, prove que ela é verdadeira para um ângulo de 20 radianos. sec2 1 tg 2 1 Solução: sin 2 cos 2 (4.1) A Figura 4.6 apresenta a solução do problema apresentado em MATLAB. Figura 4.6 – Igualdade trigonométrica. Exercício 4.2: Dada a igualdade trigonométrica hiperbólica na Equação 4.2, prove que ela é verdadeira para um ângulo de 30 radianos. 1 cosh cot gh tgh senh (4.2) Solução: 7 A Figura 4.7 apresenta a solução da igualdade trigonométrica hiperbólica em MATLAB. Figura 4.7 – Igualdade trigonométrica hiperbólica. Exercício 4.3: O cálculo logarítmico é muito utilizado em cálculos matemáticos. No MATLAB o logaritmo na base natural é representado por log, na base 10 é representado por log10 e na base 2 é representado por log2. A Equação 4.3 representa uma propriedade dos logaritmos. Prove que a propriedade é verdadeira. log(a * b) log(a) log(b) (4.3) Solução: A Figura 4.8 apresenta a prova da propriedade dos logaritmos em MATLAB. 8 Figura 4.8 – Propriedade logarítmica. Exercício 4.4: A representação de um número complexo em MATLAB é realizada por meio dos símbolos j ou i. No exercício a seguir apresente a representação de um número complexo recorrendo ao símbolo j, i e a raiz quadrada. Solução: A Figura 4.9 ilustra as representações de um número complexo através dos símbolos j, i e raiz quadrada. Figura 4.9 – Representação de um número complexo. 9 . Exercício 4.5: A representação de um número complexo em MATLAB, também pode ser realizada pela função complex. Represente o número complexo z=2+j pela função dada. Solução: A Figura 4.10 apresenta a representação do número complexo dado pela função complex. Figura 4.10 – Representação de um número complexo pela função complex. 4.2.4 Matrizes Qualquer variável MATLAB é uma matriz. Este aspecto permite efetuar de forma fácil e intuitiva operações matemáticas, que em outras linguagens exigiriam o recurso de técnicas de programação avançadas. As operações estudadas até o presente momento envolveram a utilização de variáveis denominadas escalares. Na verdade, as variáveis escalares são tratadas no MATLAB como um caso particular de matrizes, ou seja, um escalar é uma matriz de dimensão 1 x 1, uma matriz de uma linha por uma coluna. Matriz é uma tabela de números dispostos em m linhas e n colunas. Assim, um simples número pode ser considerado uma matriz com uma linha e uma coluna, uma coordenada x y pode ser considerada uma matriz com uma linha e duas colunas, e um grupo de quatro coordenadas x y z pode ser considerada uma matriz com quatro linhas e três colunas. Se uma matriz contiver m linhas e n colunas, então conterá um total de m.n elementos. Cada elemento da matriz é indicado por índices, aij . O primeiro i , indica a linha, o segundo j , indica a coluna onde o elemento se encontra. Se o número de linhas e colunas for igual, então dizemos que a matriz é uma matriz quadrada. Se a matriz tiver apenas uma linha e uma coluna, podemos dizer que o valor é um escalar, se a matriz contiver apenas uma linha ( m 1 ) ou uma coluna ( n 1 ), a matriz é chamada vetor-linha ou vetorcoluna, respectivamente. 10 Exercício 4.6: Dada a matriz a , 2 linhas x 2 colunas. Mostre no MATLAB as duas formas possíveis de defini-la. 1 3 a 5 2 Solução: Na Figura 4.11, na primeira instrução as linhas são definidas com espaçamento entre os elementos e na segunda instrução as linhas são definidas com os elementos separados por vírgulas. Figura 4.11 – Formas de definir uma matriz. Exercício 4.7: Dado um vetor linha a [1, 3] e um vetor linha b [5, 2] . Defina uma matriz constituída dos vetores linhas dados. Solução: Na Figura 4.12, a partir da definição dos vetores linhas a e b é definida a matriz c . 11 c [a , b] , Figura 4.12 – Matriz definida a partir de vetores linhas. Exercício 4.8: Sabendo-se que a função zeros ( m , n ) gera uma matriz mxn preenchida com zeros e a função ones ( m , n ) gera uma matriz mxn preenchida com uns. Gere uma matriz zeros ( 3, 4 ) e uma matriz ones ( 4, 2 ). Solução: A Figura 4.13, apresenta as matrizes geradas com as funções zeros e ones. Figura 4.13 – Matriz gerada com as funções zeros e ones. Exercício 4.9: Deseja-se gerar uma matriz com elementos aleatórios 2 x 2, com distribuição uniforme. Gerar também, uma matriz com elementos aleatórios 3 x 2, com distribuição normal. 12 Solução: Na Figura 4.14, a função randn(n) cria uma matriz quadrada de dimensão nxn com distribuição uniforme e a função randn (m,n) gera uma matriz com dimensão mxn com distribuição normal. Figura 4.14 – Matrizes com elementos aleatórios. Exercício 4.10: As matrizes identidades são muito utilizadas nos cálculos matriciais. Criar uma matriz a identidade quadrada 3 x 3 e uma matriz b identidade 2 x 3. Solução: O MATLAB tem duas funções específicas para criação de matrizes identidades. Na Figura 4.15, a função eye (n) cria uma matriz a identidade de dimensão nxn e a função eye (m,n) cria uma matriz b identidade de dimensão mxn. 13 Exercício 4.11: Figura 4.15 – Matrizes identidades. Dada uma matriz a de valores aleatórios, determine as suas dimensões, número de linhas e o número de colunas. Solução: O MATLAB tem duas funções para determinação das dimensões de uma matriz. Na Figura 4.16 é apresentada a função d = size(a), que retorna um vetor linha cujo primeiro elemento é o número de linhas e o segundo elemento o número de colunas da matriz a. A segunda função [m,n] = size(a), retorna na variável m o número de linhas e na variável n o número de colunas da matriz a. 14 Figura 4.16 – Dimensões, número de linhas e colunas de uma matriz. 4.2.4.1 Operador Dois Pontos ( : ) A técnica de acesso a determinados elementos ou conjunto de elementos de um vetor ou matriz designa-se por indexação matricial. O operador dois pontos (:) é útil no acesso a um conjunto de elementos de uma matriz ou vetor. Dado um vetor pode-se ter acesso aos seus elementos usando índices numéricos, que identificam o elemento que se pretende acessar. Para o caso genérico de uma matriz A, pode-se acessar o elemento localizado na linha i, coluna j, por meio do comando A(i, j). Por exemplo, para acessar o primeiro elemento de um vetor x, utiliza-se o comando x(1), o segundo elemento x(2), e assim sucessivamente. Dependendo do argumento, pode significar todas as linhas ou todas as colunas da matriz. Se o operador dois pontos for usado na notação A = 1 : 8; a matriz A conterá os valores 1, 2, 3, 4, 5, 6, 7 e 8. O operador dois pontos “ : ” entre dois números inteiros gera todos os inteiros entre os dois números especificados. Se for usado, para separar três números, os dois pontos gerarão valores entre o primeiro e terceiro número, usando o segundo número como incremento. Por exemplo, a notação t=0.0:0.5:5.0 gera um vetor linha denominado tempo que contém os números de 0.0 a 5.0 com incrementos de 0.5. O incremento também pode ser um valor negativo como, por exemplo, a notação v = 10: -1: 0 gera os elementos 10, 9, 8, 7, 6, … 0. A função linspace (x1, x2, n) gera um vetor com n pontos igualmente espaçados entre x1 e x2. No caso de n não ser especificado, a função assume um valor n=100. Por exemplo, a linspace(1,10,10) , define um vetor linha com 10 elementos, em que o primeiro elemento é 15 igual a 1 e o último elemento é igual a 10, ou seja, a [1, 2,3, 4,5,6,7,8,9,10] . Exercício 4.12: Dada a matriz A, extraia um vetor x correspondente a primeira coluna da matriz e um vetor z correspondente a sua primeira linha. A [0.0, 0.0;0.1,0.2;0.3,0,6] Solução: Na Figura 4. 17, os elementos do vetor x correspondem à primeira coluna da matriz A. O segundo comando cria um vetor z cujos elementos correspondem aos elementos da primeira linha da matriz A. Figura 4.17 – Vetor coluna x e vetor linha z extraídos da matriz A. Exercício 4.13: Dado o vetor a 1: 2 :10 extraia o elemento a(2), o segundo, o terceiro e o quarto elemento do vetor. Também altere o primeiro elemento do vetor atribuindo-lhe o valor 7. Solução: Na Figura 4. 18 são apresentados os elementos a(2), o segundo até o quarto elemento e a alteração do primeiro elemento para o valor 10 do vetor a. 16 Figura 4.18 – Extração e substituição dos elementos de um vetor. Exercício 4.14: Dado a matriz A acesse o elemento composto da segunda linha e segunda coluna e acesse uma sub matriz constituída pelas duas primeiras linhas e duas primeiras colunas. 3 1 5 A 4 9 0 2 6 6 Solução: Na Figura 4. 19 são apresentados o elemento A(2,2) e a sub matriz A(1:2,1:2). 17 Figura 4.19 – Extração do elemento e a sub matriz. Exercício 4.15: Na matriz A do exercício anterior, extrair a terceira linha, a primeira coluna e a sub matriz formada pela primeira e terceira linha e as três colunas. Solução: Na Figura 4. 20 são apresentadas a terceira linha A(3, :), a primeira coluna A(:, 1) e a sub matriz A([1 3], :). 18 Figura 4.20 – Extração da linha, coluna e sub matriz. Exercício 4.16: Na matriz A do exercício anterior, apagar a primeira linha e alterar o elemento A11 para zero. Solução: Na Figura 4. 21 o comando A (1, :) = [] apaga a primeira linha da matriz A, e o comando A(1,1) = 0 altera o elemento A11 (primeira linha, primeira coluna) para 0. 19 Figura 4.21 – Eliminação de uma linha e substituição de um elemento da matriz A. Exercício 4.17: Na matriz A do exercício anterior, introduza duas linhas à matriz original, sendo que a quarta linha com os elementos 1, 2 e 3 e a quinta linha com os elementos 4, 5 e 6. Solução: Na Figura 4. 22 o comando A ([4 5], :) = [1 2 3; 4 5 6] concatena duas linhas a matriz A, com os elementos 1, 2 e 3 na quarta linha e os elementos 4, 5 e 6 na quinta linha. 20 Figura 4.22 – Concatenação de duas linhas a matriz A. 4.2.4.2 Operações com Matrizes e Vetores Para ilustrar as operações matemáticas com matrizes e vetores consideraremos duas matrizes genéricas a e b de ordem mxn e dois vetores genéricos a e b de n elementos, conforme representados a seguir. a11 a12 a a22 a 21 ... ... am1 am 2 ... a14 ... a24 ... ... ... amn b11 b12 b b22 b 21 ... ... bm1 bm 2 a [a1 , a2 ,..., an ] ... b14 ... b24 ... ... ... bmn b [b1 , b2 ,..., bn ] 4.2.4.3 Adição e Subtração de Arranjos As operações de adição e subtração são efetuadas apenas com matrizes de mesmo tamanho ou mesma dimensão. A operação é obtida adicionando-se ou somando-se elementos em posições correspondentes nas matrizes. Em geral, se a e b são duas matrizes, por exemplo, matrizes 2 x 3, a matriz resultante da adição a + b será dada pelo arranjo da Equação 4.4. Os exercícios resolvidos a seguir ilustram as operações de adição e subtração com matrizes e vetores. a a 11 a21 a12 a22 a13 a23 b b b 11 12 b21 b22 b13 b23 21 a12 b12 a b a b 11 11 a21 b21 a22 b22 a13 b13 a23 b23 (4.4) Exercício 4.18: Dado o vetor a= -2:3 e o vetor b= [1 2 3 4 5 6]. Calcule a soma e a subtração dos vetores a e b. Solução: Na Figura 4. 23 observe que os vetores a e b tem a mesma dimensão. A adição ou subtração é realizada entre cada elemento dos vetores. Figura 4.23 – Soma e subtração dos vetores. Exercício 4.19: Considerando os vetores a e b do exercício anterior. Some o escalar 4 ao vetor a e subtraia do vetor b o escalar 5. Solução: 22 Na Figura 4. 24 a operação é realizada somando ou subtraindo o escalar a cada elemento do vetor. Figura 4.24 – Soma e subtração entre escalar e vetor. Exercício 4.20: Dada as matrizes a e b. Efetue a soma entre as matrizes. a [2,3,1;3, 4,5;1, 2, 2] b [3, 7,9; 2,1,0;0, 4,1] Solução: Na Figura 4. 25 como as matrizes são quadradas de dimensões 3 x 3, a operação é realizada somando-se cada elemento das matrizes. 23 Figura 4.25 – Soma entre matrizes. Exercício 4.21: Dada as matrizes a e b do exercício anterior. Efetue a subtração entre as matrizes. Solução: Na Figura 4. 26 como as matrizes são quadradas de dimensões 3 x 3, a operação é realizada subtraindo-se cada elemento das matrizes. 24 Figura 4.26 – Subtração entre matrizes. Exercício 4.22: Considerando as matrizes a e b do exercício anterior. Some o escalar 4 a matriz a. Na Figura 4. 27 a soma entre um escalar e uma matriz realiza a operação individualmente sobre cada elemento da matriz. 25 Figura 4.27 – Soma entre um escalar e uma matriz. 4.2.4.4 Multiplicação de Arranjos A operação de multiplicação (*) é executada conforme as regras da álgebra linear. Ou seja, se a e b são duas matrizes, a operação (a b) só é possível se, e somente se, o número de colunas da matriz a for igual ao número de linhas da matriz b. O resultado da operação será uma matriz, que possui o mesmo número de linhas da matriz a e o mesmo número de colunas da matriz b. Por exemplo, se a matriz a for uma matriz 4x3 e a matriz b for uma matriz 3x2, a multiplicação de (a b) será dada pela Equação 4.5. a11 a a 21 a31 a41 a12 a22 a32 a42 a13 a23 a33 a43 b11 b12 b b21 b22 b31 b32 (a11b11 a12b21 a13b31 ) (a11b12 a12b22 a13b32 ) (a b a b a b ) (a b a b a b ) 21 12 22 22 23 32 a b 21 11 22 21 23 31 (a31b11 a32b21 a33b31 ) (a31b12 a32b22 a33b32 ) (a41b11 a42b21 a43b31 ) (a41b12 a42b22 a43b42 ) 26 (4.5) Exercício 4.23: Dado os vetores a e b. Efetue a multiplicação entre os dois vetores e a multiplicação entre o vetor a e o escalar 3. a [2,3,1] b [1;1;1] Solução: Na Figura 4. 28, a multiplicação dos vetores obriga que o número de colunas do vetor à esquerda do operador de multiplicação, seja igual ao número de linhas do vetor a direita do operador de multiplicação. A operação de multiplicação do vetor a pelo escalar 3, resulta num vetor constituído pelos elementos do vetor a multiplicados pelo escalar 3. Figura 4.28 – Multiplicação entre vetores e vetor e escalar. Exercício 4.24: Dada as matrizes a, b e c. Calcule a matriz d a * b ; a matriz e c * a e a matriz f a * c . a [1,1;3, 2] 27 b [0,1;0, 2] c [0,1] Solução: Na Figura 4. 29, a multiplicação das matrizes resulta na matriz d de ordem 2 x 2 e na matriz e de ordem 1 x 2. A operação de multiplicação de matrizes só pode ser efetuada quando o número de colunas da matriz à esquerda do operador de multiplicação é igual ao número de linhas da matriz à direita do operador de multiplicação. A matriz f resulta em um erro, pois a condição não é satisfeita. Figura 4.29 – Multiplicação entre matrizes. 4.2.4.5 Divisão de Arranjos A operação de divisão de matrizes também está condicionada às regras da álgebra linear. O MATLAB possui dois tipos de operadores de divisão. O operador de divisão à direita ( / ) e o operador de divisão à esquerda ( \ ). Os exercícios a seguir ilustram o modo de utilização dos operadores de divisão, além de mostrar a função inv (inversa de uma matriz). Exercício 4.25: Dada as matrizes a e b. Calcule a matriz X 1 a \ b e a matriz X 2 inv(a) * b . a [2,1,1;1, 6, 2;3, 4, 4] b [1; 2;1] Solução: Na Figura 4. 30, a matriz X 1 é igual a matriz X 2 . A relação aX b pode ser transformada em 28 X a 1b . Assim, a divisão entre as matrizes a e b pode ser realizada pela multiplicação da inversa de a pela matriz b, ou com base no operador à esquerda a \ b . Figura 4.30 – Divisão entre matrizes. Exercício 4.26: Dado o sistema de equações lineares, utilizando as regras de divisão de matrizes apresentadas no exercício anterior, resolva o sistema. 4x 2 y 6z 8 2x 3 y 4z 6 5 x 10 y 3 z 0 Solução: Na Figura 4. 31, aplicando-se as regras da álgebra linear, o sistema de equações pode ser rescrito na forma matricial aX b . 4 2 6 x 8 2 3 4 y 6 5 10 3 z 0 29 Figura 4.31 – Solução de sistema de equações lineares. 4.2.4.6 Operações Escalares Envolvendo Elementos de Vetores e Matrizes Existem situações que requerem operações escalares envolvendo elementos correspondentes em dois ou mais arranjos (vetores ou matrizes). As operações escalares de multiplicação, divisão e exponenciação de vetores ou matrizes, envolvendo elemento por elemento dos arranjos são sinalizadas digitando-se um ponto antes do operador aritmético, conforme apresentado na Tabela 4.4. Tabela 4.4 - Operações escalares de matrizes Símbolo Descrição . Multiplicação escalar ./ Divisão escalar à direita .\ Divisão escalar à esquerda .^ Exponenciação escalar As Equações 4.6, 4.7 e 4.8 apresentam a multiplicação, divisão e exponenciação escalar envolvendo elementos correspondentes de dois vetores a e b. a.* b a1b1 , a2b2 , a3b3 , a4b4 (4.6) a. / b a1 / b1 , a2 / b2 , a3 / b3 , a4 / b4 (4.7) a. ^ b ( a1 )b11 , ( a2 )b2 , ( a3 )b3 , (a4 )b4 (4.8) As Equações 4.9, 4.10 e 4.11 apresentam a multiplicação, divisão e exponenciação escalar envolvendo elementos correspondentes de duas matrizes a e b. 30 a11b11 a.* b a21b21 a31b31 a11 / b11 a. / b a21 / b21 a31 / b31 (a11 ) n a.^ n (a21 ) n (a31 ) n a12b12 a22b22 a32b32 a13b13 a23b23 a33b33 a12 / b12 a22 / b22 a32 / b32 (a12 )n (a22 )n (a32 )n (4.9) a13 / b13 a23 / b23 a33 / b33 (4.10) (a13 ) n (a23 ) n (a33 )n (4.11) Os exercícios a seguir demonstram a aplicação das operações escalares envolvendo elementos correspondentes de matrizes e vetores. Exercício 4.27: Dada a função y x 2 4 x . Crie um vetor x de oito elementos, tal que x 1;8 e calcule os valores da função para os elementos do vetor criado. Solução: Na Figura 4. 32 cria-se o vetor x, a seguir o vetor x é utilizado em operações escalares para gerar os elementos do vetor y. Figura 4.32 – Valores da função y para o vetor x criado. 31 Exercício 4.28: z3 5z . Crie um vetor z de oito elementos, tal que z 1; 2;5 e calcule 4 z 2 10 os valores da função para os elementos do vetor criado. Dada a função y Solução: Na Figura 4. 33, as operações escalares, elemento por elemento, são usadas para gerar z 3 e z 2 e dividir o numerador pelo denominador. Figura 4.33 – Valores da função . y para o vetor z criado. 4.2.4.7 Funções Nativas do MATLAB O MATLAB contém diversas funções nativas para cálculos com arranjos, que são muito úteis para o programador. A seguir serão apresentados alguns exercícios exemplos. Exercício 4.29: Dado o vetor a 9, 2, 4,5 . Calcule o valor médio dos elementos do vetor a. Solução: Na Figura 4. 34 a função mean (a), se a é um vetor, retorna o valor médio dos elementos do vetor. 32 Figura 4.34 – Valor médio de um vetor. Exercício 4.30: Dado o vetor a 9, 2, 4,5, 0,12, 20,3,1,36 . Calcule o valor máximo e o valor mínimo entre os elementos do vetor a. Solução: Na Figura 4. 35 a função max (a) e a função min (a), se a é um vetor , retorna o valor máximo e mínimo entre os elementos do vetor. Figura 4.35 – Valor máximo e mínimo de um vetor. 33 Exercício 4.31: No vetor a 9, 2, 4,5, 0,12, 20,3,1,36 . Calcule o valor máximo e o valor mínimo entre os elementos do vetor a, indicando a respectiva posição do elemento no vetor. Solução: Na Figura 4. 36 as funções [d,n]=max (a) e [d,n]=min (a), se a é um vetor , d retorna o valor máximo e mínimo entre os elementos do vetor, e n a respectiva localização do elemento máximo ou mínimo no vetor. Figura 4.36 – Valor máximo e mínimo, com sua localização no vetor. Exercício 4.32: No vetor a 9, 2, 4,5, 0,12, 20,3,1,36 . Calcule a soma dos elementos do vetor. Solução: Na Figura 4. 37, se a é um vetor, a função sum(a) retorna a soma dos elementos do vetor. 34 Figura 4.37 – Soma dos elementos de um vetor. Exercício 4.33: No vetor a 9, 2, 4,5, 0,12, 20,3,1,36 . Ordene os elementos do vetor na ordem crescente. Solução: Na Figura 4. 38, se a é um vetor, a função sort(a) ordena os elementos do vetor na ordem crescente. Figura 4.38 – Ordenação dos elementos de um vetor. Exercício 4.34: No vetor a 9, 2, 4,5, 0,12, 20,3,1,36 . Calcule a mediana e o desvio padrão dos elementos do vetor a. Solução: 35 Na Figura 4.39, se a é um vetor, a função median(a) e a função std(a) calculam respectivamente a mediana e o desvio padrão dos elementos de um vetor. Figura 4.39 – mediana e desvio padrão dos elementos de um vetor. Exercício 4.35: Dada a matriz a 2, 2,1;3, 2, 1; 2, 3, 2 . Calcule o determinante de a e a sua matriz inversa. Solução: Na Figura 4.40 a função det(a) e a função inv(a) calculam respectivamente o determinante e a matriz inversa da matriz a. 36 Figura 4.40 – Determinante e a matriz inversa de uma matriz. Exercício 4.36: Sabendo-se que o coeficiente de atrito cinético ( ) entre um corpo de massa (m) e uma superfície plana com atrito pode ser determinado experimentalmente. Numa experiência de laboratório de Física foram realizadas seis medidas de força, com seis corpos de massa (m) diferentes. Os resultados obtidos são apresentados na Tabela 4.5. A Equação 4.12 determina o valor do coeficiente de atrito ( ) em função da força ( F ), da massa (m) e da gravidade (g), que deve ser considerada g 9.81m / s 2 . Determine o coeficiente de atrito por medida, a média e o desvio padrão. F (4.12) mg Tabela 4.5- Dados obtidos no experimento Medida 1 2 3 4 5 6 Massa (m) 3 5 6 11 21 51 Força (F) 13.5 24.5 31 62 118 295 Solução: Na Figura 4.41 define-se um vetor com os valores da massa (m), um segundo vetor com os valores de força (F). Usando-se a Equação 4.6, operação elemento por elemento, calcula-se o valor do atrito ( ) para cada medida. As funções mean e std calculam, respectivamente, a média e o desvio padrão dos coeficientes de atritos. 37 Figura 4.41 – Coeficientes de atrito das medidas, com valor médio e desvio padrão. 4.2.5 Rotinas com Lista de comandos no MATLAB Todos os comandos do MATLAB mostrados até este ponto deste livro são executados na janela Command Windows. Esta forma de interação não é prática, nem eficaz quando se pretende executar um número significativo de comandos, reproduzir os resultados de uma determinada sequencia de processamento ou modificar o valor de algumas variáveis e reavaliar os resultados obtidos. Quando se deseja executar muitos comandos em série, encadeados logicamente entre si, deve-se primeiro criar um arquivo designado por arquivo MFiles ou script files. Quando o arquivo for chamado, os comandos vão sendo executados na ordem em que são listados, como em um programa em uma linguagem convencional. A sequencia de instruções armazenadas é executada como se cada instrução fosse introduzida manualmente na linha de comandos pelo próprio usuário. 4.2.5.1 Criando Rotinas no MATLAB As rotinas criadas no MATLAB na janela Editor/Debugger Windows podem ser apenas sequencias de comandos (Scripts) ou funções. Para criar uma rotina tipo Script, acesse o editor de programas, na janela principal, no menu File, selecione New e Script. A Figura 4.42 ilustra a janela do Editor de programas do MATLAB. 38 Figura 4.42 – Janela do Editor/Debugger Windows. Na janela do Editor/Debugger, na coluna lateral esquerda, surge a numeração das linhas do programa. Os comandos dentro do programa são digitados linha por linha. As linhas são numeradas automaticamente. Durante a edição do programa, para passar para a próxima linha deve-se pressionar a tecla Enter. As linhas utilizadas para os comentários, sempre devem ser precedidas pelo caracterer % (percentual), para que não sejam executadas pelo programa MATLAB. Após a edição do programa, antes de sua execução, o programa deve ser salvo, no menu File, opção Save as , selecione o caminho e a localização da unidade de armazenamento. O nome do arquivo deve ser iniciado por uma letra, pode incluir dígitos, underline e possuir até no máximo 63 caracteres de extensão. O nome do arquivo não pode conter espaços, caso contrário, no momento que executar o programa, ocorrerá um erro: “Undefined function or method ‘file name‘ for input arguments of type ‘char’”. O programa pode ser executado, digitando-se o nome do programa na linha do prompt, na janela Command Windows, seguida da tecla Enter ou diretamente na janela Editor/Debugger Windows, clicando no ícone Run. A Figura 4.43 apresenta um Script editado na janela do editor de programas do MATLAB. Figura 4.43 – Programa editado na janela do Editor/Debugger Windows. 39 4.2.5.2 Exemplo de Script Elaborados no MATLAB A seguir são apresentados alguns Scripts com funções de entrada e saída de dados, elaborados no MATLAB. Caso necessite de maiores informações sobre as funções apresentadas nos exercícios resolvidos, recomenda-se que o leitor estude as funções no Apêndice A deste livro ou no Help do MATLAB. Exercício 4.37: Criar uma rotina no MATLAB, que gere duas tabelas de conversão. Uma tabela converte velocidade em milhas por hora (mi/h) em velocidade em quilômetros por hora (km/h). A segunda tabela converte libras (lb) em Newton (N). Cada tabela deve ser salva em um arquivo texto (extensão .txt) diferente. As Equações 4.13 e 4.14 apresentam as relações entre mi/h em km/h e, libra em Newton, respectivamente. km / h mi / h *1.609 (4.13) N lb * 4.448 (4.14) Solução: Na rotina apresentada na Figura 4.44, inicialmente define-se um vetor de velocidade em Vmph, aplica-se a fórmula de conversão da Equação 4.13 e cria-se uma matriz com duas colunas (Vmph e Vkph). Depois se define um vetor de força em Flb, aplica-se a fórmula de conversão da Equação 4.14 e cria-se uma matriz com duas colunas (Flb e FN). A função fopen do MATLAB abre (com o argumento ‘w’) o arquivo chamado Vmph_Vkph e o arquivo Flb_FN. A função fprintf escreve os resultados de saída em dois arquivos textos e o comando fclose fecha os arquivos. 40 Figura 4.44 – Rotina de conversão Vmph em Vkmp e Flb em FN. Essa rotina gera e salva dois arquivos textos, extensão .txt, no diretório selecionado no Current Directory, que podem ser abertos em qualquer editor de textos, por exemplo, o Word. As Figuras 4.45 e 4.46 apresentam as tabelas lidas pelo editor de texto Word. Figura 4.45 – O arquivo Vmph_Vkpm gerado no editor de texto do Word. 41 Figura 4.46 – O arquivo Flb_FN gerado no editor de texto do Word. Exercício 4.38: Considerando a altura h(t ) e a velocidade v(t ) de um projétil lançado de uma plataforma, com um ângulo em relação a horizontal, com velocidade inicial v0 e gravidade g 9,8m / s 2 . A altura e a velocidade do projétil podem ser determinadas, respectivamente, pelas Equações 4.15 e 4.16. O tempo de voo do projétil é expresso pela Equação 4.17. 1 h(t ) v0t sin( ) gt 2 2 (4.15) v(t ) v02 2v0 gt sin( ) g 2t 2 (4.16) tvoo (4.17) 2v0 sin( ) g Assumindo um valor de velocidade inicial v0 50m / s e um ângulo de lançamento 700 . Crie uma rotina no MATLAB, que determine o intervalo de tempo em que a velocidade do projétil é maior ou igual a 30m / s , para uma altura menor ou igual a 25m . Apresente um gráfico que indique a relação altura por velocidade. O vetor de saída conterá os elementos do vetor t, que respeitam a relação imposta pela condição h 25 & v 30 . Solução: Na rotina apresentada na Figura 4.47, inicialmente define-se os vetores velocidade inicial e gravidade. Converte-se o ângulo alfa em radianos. Define-se o tempo de voo aplicando-se a Equação 4.17, cria-se um vetor tempo utilizando-se a função linspace com 50 elementos. Define-se a altura e a velocidade aplicando-se as Equações 4.15 e 4.16. Aplica-se a condição imposta h 25 & v 30 , por meio da função find e encontra-se o vetor de saída, cujos elementos são apresentados na janela do Command Window. A Figura 4.48 apresenta o gráfico 42 altura (h) e velocidade (v) por tempo, do movimento do projétil, gerado pela função plot. Figura 4.47 – Rotina que determina o intervalo de tempo do movimento de um projétil com condições de altura e velocidade determinadas. Figura 4.48 – Gráfico altura (h) e velocidade (v) por tempo do movimento de um projétil 43 4.2.5.3 Exemplo de Funções Elaboradas no MATLAB A resolução de problemas matemáticos complexos no MATLAB, geralmente necessita da divisão em problemas mais simples ou elementares. Nesse caso, quando o valor de uma função matemática precisa ser determinado dentro do programa, o MATLAB oferece o recurso das funções. As funções são utilizadas para a implementação de soluções elementares, que podem ser declaradas em rotinas, que são depois reutilizados na solução de outros problemas. As funções são Scripts com algumas características especiais. A sua estrutura básica é a declaração da função no início do Script, para definir a sua sintaxe. A forma geral da declaração de uma função é apresentada a seguir: function [parâmetro(s)_saída] = nome_da_função (parâmetro(s)_entrada) Uma função declarada e salva como um arquivo no MATLAB pode ser chamada em qualquer parte do MATLAB. Desse modo, programas muito grande podem ser divididos em segmentos menores, que podem ser testados independentes. As funções são semelhantes as sub-rotinas das linguagens convencionais, como Basic e Fortran. A Figura 4.49 ilustra os passos para criar uma função no MATLAB. No menu principal selecione File, New e Function. Figura 4.49 – Passos iniciais para criar um função no MATLAB. A Figura 4.50 ilustra um template gerado na janela Editor do MATLAB, onde deve ser criada a função. Toda a função começa com a palavra em inglês function. Deve ser digitada em letras minúsculas (1). Um argumento ou uma lista de argumentos (parâmetros) de saída devem ser digitados entre colchetes (2). Nome da função pelo qual deve ser salva e chamada quando necessário (3). Um argumento ou uma lista de argumentos de entrada devem ser digitados entre parênteses (4). Os exercícios resolvidos a seguir apresentam alguns exemplos de funções utilizadas na solução de problemas com o MATLAB. 44 Figura 4.50 – Template de uma função disponível no Editor do MATLAB. Exercício 4.39: Escreva uma função em MATLAB, que converta temperatura em graus Fahrenheit (F) em graus Celsius (C). Salve a função como FparaC. A Equação 4.18 representa a relação entre as duas escalas de temperaturas. Crie um vetor F de temperaturas em graus Fahrenheit entre 30 e 50 graus, com intervalo de 5 graus e teste a função. C 5* F 32 9 (4.18) Solução: Na Figura 4.51 é apresentada a declaração da função FparaC, que converte temperatura em grau Fahrenheit em temperatura em grau Celsius. Utilizou-se o template do Editor do MATLAB para criar a função FparaC. Na janela do Command Window criou-se o vetor de temperaturas F e chamou-se a função para a conversão de graus Fahrenheit em Celsius. 45 Figura 4.51 – Função FparaC que faz a conversão de graus Fahrenheit em Celsius. Exercício 4.41: Sabendo-se que a variação no comprimento de um objeto ( L ), devido à variação da temperatura é dada pela Equação 4.19, onde o coeficiente linear de dilatação e L o comprimento do objeto. Determine a variação na área de uma chapa de alumínio de dimensões 4.5m x 2.25m, se a temperatura variar de 400 F para 920 F . Considere 23.106 / 0C . L L T (4.19) Solução: Na Figura 4.52 inicialmente são declaradas as variáveis correspondentes às dimensões da chapa ( a1 , b1 ), temperaturas ( T1 , T2 ) e o coeficiente de dilatação ( ). A seguir usando-se a função FparaC calcula-se a diferença de temperatura em graus Celsius. Calcula-se o novo comprimento da chapa ( a2 ) e a nova largura ( b2 ). Por fim calcula-se a variação total da área da chapa. 46 Figura 4.52 – Variação total da área da chapa utilizando-se a função FparaC. 4.3 Exercícios Propostos a) Dada a identidade trigonométrica pela Equação 4.20. Substituindo-se x identidade calculando cada lado da equação. cos 2 x tan x sin x 2 2 tan x 5 , verifique a (4.20) b) Declare e inicialize as variáveis a, b, c e d como: a 18.45; b 5.03; c 45.5; d 0.5 . Em seguida calcule a Equação 4.21. a ab (a d ) 2 c ac (4.21) 47 c) Crie os seguintes vetores. c.1) Vetor linha contendo os seguintes elementos: 32; 4; e2.5 ; 63; cos 3 ; 14.12. c.2) Vetor coluna contendo os seguintes elementos: 55; 14; ln(51) ; 987; 0; 5sin(2.5 ) . c.3) Vetor linha, onde o primeiro elemento é 1 e o ultimo 33. Produza números entre os dois, incremente-os de 2 unidades. d) Resolva o seguinte sistema de equações lineares: 3x 4 y 5 z 9 2x 7 y z 2 6 x 10 y 3 z 0 e) Construa dois gráficos da função f ( x) 0.6 x5 5 x 3 9 x 2 separadamente; no primeiro use o intervalo 4 x 4 e, no segundo use o intervalo 2.7 x 2.7 . f) Um mecanismo pistão-manivela-biela é apresentado na Figura 4.53, sendo constituído por uma manivela de êmbolo, usada em muitas aplicações na engenharia. A manivela gira a uma velocidade constante de 500 rpm. Calcule e esboce a posição, a velocidade e a aceleração do embolo (pistão) para uma revolução da manivela. Construa três gráficos na mesma janela de saída. Considere inicialmente 00 em t 0. Figura 4.53 – Sistema pistão-manivela-biela. Baseada na Figura 4.53, as Equações 4.22, 4.23, 4.24 e 4.25 podem ser utilizadas para calcular as distancias d1 , d 2 , h e a posição x do pistão. Derivando-se x em relação a t obtemos a velocidade do êmbolo; a derivada segunda de x em relação a t obtemos a aceleração do êmbolo. 48 d1 r cos h rsen (4.22) d 2 (c h ) (c r sin ) 2 1 2 2 2 2 2 (4.23) 1 2 (4.24) x d1 d 2 r cos (c 2 r 2 sin 2 ) 2 1 (4.25) g) Quando resistores são ligados em série, a queda de tensão em cada resistor é determinada pela Equação 4.26, onde Vn é a queda de tensão sobre o resistor n , Req Rn é a resistência equivalente ou total e Vs é a tensão da fonte. A potência dissipada em cada resistor pode ser determinada pela Equação 4.27. Vn Pn Rn Vs Req (4.26) Rn 2 Vs Req2 (4.27) A Figura 4.54 apresenta um circuito com quatro resistores conectados em série. Desenvolva um programa (Script), que calcule a queda de tensão e a potencia dissipada em cada resistor. Ao executar a rotina, o usuário deve ser solicitado a digitar em um vetor o valor da fonte de tensão e o valor de cada resistor. O programa exibirá uma tabela com os resistores listados na primeira coluna, a queda de tensão na segunda coluna e a potencia dissipada na terceira coluna. Após a tabela, o programa deve exibir a corrente total no circuito e a potência total dissipada. Teste o programa com os seguintes valores de Vs e Rn . Vs 24V ; R1 10; R2 15; R3 6; R4 12 h) Quando n resistores são conectados para formar um circuito paralelo, a resistência equivalente Req desse circuito pode ser determinada pela Equação 4.28. Escreva uma função no MATLAB que determine a Req . Como sugestão utilizar para o nome da função e dos argumentos, por exemplo, REQ = req ( R ).Os parâmetros de entrada devem estar disponível em um vetor, onde cada entrada desse vetor corresponde a um valor de resistor, e o parâmetro de saída é 49 Req . Teste a função para determinar a resistência equivalente quando os seguintes resistores são conectados em paralelo: 30, 45,100, 60,500,180 e 200 . 50