Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fabrizio Leonardi Luiz Vasco Puglia São Paulo 2016 Sumário 1 Objetivos 6 2 Introdução 8 2.1 Considerações Iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 Variáveis e Declarações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 Área de Trabalho - Informações . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.1 Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3.2 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.3 lookfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.4 Salvando e Saindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3.5 Números e Expressões Aritméticas . . . . . . . . . . . . . . . . . . . . . . 14 2.3.6 Formato de Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.7 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Operações Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.1 Transposta de uma Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.2 Adicionando e Subtraindo Matrizes . . . . . . . . . . . . . . . . . . . . . . 16 2.4.3 Multiplicação de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.4.4 Divisão de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.4.5 Funções Elementares e Transcendentais . . . . . . . . . . . . . . . . . . . . 18 2.5 Operações de Vetores ou Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.1 Somando e Subtraindo Arrays . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.2 Multiplicando e Dividindo Arrays . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.3 Usando Potenciação com Arrays . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5.4 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5.5 Operadores Lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.5.6 Funções Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6 Manipulação Matricial e Vetorial . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6.1 Gerando Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6.2 Indexando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6.3 Usando Vetores de 0 e 1 na Indexação . . . . . . . . . . . . . . . . . . . . 24 2 SUMÁRIO SUMÁRIO 2.6.4 Matrizes Vazias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.6.5 Matrizes Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.6.6 Construindo Matrizes a partir de Matrizes . . . . . . . . . . . . . . . . . . 26 2.7 Análise de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.7.1 Convenção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.7.2 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.8 Funções Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.8.1 Autovalores e Autovetores . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.8.2 Norma, Posto e Condicionamento . . . . . . . . . . . . . . . . . . . . . . . 29 2.9 Polinômios e Processamento de Sinais . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.9.1 Representação de Polinômios . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.9.2 Processamento de Sinais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.9.3 Filtragem de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.10 Funções de Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.10.1 Integração Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.10.2 Equações Não Lineares e Funções de Otimização . . . . . . . . . . . . . . . 33 2.10.3 Equações Diferenciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.11 Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.11.1 Gráficos 2-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.11.2 Funções Gráficas Elementares . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.11.3 Criando um Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.11.4 Estilos de Linhas, Marcadores e Cores . . . . . . . . . . . . . . . . . . . . 36 2.11.5 Adicionando Linhas num Gráfico Existente . . . . . . . . . . . . . . . . . . 37 2.11.6 Dados Imaginários e Complexos . . . . . . . . . . . . . . . . . . . . . . . . 37 2.11.7 Exibindo Gráficos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.11.8 Importando Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.11.9 Funções Gráficas Especializadas em 2-D . . . . . . . . . . . . . . . . . . . 40 2.11.10Gráfico de Funções Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . 40 2.11.11Gráficos 3-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.12 Controles de Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.12.1 FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.12.2 WHILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.12.3 IF e BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.13 Arquivo M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.13.1 Arquivos Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.13.2 Arquivos de Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.13.3 Criando um Help para Seus Arquivos Pessoais . . . . . . . . . . . . . . . . 47 2.13.4 Informações Úteis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 F L / L V P 3 SUMÁRIO SUMÁRIO 2.13.5 INPUT e PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.13.6 Variáveis Globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.13.7 Variáveis Alfanuméricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.13.8 Função EVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.14 Manipulação de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.14.1 Transferência de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.14.2 Importando Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.14.3 Exportando dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.15 Depuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3 Toolbox de Matemática Simbólica 53 3.1 Variáveis Simbólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.1.1 Matriz de variáveis simbólicas . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.1.2 Simplificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.1.3 Substituições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.1.4 Diferenciação Simbólica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.1.5 Integração Simbólica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.1.6 Solução de Equações Algébricas . . . . . . . . . . . . . . . . . . . . . . . . 57 3.1.7 Gráficos de Funções Simbólicas . . . . . . . . . . . . . . . . . . . . . . . . 58 3.1.8 Solução de Equações Diferenciais . . . . . . . . . . . . . . . . . . . . . . . 59 4 Transformada de Laplace 62 4.0.1 Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.1 Sistema de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.1.1 Função de Transferência . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.1.2Zero-Polo-Ganho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.1.3 Espaço de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.1.4 Tempo Discreto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.1.5 Dados do Objeto LTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.1.6 Conversão de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.2 Operações com Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.2.1 Malha de Avanço . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.2.2 Blocos em Cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.2.3 Inversão de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.2.4 Soma de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.2.5 Derivação de Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.2.6 Malha de Realimentação Unitária . . . . . . . . . . . . . . . . . . . . . . . 72 4.3 Resposta Temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.3.1 Resposta em Frequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 F L / L V P 4 4.3.2 Resposta Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.3.3 Redução de Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.3.4 Lugar Geométrico das Raízes . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.3.5 Interfaces Gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Capítulo 1 Objetivos • O objetivo destas notas de aulas é o aprendizado básico dos software MatLab e Octave, com foco no curso de Controle Automático e Servomecanismo. • Para estudos mais detalhados do MatLab, uma versão acadêmica é comercializada pelo link, www. mathworks . com/academia/ student_vers ion • O software Octave é uma opção free, que apresenta recursos semelhantes ao MatLab e pode ser obtido em www. gnu . org / so f tware / octave atualmente na versão 4.0.1, que foi utilizada neste tutorial. Um cuidado especial deve ser observado para instalação do aplicativo Octave. Pacotes básicos acompanham a instalação padrão do aplicativo, mas o pacote "symbolic" utilizado neste tutorial deve ser instalado posteriormente, conforme segue: – No endereço da internet www.github.com/cbm755/octsympy/releases/tag/v2.3.0 faça um download do pacote www.github.com/cbm755/octsympy/releases/tag/v2.3.0 – Na Janela de Comando do Octave (ver figura 2.2), indicar o caminho onde o arquivo "symbolic-win-py-bundle-2.3.0.zip" esta localizado, sem a necessidade de ser descom- pactado, porem um descompactador deve estar instalado em seu computador. – introduza o comando de instalação do pacote >>pkg install symbolic-win-py-bundle-2.3.0.zip – ao final da instalação, o comando >>pkg load symbolic permite que o pacote seja carregado para utilização. 6 CAPÍTULO 1. OBJETIVOS • Agradecimentos especiais aos Professores José Barbosa Junior, Paulo Álvaro Maya, Heraldo Silveira Barbuy e tantos outros que direta ou indiretamente contribuíram com o conteúdo destas notas. Indicação de diferenças entre MATLAB e OCTAVE • Os comandos entre estes dois aplicativos são muito semelhantes, quando diferenças existirem, serão destacadas no texto, como apresentado aqui. F L / L V P 7 Capítulo 2 Introdução Ambos aplicativos, criados com objetivo de processamento matemático, de alto desempenho. O MatLab é o precursor da ferramenta, inicialmente criada para facilitar operações matriciais de grandes dimensões e posteriormente expandida para diversas áreas de processamento matemático, na forma de "Toolboxes" (MatLab) ou "Packages" (Octave). As principais diferenças entre estes, é que o MatLab só é disponibilizado em versões comerciais pagas e com potencial de soluções bastante amplos, enquanto o Octave é um aplicativo gratuito e obviamente com algumas limitações quando comparado com o MatLab. 2.1 Considerações Iniciais Ambos aplicativos permitem inserção de dados através de tela de entrada Command Window no MatLab da figura 2.1 ou Janela de Comando da figura 2.2 do Octave Figura 2.1: Tela do MatLab Figura 2.2: Tela do Octave Nos dois casos, estes aplicativos trabalham essencialmente com um tipo de objeto: Matriz retangular numérica (real ou complexa). Em algumas situações existe significado especial agre- gado à matrizes de dimensão 1 (escalares) e matrizes com uma só linha ou coluna (vetores). A 8 CAPÍTULO 2. INTRODUÇÃO 2.1. CONSIDERAÇÕES INICIAIS linguagem de ambos não usa declaração preliminar ou dimensionamento de variáveis. Isso é feito de forma automática. Iniciar a utilização dos aplicativos • No MatLab, as instruções que seguem, podem ser inseridas diretamente na janela "Command Window". • No Octave ao iniciar o aplicativo deve-se em primeiro lugar carregar os pacotes necessá- rios, através dos comandos abaixo, para utilização dos pacotes de controle e representações simbólicas respectivamente. >>pkg load con t r o l >>pkg load symbol ic Matrizes podem ser adicionadas no ambiente de várias formas, contudo a forma mais simples para matrizes pequenas é entrando com a lista dos elementos, seguindo a seguinte convenção, para ambos aplicativos: • Separe os elementos com espaços ou vírgulas. • Delimite os elementos com colchetes [ ]. • Use ; (ponto-e-vírgula) para indicar o final da linha. Exemplo 1 >> A=[1 2 3 ; 4 5 6 ; 7 8 9 ] A = 1 2 3 4 5 6 7 8 9 Exemplo 2 Elementos de uma matr iz podem se r qua i squer exp r e s s õ e s >> x=[1.3 sq r t (3 ) (1+2+3)⇤4/5] x = �1.3000 1 .7321 4 .8000 F L / L V P 9 2.2. VARIÁVEIS E DECLARAÇÕES CAPÍTULO 2. INTRODUÇÃO Exemplo 3 Elementos i n d i v i d u a i s podem se r r e f e r e n c i a d o s pe lo seu í nd i c e ( l inha , coluna ) . >> x(5)=abs (x ( 1 ) ) x = �1.3000 1 .7321 4 .8000 0 1 .3000 Ao atribuir um valor numérico à x(5), automaticamente x(4) é criado com valor nulo. Exemplo 4 Você pode c on s t r u i r matr i ze s maiores usando matr i ze s menores como seus e lementos . Por exemplo , vamos ad i c i ona r uma l i nha à matr iz A: >>r =[10 11 1 2 ] ; >> A=[A; r ] A = 1 2 3 4 5 6 7 8 9 10 11 12 Exemplo 5 Extra i r sub matr i ze s de uma matr iz maior usando " :" ( do i s pontos ) . >> A=A( 1 : 3 , : ) A = 1 2 3 4 5 6 7 8 9 Remove as três primeiras linhas e todas as colunas da matriz A e coloca o resultado em A. 2.2 Variáveis e Declarações As declarações nestes aplicativos são efetuadas na forma: >> variável = expressão ou simplesmente, >> expressão F L / L V P 10 CAPÍTULO 2. INTRODUÇÃO 2.2. VARIÁVEIS E DECLARAÇÕES Quando o nome da variável é omitido, o nome ans é usado como variável padrão. Uma definição normalmente termina com ENTER. Se o último carácter é um ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça a atribuição da mesma forma. Isto é especialmente importante nas situações que o resultado é muito grande, tal como uma matriz de 10 linhas e 10 colunas. Exemplo 6 A in s t ru ção syms x y n e c e s s á r i a a e s t e exemplo s e rá d i s cu t i d a mais à f r en t e , mas não esqueça de ca r r ega r o symbol ic no OCTAVE >> pkg load symbol ic >> syms x y >> H=4⇤x⇤x⇤x�12⇤y�45 H = 4⇤x^3 � 12⇤y � 45 >> pre t ty (H) 3 4 x � 12 y � 45 ou sem declaração do nome da variável >> 4⇤x⇤x⇤x�12⇤y�45 ans = 4⇤x^3 � 12⇤y � 45 >> pre t ty (4⇤x⇤x⇤x�12⇤y�45) 3 4 x � 12 y � 45 Quando uma expressão é muito grande e não cabe em uma linha, use (...) para continuar a defi- nição na linha seguinte Exemplo 7 >> s=1�1/2+1/3�1/4+1/5�1/6+1/7 . . . �1/8+1/9�1/10+1/11�1/12; >> devido ao " ;" o r e su l t ado não é apresentado . F L / L V P 11 2.3. ÁREA DE TRABALHO - INFORMAÇÕES CAPÍTULO 2. INTRODUÇÃO Se s o l i c i t a d o s , vem : >> s s = 0.6532 Você pode nomear uma variável ou nome de função com uma letra seguida de qualquer quantidade de letras ou underline. O sistema diferencia letras maiúsculas de minúsculas e usa somenteos primeiros 19 caracteres do nome. As variáveis são "case sensitive", isto é, a variável A é diferente da variável a. Letras minúsculas são usadas em todos os comandos de MATLAB/OCTAVE. 2.3 Área de Trabalho - Informações Para listar as variáveis ativas use o comando "who". Para obter mais informações sobre as variáveis como: nome, tamanho, número de elementos, etc., use o comando "whos". Exemplo 8 >> who Your v a r i a b l e s are : H ans s x y >> whos Name S i z e Bytes Class At t r ibute s H 1x1 112 sym ans 1x1 112 sym s 1x1 8 double x 1x1 112 sym y 1x1 112 sym 2.3.1 Clear Para limpar a tela do "Command Window", utilize o comando >> c l c Para limpar as variáveis da memória utilize o comando utilize o comando >> c l e a r a l l F L / L V P 12 CAPÍTULO 2. INTRODUÇÃO 2.3. ÁREA DE TRABALHO - INFORMAÇÕES O comando "clear" : Apaga todas as variáveis; "clear a b c" só apaga as variáveis explicitadas ( a, b, c, neste caso); "clear" é muito útil em programas para evitar erros em repetições do programa com dimensões diferentes das matrizes. 2.3.2 Help O comando help produz informações resumidas sobre funções específicas ou sobre tópicos . Para listar um grupo de funções ou uma função, digite help seguido do nome do grupo de fun- ções. Exemplo 9 >> help c l c c l c � Clear Command Window This MATLAB func t i on c l e a r s a l l input and output from the Command Window disp lay , g i v i ng you a c l ean sc r e en . c l c Reference page f o r c l c See a l s o c l ea r , c l f , c l o s e , home Obs:. Em OCTAVE "help comando" (por exemplo, "help format") produz uma instrução muito resumida. Um pouco mais pode-se obter com "help -i comando", que apresenta o ponto do manual onde está explicado o comando. 2.3.3 lookfor Para localizar palavras-chaves em todos os arquivos, use o comando lookfor. Exemplo 10 >> look f o r i nv e r s e i f f t � Inve r s e d i s c r e t e Four i e r trans form . i f f t 2 � Two�dimens iona l i n v e r s e d i s c r e t e Four i e r trans form . i f f t n � N�dimens iona l i n v e r s e d i s c r e t e Four i e r trans form . i f f t s h i f t � Inve r s e FFT s h i f t . acos � Inve r s e cos ine , r e s u l t in rad ians . acosd � Inve r s e cos ine , r e s u l t in degree s . F L / L V P 13 2.3. ÁREA DE TRABALHO - INFORMAÇÕES CAPÍTULO 2. INTRODUÇÃO acosh � Inve r s e hype rbo l i c c o s i n e . acot � Inve r s e cotangent , r e s u l t in radian . 2.3.4 Salvando e Saindo Para sair do aplicativo digite exit. Encerrando uma seção, apaga-se todas as variáveis da área de trabalho (workspace). Se for necessário, salve suas variáveis digitando como segue: Diferenças em Salvar Variáveis • MATLAB - Digite save, este comando salvará todas as variáveis em um arquivo chamado matlab.mat. Para recuperar as variáveis use o comando load. Você também pode salvar somente algumas variáveis e usar o nome de um arquivo qualquer. >> save x y z • OCTAVE - Digite save nome, este comando salvará todas as variáveis em um arquivo, com o nome especificado, aqui o OCTAVE é difere do MATLAB. Para recuperar as variáveis use o comando load nome. Você também pode salvar somente algumas variáveis e usar o nome de um arquivo qualquer. >> save A x y z 2.3.5 Números e Expressões Aritméticas Ambos os aplicativos utilizam notação convencional com potencia de dez, ou unidade complexa como sulfixo: 1 .760217 e�11 �4.534 i A prioridade de operações matemáticas seguem a sequência apresentada. ^ potenciação \ divisão à esquerda / divisão à direita ⇤ multiplicação � subtração F L / L V P 14 CAPÍTULO 2. INTRODUÇÃO 2.3. ÁREA DE TRABALHO - INFORMAÇÕES + adição Algumas funções internas retornam valores especiais. A função "pi" retorna o valor de ⇡ , a função "inf" retorna 1 , etc. Funções matemáticas elementares normalmente encontradas em calculadores científicas são encontradas nestes aplicativos. Essas funções incluem, por exemplo: abs, sqrt, log, sin. Se uma operação resultar em infinito isso não implica em erro, simplesmente aquela variável terá o valor infinito. O mesmo ocorre para operações inválidas como 1 1 ou 0 0 . O resultado é NaN ("Not a Number") 2.3.6 Formato de Saída Para alterar a formatação do número a ser apresentado na tela, utilize o comando format. Pequenas diferenças entre as formas de apresentação podem ser obtidas em Help Format • MATLAB = format short • OCTAVE =format short G exercem a mesma função Exemplo 11 >> w=[1/3 15/4 1 .2345 e �6] ; >> format shor t w = 0.3333 3 .7500 0 .0000 >> format shor t e w = 3.3333 e�01 3 .7500 e+00 1.2345 e�06 >> format long w = 0.333333333333333 3.750000000000000 0.000001234500000 >> format long e w = 3.333333333333333 e�01 3.750000000000000 e+00 1.234500000000000 e�06 2.3.7 Funções Grande parte do poder destes processadores matemáticos, vem do enorme conjunto de funções. O conjunto de funções aplicadas a uma área específica é denominado toolbox ou package. Cada usuário pode criar suas próprias funções que se comportam como se fossem funções internas. F L / L V P 15 2.4. OPERAÇÕES MATRICIAIS CAPÍTULO 2. INTRODUÇÃO As seções adiante discutem cada uma das diferentes categorias de funções analíticas. É possível combinar funções de várias formas. >> x = sq r t ( l og ( z ) ) Algumas funções usam dois ou mais argumentos, e cada argumento pode ser uma expressão. >> angulo = atan2 (y ,3⇤ x ) Existem funções que retornam dois ou mais valores. Nestes casos, os valores de saída devem estar entre colchetes [ ] e separados por vírgula. >> [ V, D ] = e i g ( A ) A função eig calcula os autovetores e os autovalores de A, respectivamente. 2.4 Operações Matriciais 2.4.1 Transposta de uma Matriz O carácter ’ (apostrofe) denota a transposta de uma matriz. Se z for complexo, z0 é o transposto conjugado complexo de z Exemplo 12 >> a=[1 2 ;3 4 ] a = 1 2 3 4 >> b=a ’ b = 1 3 2 4 2.4.2 Adicionando e Subtraindo Matrizes Os símbolos + e - denotam adição e subtração de matrizes. Portanto, a operação é definida se as matrizes têm a mesma dimensão F L / L V P 16 CAPÍTULO 2. INTRODUÇÃO 2.4. OPERAÇÕES MATRICIAIS Exemplo 13 >> c=a+b c = 2 5 5 8 A adição e subtração são definidas também para o caso que um dos operandos é um esca- lar Exemplo 14 >> d=c�2 d = 0 3 3 6 2.4.3 Multiplicação de Matrizes O símbolo * denota multiplicação de matrizes e é válida sempre que dimensões internas dos dois operandos forem iguais. Exemplo 15 >> e=a⇤b e = 5 11 11 25 Naturalmente, um escalar (matriz de dimensão 1) pode multiplicar ou ser multiplicado por qual- quer matriz. Exemplo 16 >> f=2⇤e f = 10 22 22 50 F L / L V P 17 2.5. OPERAÇÕES DE VETORES OU ARRAY CAPÍTULO 2. INTRODUÇÃO 2.4.4 Divisão de Matrizes Dois símbolos são utilizados para divisão de matrizes: / e cujos significados são: X = A\ B é solução do sistema A*X = B X = B\A é solução do sistema X*A = B 2.4.5 Funções Elementares e Transcendentais Consideram-se expressões como "exp(A)" e "sqrt(A)" como operação sobre cada um dos elemen- tos de um vetor (linha ou coluna). Existem funções para calculo de funções transcendentais de matrizes, quando essas são quadradas "expm" exponencial de uma matriz "logm" logaritmo de uma matriz "sqrtm" raiz quadrada de uma matriz Outras funções elementares sobre matrizes incluem: "poly" polinômio característico "det" determinante "trace" traço 2.5 Operações de Vetores ou Array Refere-se às operações com vetores ou array as operações aritméticas realizadas elemento a ele- mento ao invés da operação matricial algébrica usual definida pelos símbolos\ ⇤ ^ e ’. Para indicar que a operação é elemento-a-elemento usa-se um ponto (.) antes do símbolo da operação. 2.5.1 Somando e Subtraindo Arrays Para a adição e subtração, as operações de arrays e as de matrizes são as mesmas. Neste caso + e - podem ser usados sem o ponto. 2.5.2 Multiplicando e Dividindo Arrays O símbolo .* denota multiplicação elemento-a-elemento. Se A e B têm mesma dimensão, en- tão A.*B resulta num array cujos elementos são o produto dos elementos individuaisde A e de B. F L / L V P 18 CAPÍTULO 2. INTRODUÇÃO 2.5. OPERAÇÕES DE VETORES OU ARRAY Exemplo 17 >> x=[1 2 3 ] ; y=[4 5 6 ] ; >> z=x .⇤ y z = 4 10 18 A expressão A./B e A.\B resulta no quociente de cada elemento. Exemplo 18 >> z=x .\ y z = 4.0000 2 .5000 2 .0000 >> z=x . / y z = 0.2500 0 .4000 0 .5000 2.5.3 Usando Potenciação com Arrays O símbolo .^ denota potenciação elemento-a-elemento. Exemplo 19 >> z=x .^y z = 1 32 729 2.5.4 Operadores Relacionais Para se comparar matrizes de dimensões idênticas, existem operadores relacionais: < menor <= menor ou igual > maior >= maior ou igual == igual ⇠ = diferente F L / L V P 19 2.5. OPERAÇÕES DE VETORES OU ARRAY CAPÍTULO 2. INTRODUÇÃO O processador compara os pares de elementos correspondentes. O resultado é uma matriz de "uns"e "zeros", onde "um"representa "verdadeiro"e "zero"representa "falso" Exemplo 20 >> a=[1 2 ;3 4 ] ; b=[1 4 ;2 3 ] ; >> a~=b ans = 0 1 1 1 Exemplo 21 Pode�se obter os e lementos da matr iz A, que sejam d i v i s í v e i s por 3 >> A=[9 1 3 ;3 5 7 ;4 5 9 ] ; >> G=rem(A, 3 ) ; >> p=(G==0) p = 1 0 1 1 0 0 0 0 1 A função rem(A,3) retorna a matriz dos restos da divisão por 3. Cada um dos elementos de G informa se a operação relacional é falsa (0) ou verdadeira (1). A função find é muito usada em conjunto com operadores relacionais. O exemplo abaixo ilustra como localizar todos os elementos de Y que são maiores que 3 e substituí-los por 10. Exemplo 22 >> y=[1 2 3 4 5 6 7 8 9 ] ; >> i=f i nd (y >3.0) ; >> y( i )=10⇤ ones ( s i z e ( i ) ) y = 1 2 3 10 10 10 10 10 10 2.5.5 Operadores Lógicos Os operadores &, |, e ⇠ são os operadores lógicos "e", "ou"e "não"respectivamente. As funções "any" e "all" são muito utilizadas em conjunto com operadores lógicos. A função any(x) retorna "1"se qualquer elemento de x for não nulo e retorna "0"caso contrário. A função all(x) retorna F L / L V P 20 CAPÍTULO 2. INTRODUÇÃO 2.6. MANIPULAÇÃO MATRICIAL E VETORIAL "1"somente se todos os elementos de x são não nulos. Essas funções são particularmente úteis na declaração de um comando if. Exemplo 23 i f a l l (A < 0 . 5 ) faça alguma co i s a end 2.5.6 Funções Matemáticas Um conjunto de funções matemáticas elementares são aplicáveis elemento-a-elemento. Exemplo 24 >> A=[�1 2 �3;4 �5 6 ] ; >> B=abs (A) B = 1 2 3 4 5 6 2.6 Manipulação Matricial e Vetorial A capacidade de indexação do processador matemático permite manipulação de linhas e colunas, elementos individuais e submatrizes de matrizes. Os vetores são o ponto central da indexação e eles são gerados com o uso de ":"(dois pontos). 2.6.1 Gerando Vetores A declaração abaixo ilustra a criação de um vetor usando (:) dois pontos: Exemplo 25 >> x=1:5 x = 1 2 3 4 5 Você pode também criar o vetor com incrementos diferentes da unidade. No exemplo a seguir o passo é de ⇡/4. F L / L V P 21 2.6. MANIPULAÇÃO MATRICIAL E VETORIAL CAPÍTULO 2. INTRODUÇÃO Exemplo 26 >> y=0: p i /4 : p i y = 0 0.7854 1 .5708 2 .3562 3 .1416 Exemplo 27 >> z=6:�1:1 z = 6 5 4 3 2 1 A uso de (:) permite a criação rápida de tabelas como ilustrado a seguir Exemplo 28 >> x =( 0 : 0 . 2 : 3 ) ’ ; >> y=exp(�x ) . ⇤ s i n (x ) ; >> [ x y ] ans = 0 0 0.2000 0 .1627 0 .4000 0 .2610 0 .6000 0 .3099 0 .8000 0 .3223 1 .0000 0 .3096 1 .2000 0 .2807 1 .4000 0 .2430 1 .6000 0 .2018 1 .8000 0 .1610 2 .0000 0 .1231 2 .2000 0 .0896 2 .4000 0 .0613 2 .6000 0 .0383 2 .8000 0 .0204 3 .0000 0 .0070 Existem outras funções para a geração de vetores tal como logspace que gera um vetor espaçado logaritmicamente F L / L V P 22 CAPÍTULO 2. INTRODUÇÃO 2.6. MANIPULAÇÃO MATRICIAL E VETORIAL Exemplo 29 >> w=logspace (�1 ,1 ,5) w = 0.1000 0 .3162 1 .0000 3 .1623 10.0000 2.6.2 Indexando Elementos individuais de matrizes podem ser referenciados inserindo seus índices de linha e coluna entre parênteses. Se uma expressão for usada como índice, o índice é aproximado paro o inteiro mais próximo. Exemplo 30 >> A=[1 2 3 ;4 5 6 ;7 8 9 ] ; >> A(3 ,3)=A(1 ,3)+A(3 , 1 ) A = 1 2 3 4 5 6 7 8 10 O uso de ":"dois pontos, podemos indexar todas as linhas ou colunas ou uma parte: Exemplo 31 >> A( : , 1 ) ans = 1 4 7 >> A( 2 : 3 , 1 : 2 ) ans = 4 5 7 8 É possível fazer referência explícita a algumas linhas ou colunas. Colocam-se os números das linhas e colunas dentro de colchetes F L / L V P 23 2.6. MANIPULAÇÃO MATRICIAL E VETORIAL CAPÍTULO 2. INTRODUÇÃO Exemplo 32 >> A( [ 1 3 ] , [ 1 3 ] ) ans = 1 3 7 10 Um outro uso para os dois pontos (:) é no empilhamento das colunas de uma matriz qualquer. No caso de vetores, obteremos sempre o vetor coluna Exemplo 33 >> A=[1 2 ;3 4 ;5 6 ] ; >> B=A( : ) B = 1 3 5 2 4 6 2.6.3 Usando Vetores de 0 e 1 na Indexação Você pode usar vetores de "uns", usualmente criados a partir de operadores relacionais no refe- renciamento de submatrizes. Suponha que A é uma matriz de dimensão m-por-n e L um vetor linha de "zeros"e "uns"de dimensão m, então Exemplo 34 >> L=[1 1 1 ] ; >> A(L , : ) ans = 1 2 1 2 1 2 F L / L V P 24 CAPÍTULO 2. INTRODUÇÃO 2.6. MANIPULAÇÃO MATRICIAL E VETORIAL especifica as linhas de A cujos elementos de L são não nulos. Ou seja, os uns de L apontam para as linhas de A. O exemplo a seguir mostra como extrair de X as linhas cuja terceira coluna é maior ou igual a 100. Exemplo 35 >> L = X( : , 3 ) > 100 ; >> Y = X(L , : ) ; 2.6.4 Matrizes Vazias A declaração >> X=[ ] atribui a matriz de dimensão zero-por-zero à X, sendo possível usar a variável X em cálculos. Criar a matriz X vazia é diferente do que apagar a variável X com o comando clear X. Com o uso de matrizes vazias é possível remover linhas e colunas de uma matriz, como mostra o exemplo a seguir que apaga as colunas 2 e 4 da matriz A: >> A( : , [ 2 4 ] ) = [ ] 2.6.5 Matrizes Especiais Existe uma coleção de funções que geram matrizes que são normalmente encontradas nos proble- mas de álgebra linear e processamento de sinais. compan gera a matriz a partir do polinômio caraterístico diag matriz diagonal pascal constrói o triângulo de Pascal zeros matriz de "zeros" ones matriz de "uns" eye matriz identidade logspace vetores espaçados logaritmicamente linspace vetores espaçados linearmente rand elementos randômicos uniformemente distribuído randn elementos randômicos normalmente distribuídos etc ... F L / L V P 25 2.7. ANÁLISE DE DADOS CAPÍTULO 2. INTRODUÇÃO 2.6.6 Construindo Matrizes a partir de Matrizes É possível formar matrizes maiores a partir de matrizes menores, envolvendo as matrizes menores entre colchetes. Por exemplo, se A é uma matriz quadrada, Exemplo 36 >> A=[1 2 ;3 4 ] A = 1 2 3 4 >> C = [A A’ ; ones ( s i z e (A) ) A.^2 ] C = 1 2 1 3 3 4 2 4 1 1 1 4 1 1 9 16 cria a matriz C com o dobro do tamanho de A. Note que na construção de matrizes usando matrizes, as dimensões das matrizes menores devem ser compatíveis ou então aparecerá uma mensagem de erro. 2.7 Análise de Dados Esta seção apresenta uma introdução à análise de dados. Técnicas mais poderosas estão disponíveis usando funções de álgebra linear e funções de processamento de sinais na seção ?? (polinômios e processamento de sinais). 2.7.1 Convenção Por convenção, as diferentes variáveis em um conjunto de dados são colocadas em colunas, per- mitindo observação vertical dos dados através das linhas. Portanto, um conjunto de dados de 50 amostras de 13 variáveis é armazenado numa matriz de dimensão 50-por-13. O conjunto de dados armazenados na matriz "count" será usado para ilustrar o uso de algumas funções Exemplo 37 >> count = [ 11 57 291 43 178 1011 F L / L V P 26 CAPÍTULO 2. INTRODUÇÃO 2.7. ANÁLISE DE DADOS 38 163 1095 61 420 2407 12 59 287 ] Para esse exemplo temos 5 observações para 3 variáveis. Isso pode ser obtido como segue Exemplo 38 >> cont =[11 57 291 ;43 178 1011;38 163 1095;61 420 2407;12 59 287 ] cont = 11 57 291 43 178 1011 38 163 1095 61 420 2407 12 59 287 >> [ n , p]= s i z e ( cont ) n = 5 p = 3 Um grupo de funções (abaixo) confere a capacidade de análise de dados básica max máximo valor min mínimovalor mean valor médio median mediana std desvio padrão sort ordenação sum soma dos elementos prod produtos de elementos cumsum soma cumulativa dos elementos cumprod produto cumulativo dos elementos diff aproximação numérica da derivada corrcoef coeficientes de correlação cov m atriz de covariância var variância Para argumentos vetoriais não faz diferença se o vetor é linha ou coluna. Para arrays as funções são orientadas por colunas. F L / L V P 27 2.8. FUNÇÕES MATRICIAIS CAPÍTULO 2. INTRODUÇÃO Exemplo 39 >> mx=max( cont ) mx = 61 420 2407 >> mu=mean( cont ) mu = 1 .0 e+03 ⇤ 0 .0330 0 .1754 1 .0182 >> sigma=std ( cont ) sigma = 21.4126 147.9503 865.7639 2.7.2 Ajuste de Curvas Uma das alternativas possíveis para encontrarmos os coeficientes de p(x) a partir de dados tabelados é através da função polyfit, onde n é o grau do polinômio. p(x) = c1x d + c2x d�1 + · · ·+ c n A sintaxe usada é a seguinte, onde x é a abscissa, p o valor da função para cada x(i) e n o grau do polinômio. >> c=p o l y f i t (x , p , n) 2.8 Funções Matriciais 2.8.1 Autovalores e Autovetores Se A é uma matriz n-por-n, os n números � que satisfazem a equação Ax = �x, são os autovalores de A. Eles são encontrados usando >> e i g (A) Se o comando for usado com dois parâmetros de saída, obteremos os autovalores em D e os autovetores em X >> [X,D]= e i g (A) F L / L V P 28 CAPÍTULO 2. INTRODUÇÃO 2.9. POLINÔMIOS E PROCESSAMENTO DE SINAIS 2.8.2 Norma, Posto e Condicionamento As funções que calculam a norma, posto e número de condicionamento de uma matriz são: cond número de condicionamento usando norma-2 norm norma-1, norma-2, norma-F e norma-1 rank posto da matriz rcond estimativa do condicionamento 2.9 Polinômios e Processamento de Sinais Ambos processadores possuem funções para manipulação polinomial e para o processamento digital de sinais. Essas funções operam primordialmente com vetores. 2.9.1 Representação de Polinômios Polinômios são representa como vetores linha contendo os coeficientes ordenados em ordem de- crescente dos expoentes. Por exemplo, o polinômio característico de Exemplo 40 >> A=[1 2 3 ;4 5 6 ;7 8 0 ] A = 1 2 3 4 5 6 7 8 0 >> p=poly (A) p = 1.0000 �6.0000 �72.0000 �27.0000 Esta é a representação do polinômio s3� 6s2� 72s� 27 . As raízes dessa equação são Exemplo 41 >> r=roo t s (p) r = 12.1229 �5.7345 �0.3884 Essas raízes são os mesmos que os autovalores da matriz A. Pode-se reconstruir o polinômio original com a função poly F L / L V P 29 2.9. POLINÔMIOS E PROCESSAMENTO DE SINAIS CAPÍTULO 2. INTRODUÇÃO Exemplo 42 >> p2=poly ( r ) p2 = 1.0000 �6.0000 �72.0000 �27.0000 Considere os polinômios a(s) = s2 + 2s + 3 e b(s) = 4s2 + 5s + 6. O produto dos polinômios é a convolução dos seus coeficientes Exemplo 43 >> a=[1 2 3 ] ; b=[4 5 6 ] ; >> c=conv (a , b) c = 4 13 28 27 18 Você pode utilizar a convolução inversa para dividir dois polinômios, e no caso do exemplo, obter b novamente. Exemplo 44 >> [ q , r ]=deconv ( c , a ) q = 4 5 6 r = 0 0 0 0 0 A lista de funções de polinômios inclui: poly polinômio característico roots raízes de um polinômio polyval cálculo do valor numérico do polinômio polyvalm cálculo do polinômio de matrizes conv multiplicação (convolução) deconv divisão (deconvolução) residue expansão em frações parciais polyder derivada do polinômio polyfit ajuste polinomial de curva F L / L V P 30 CAPÍTULO 2. INTRODUÇÃO 2.10. FUNÇÕES DE FUNÇÕES 2.9.2 Processamento de Sinais Vetores são usados, por exemplo, para armazenar sinais de dados amostrados, ou sequências, para o processamento dos sinais. Para sistemas com múltiplas entradas, cada linha da matriz corresponde a uma amostra. O MATLAB básico contém as funções a seguir, enquanto que o Signal Processing Toolbox contém muitas funções adicionais. abs magnitude complexa angle angulo de fase conv convolução deconv deconvolução fft transformada rápida de Fourier ifft transformada rápida inversa de Fourier fftshift alterna quadrantes de matrizes fft2 FFT de duas dimensões ifft2 FFT inversa de duas dimensões fftshift rearranja os resultados da FFT conv2 convolução de duas dimensões 2.9.3 Filtragem de Dados A função, >> y=f i l t e r (b , a , x ) filtra os dados do vetor x com o filtro descrito pelos vetores a e b, criando o dado y filtrado A estrutura do filtro é dada a seguir pela sua função de transferência de tempo discreta H(z) = Y(z) X(z) = b(1) + b(2)z �1 + · · ·+ b(nb)z�(nb�1) 1 + a(2)z�1 + · · ·+ a(na)z�(na�1) 2.10 Funções de Funções Quando as operações de calculo, não são feitas sobre matrizes numéricas, mas com funções mate- máticas, ela passam a receber o nome de funções de funções (funfun), e incluem: Integração numérica Equações não lineares e otimização F L / L V P 31 2.10. FUNÇÕES DE FUNÇÕES CAPÍTULO 2. INTRODUÇÃO Solução de equações diferenciais etc Para o uso das funções de funções, é usual representar as funfun através de arquivos-M (M-files). f(x) = 1 (x� 0, 3)2 + 0, 01 + 1 (x� 0, 9)2 + 0, 04 � 6 foi codificada num arquivo com extensão .m, por exemplo chamado humps.m, cuja listagem é mostrada a seguir: Exemplo 45 % l i s tagem do arquivo humps .m func t i on y = humps(x ) y = 1 . / ( ( x� .3) .^2 + . 0 1 ) +1./((x� .9) .^2 + . 0 4 ) � 6 ; end O gráfico dessa função é obtido como segue >> x = �1 : . 01 : 2 ; >> p lo t (x , humps(x ) ) O resultado é visto na figura 2.3 Figura 2.3: humps(x) F L / L V P 32 CAPÍTULO 2. INTRODUÇÃO 2.10. FUNÇÕES DE FUNÇÕES 2.10.1 Integração Numérica Uma função, tal como humps , pode ser integrada numericamente pelo processo chamado de quadratura que é uma funfun denomindada quad. Exemplo 46 >> q = quad (@humps , 0 , 1 ) q = 29.8583 Note que o primeiro argumento da função quad é o nome de uma função. Isso mostra porque essa função é chamada função de função (é uma função que opera com outras funções). Os outros dois argumentos são os limites de integração. 2.10.2 Equações Não Lineares e Funções de Otimização Estes aplicativos permitem algumas funções para a manipulação de equações não lineares e para otimizações. fminsearch minimo de uma função multivariável fzero zero de uma função de uma variável Continuando com o exemplo definido pela função humps.m, a localização do mínimo da função na região de 0.5 a 1 é calculada com fminsearch : Exemplo 47 >> xm = fminsearch ( ’ humps ’ , 0 . 5 , 1) xm = 0.6370 e o seu valor no mínimo é >> y = humps(xm) y = 11.2528 A localização do zero da função que está próximo de x = 0 e de x = 1 é, >> xz1 = f z e r o ( ’ humps ’ , 0 ) xz1 = �0.1316 >> xz2 = f z e r o ( ’ humps ’ , 1 ) xz2 = F L / L V P 33 2.11. GRÁFICOS CAPÍTULO 2. INTRODUÇÃO 1 .2995 No Optimization Toolbox há inúmeras outras funções como, ffgoalattain otimização de metasl fmincon minimização com restrições fminsearch minimização sem restrições fsolve solução de equações algébricas não lineares fzero busca de zeros fminimax solução do problema minimax linprog programação linear quadprog programação quadrática 2.10.3 Equações Diferenciais Duas das funções disponíveis para a solução de equações diferenciais ordinárias são: ode23 método Runge-Kutta de ordem baixa ode45 método Runge-Kutta de ordem média Considere a equação diferencial de segunda ordem conhecida como equação de Van der Pol. ẍ+ � x2 + 1 � ẋ+ x = 0 Esta equação pode ser escrita como um sistema de equações diferenciais de primeira ordem ẋ1 = x1 (1� x2)� x2 ẋ2 = x1 O primeiro passo para simular este sistema é criar um arquivo que contem este sistema de equações diferenciais. Chamaremos este arquivo de vdpol.m Para a solução numérica de equações diferenciais recomenda-se também o SIMULINK que é uma extensão gráfica do MATLAB para a simulação de equações diferenciais, porem opção não dispo- nível no OCTAVE. • Opção ao Simulink é o aplicativo SciLab 2.11 Gráficos O sistema gráfico de ambos aplicativos, oferecem uma variedade de técnicas sofisticadas para representar e visualizar dados. São funções gráficas em 2-D e 3-D. F L / L VP 34 CAPÍTULO 2. INTRODUÇÃO 2.11. GRÁFICOS 2.11.1 Gráficos 2-D Uma variedade de funções para a visualização de dados em duas dimensões (2?D), estão disponí- veis. 2.11.2 Funções Gráficas Elementares A lista abaixo sumariza as funções gráficas básicas. Elas diferem apenas na escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalas são ajustadas automaticamente para acomodar os dados de entrada. plot gráfico de vetores ou de colunas de matrizes loglog escala logarítmica nos dois eixos semilogx escala logarítmica no eixo x e linear em y semilogy escala logarítmica no eixo y e linear em x title adiciona um título ao gráfico xlabel adiciona um nome ao eixo x ylabel adiciona um nome ao eixo y text mostra um texto na posição especificada gtext coloca o texto no gráfico usando o mouse grid coloca linhas de grid 2.11.3 Criando um Gráfico Se y é um vetor, plot(y) produz um gráfico linear dos elementos de y em função do indexador de y. Se você especificar dois vetores como argumentos, plot(x,y) produz um gráfico de y versus x. F L / L V P 35 2.11. GRÁFICOS CAPÍTULO 2. INTRODUÇÃO Você pode também especificar vários conjuntos de dados e definir o estilo da linha e sua cor para cada conjunto de dados, tudo isso num mesmo comando: >> 0 : p i /100:2⇤ pi ; >> x = s in ( t ) ; >> y1 = s in ( t + 0 . 2 5 ) ; >> y2 = s in ( t + 0 . 5 ) ; >> p lo t (x , y1 , ’ r � ’ ,x , y2 , ’ g��’) >> t i t l e ( ’ Defasagem ’ ) >> x l ab e l ( ’ x=s i n ( t ) ’ ) >> y l ab e l ( ’ y=s i n ( t +) ’) A inserção de label se faz de forma diferentes no MATLAB e no OCTAVE. • No MATLAB o comando xlabel(’x=sin(t)’) é colocado entre apostrofes 0 • no OCTAVE a mesma função é colocada ente aspas ” xlabel("x=sin(t)") 2.11.4 Estilos de Linhas, Marcadores e Cores Tal como se mostrou no exemplo anterior, você pode passar um caractere como um argumento à função plot para especificar um dos vários estilos de linha, símbolos e cores. Na declaração plot(X,Y,S), S é uma string de 1, 2 ou 3 caracteres (delimitados por apóstrofes) com as funções definidas pela tabela a seguir. Se você não especificar uma cor, ele usa as cores da tabela auto- maticamente. F L / L V P 36 CAPÍTULO 2. INTRODUÇÃO 2.11. GRÁFICOS Símbolo Cor Símbolo Linha y amarela . ponto m magenta o circulo c ciano x marca x r vermelho + marca + g verde * marca * b azul - solida w branca : pontilhada k preta -. traço-ponto – tracejada s quadrado d diamante _ triângulo (p/ baixo) ^ triângulo (p/ cima) < triângulo (p/ esquerda) > triângulo (p/ direita) P pentagrama h hexagrama 2.11.5 Adicionando Linhas num Gráfico Existente Você pode adicionar outras curvas em um gráfico que já foi construído usando o comando hold. Quando você seleciona hold on, o MATLAB não remove as linhas atuais, ao invés disso ele adiciona as linhas atuais ao gráfico atual. O que ele pode fazer é mudar a escala dos eixos automaticamente se os novos dados não se acomodarem dentro da escala anterior. 2.11.6 Dados Imaginários e Complexos Quando os argumentos da função plot são complexos, isto é, eles têm parte imaginária diferente de zero, a parte imaginária é ignorada exceto quando plot é usado com um único argumento. Nesta situação, o comando é um comando gráfico resumido da parte real versus a parte imaginária. Por- tanto, plot(z), quando z é um vetor ou matriz complexa, é equivalente à, plot(real(z),imag(z)). Para ilustrar isso, o exemplo a seguir usa a distribuição dos autovalores de uma matriz 20-por-20 randômica: >> p lo t ( e i g ( randn (20 , 2 0 ) ) , ’ x ’ ) F L / L V P 37 2.11. GRÁFICOS CAPÍTULO 2. INTRODUÇÃO 2.11.7 Exibindo Gráficos de Matrizes A função plot pode ter um único argumento, como plot(Y). Ela desenha uma curva para cada coluna de Y. O eixo x é formado pelo índice de cada linha. Se X e Y são matrizes, plot(X,Y) exibe o gráfico das colunas de X versus colunas de Y. F L / L V P 38 CAPÍTULO 2. INTRODUÇÃO 2.11. GRÁFICOS 2.11.8 Importando Dados Você pode importar e exibir o gráfico de dados gerados fora do ambiente. Suponha você tenha um arquivo chamado dados.dat contento valores de duas funções e da variável independente: 2 . 3 1 .0 1 .0 3 .1 1 .9 2 .0 4 .5 2 .2 3 .0 5 .6 2 .6 4 .0 4 .8 3 .5 5 .0 4 .7 4 .7 6 .0 4 .4 5 .3 7 .0 4 .0 6 .0 8 .0 4 .2 7 .1 9 .0 O comando load dados.dat produz uma matriz chamada dados, 9-por-3. A seguir, mostra-se como renomear cada uma das variáveis e como exibir o gráfico de cada função separadamente. >> load dados . dat >> F1 = dados ( : , 1 ) ; >> F2 = dados ( : , 2 ) ; >> X = dados ( : , 3 ) ; >> subplot (211) , p l o t (X, F1) >> subplot (212) , p l o t (X, F2) F L / L V P 39 2.11. GRÁFICOS CAPÍTULO 2. INTRODUÇÃO 2.11.9 Funções Gráficas Especializadas em 2-D Os processadores incluem uma variedade de funções especializadas, conforme descrito resumida- mente a seguir. bar gráfico de barras compass gráfico de ângulos com setas errorbar gráfico de barras de erros feather gráfico de ângulos fplot calcula e exibe o gráfico de uma função hist cria um histograma polar gráfico em coordenadas polares quiver cria um gráfico de um gradiente rose histograma em ângulo stairs gráfico similar ao de barras sem linhas internas fill desenha um polígono e preenche o interior 2.11.10 Gráfico de Funções Matemáticas Você pode exibir o gráfico de uma função,y = f(x) . A solução pela força bruta é calcular a função para algumas centenas de pontos no intervalo de interesse. Por exemplo, a função a seguir oscila com frequência tendendo para infinito quando x = 0, 5 . No exemplo, a função é exibida no intervalo [0,1]. Neste caso, a função fplot é mais efetiva para obtermos a representação gráfica da função, pois ela escolhe automaticamente uma quantidade maior de pontos na faixa que é necessário maior resolução gráfica. Para usar a função fplot, primeiro crie um arquivo que conterá F L / L V P 40 CAPÍTULO 2. INTRODUÇÃO 2.12. CONTROLES DE FLUXO a função a ser exibida por meio de um gráfico, por exemplo com o nome fofx.m f unc t i on y = f o f x (x ) y = cos ( tan ( p i ⇤x ) ) ; end Agora basta passar o nome da função como argumento de fplot. >> fp l o t ( ’ f o fx ’ , [ 0 1 ] , 25 ,20 ,10) 2.11.11 Gráficos 3-D Uma variedade de funções para a visualização de dados em 3?D, é oferecida. Contudo, não faremos um detalhamento, visto que o assunto é longo e pouco interessante para os nossos objetivos. 2.12 Controles de Fluxo Declarações para controle de fluxo tal como aqueles encontrados na maioria das linguagens de computador, são encontradas nestes aplicativos. O controle de fluxo torna o MATLAB mais do que uma calculadora científica, permitindo que seja usado como uma linguagem de programação de alto nível completa. F L / L V P 41 2.12. CONTROLES DE FLUXO CAPÍTULO 2. INTRODUÇÃO 2.12.1 FOR Versões própria dos loops DO ou FOR são disponíveis. Com isso é possível repetir um grupo de declarações por um número predeterminado de vezes. >> f o r i = 1 : n , x ( i ) = 0 , end impõe o valor "0"para todos os primeiros n elementos de x. Se n é menor que "1", a construção ainda é permitida, mas as declarações internas ao loop não são executadas. Se x não existe ou tem menos elementos que x, então espaços adicionais são alocados automaticamente. Você pode criar loops dentro de loops e pode fazer as declarações diretamente no prompt do MATLAB ou do OCTAVE, embora o uso de um M-file seja recomendado nestes casos. >> f o r i = 1 : 1 :m >> fo r j = 1 : 1 : n >> A( i , j ) = 1/( i+j �1); >> end >> end >> A A expressão do for é usualmente do tipo m : i : n, onde m é o valor inicial, n o final e i o incremento, sendo que esse pode ser negativo. F L / L V P 42 CAPÍTULO 2. INTRODUÇÃO 2.12. CONTROLES DE FLUXO 2.12.2 WHILE Tal como o for, a declaração while também é para realizar um grupo de declarações um certo número de vezes. A diferença básica é que no while, o controle do loop é feito por uma condição lógica. Para ilustrar, vamos resolver um problema: Qual é o primeiro inteiro n para o qual n! (fatorial de n) é um númerode 100 dígitos ? >> n = 1 ; >> whi le prod ( 1 : n) < 1 . e100 , n = n+1; end >> n A função prod realiza os produtos dos elementos do argumento. Logo, prod(1:n) é o fatorial de n. 2.12.3 IF e BREAK Os exemplos a seguir ilustram a utilização da declaração if. O primeiro exemplo mostra como um cálculo pode ser dividido em três casos dependendo do sinal e da paridade de n. >> i f n < 0 >> A = �1; >> e l s e i f rem(n , 2 ) == 0 >> A = 0 >> e l s e >> A = 1 >> end O segundo exemplo envolve um problema não resolvido da teoria dos números: Exemplo 48 Pegue um número i n t e i r o . Se e l e f o r par , d iv ida por do i s ; se f o r impar , mu l t i p l i que e l e por 3 e some 1 . Repita e s s e proce s so até que o i n t e i r o s e j a i g ua l a um. O problema é saber se e x i s t e algum i n t e i r o para o qual o proce s so nunca termina . Este programa ilustra as declarações while e if. Também é mostrado o uso da função input que interrompe a execução para a entrada de dados e da declaração break que permite interromper um loop. F L / L V P 43 2.13. ARQUIVO M CAPÍTULO 2. INTRODUÇÃO Exemplo 49 % Problema c l á s s i c o "3n+1" da t e o r i a dos números whi l e 1 n = input ( ’ Entre com n [ negat ivo aborta ] = ’ ) ; i f n <= 0 , break , end whi le n > 1 i f rem(n , 2 ) == 0 n = n/2 e l s e n = 3⇤n+1 end end end 2.13 Arquivo M A maneira mais simples de se usar estes processadores é no modo de comando. Quando você entra com uma linha de comando, ele processa e imediatamente mostra o resultado. Estes processadores também podem executar uma sequência de comandos que está armazenada num arquivo. Os arquivos que contém declarações são chamados M-files porque usam a extensão ?.m?. Por exemplo, o arquivo bessel.m contém declarações para o cálculo de funções Bessel. Um M-file consiste de uma sequência de declarações, podendo incluir referencias a outros M-files. Um M-file pode chamar ele próprio de forma recursiva. Você pode criar um M-file usando um editor de texto tal como o Bloco de Notas do Windows, ou outro qualquer. Dois tipos usuais de M-files são: lotes (scripts) e funções (functions). Arquivos scripts automatizam uma sequência de comandos. Arquivos de função permitem criar novas funções às existentes. Ambos, scripts e funções são arquivos texto tipo ASCII. 2.13.1 Arquivos Scripts O exemplo a seguir ilustra como calcular os primeiros 16 números de Fibonacci usando um ar- quivo script. Suponha que o nome do arquivo seja fibno.m. Digitando fibno (sem a extensão) no prompt, faz com os comandos contidos no arquivo sejam executados. Note que depois da execução do programa as variáveis f e i permanecem na área de trabalho (workspace). Verifique isso com who. Isso acontece porque os scripts operam globalmente com dados no workspace. Os demos fornecidos junto ao aplicativo, são bons exemplos de como usar scripts para realizar tarefas mais F L / L V P 44 CAPÍTULO 2. INTRODUÇÃO 2.13. ARQUIVO M complexas. Exemplo 50 % M� f i l e ( s c r i p t ) para c a l c u l a r números de Fibonacc i menores de 1000 f = [ 1 1 ] ; i = 1 ; whi l e f ( i ) + f ( i +1) < 1000 f ( i +2) = f ( i ) + f ( i +1); i = i + 1 ; end p lo t ( f ) 2.13.2 Arquivos de Funções Um M-file que contém a palavra function no início da primeira linha é um arquivo de função. Uma função difere de um script no fato de que argumentos podem ser passados; variáveis definidas e manipuladas no arquivo são locais à função e não operam globalmente no workspace. A função listada a seguir tem o nome media1.m. Exemplo 51 f unc t i on y = media1 (x ) % ca l c u l o da média % soma / m % i n i c i o do programa [m, n ] = s i z e ( x ) ; i f m == 1 m = n ; end y = sum(x ) / m; end Por exemplo, se z é um vetor de inteiros de 1 a 99, sua média pode ser calculada como se- gue: Exemplo 52 >> z = 1 : 9 9 ; >> media1 ( z ) F L / L V P 45 2.13. ARQUIVO M CAPÍTULO 2. INTRODUÇÃO ans = 50 A seguir, descreve-se alguns detalhes de mean.m: • A primeira linha declara o nome da função, os argumentos de entrada e os de saída. Sem esta linha, o arquivo é um script ao invés de função; • O símbolo % indica que o resto da linha é um comentário e deve ser ignorado; • As primeiras linhas documentam um M-file e são mostradas quando pedimos help media1 ; • As variáveis m, n e y são locais à função e não existem no workspace depois que do término da função. (Caso a variável já existisse antes da chamada de media1, ela continuaria existindo depois e inalterada); • Não foi necessário colocar os inteiros de 1 a 99 numa variável chamada x. De fato, nós usamos media1 com uma variável chamada z. O vetor z foi passado ou copiado dentro da função onde ela tornou-se uma variável local chamada x. Você pode criar uma função um pouco mais complexa que media1, chamada stat, que tam- bém calcula o desvio padrão. Neste exemplo ilustramos o uso de múltiplos argumentos de saída. Exemplo 53 f unc t i on [ mean , stdev ] = s t a t ( x ) [m, n ] = s i z e ( x ) ; f m == 1 m = n ; end mean = sum(x ) / m; stdev = sq r t (sum(x .^2)/m � mean . ^ 2 ) ; end Uma função que calcula o posto de uma matriz usa múltiplos argumentos de entrada: No caso geral teríamos múltiplos argumentos de entrada e de saída. Exemplo 54 f unc t i on r = rank (x , t o l ) % rank ( posto em Português ) da matr iz s = svd (x ) ; F L / L V P 46 CAPÍTULO 2. INTRODUÇÃO 2.13. ARQUIVO M i f ( narg in == 1) t o l = max( s i z e ( x ) ) ⇤ s (1 ) ⇤ eps ; end r = sum( s > t o l ) ; end Este exemplo também mostra o uso da variável permanente nargin para encontrar o número de argumentos de entrada. A variável nargout, embora não usada neste exemplo, contém o número de argumentos de saída. 2.13.3 Criando um Help para Seus Arquivos Pessoais Você pode criar um help online para os seus M-files pessoais entrando o texto em uma ou mais linhas de comentário, começando sempre pela segunda linha do arquivo. Por exemplo, o arquivo da função angle, Exemplo 55 f unc t i on p = angle (h) % ANGLE Phase ang le . % ANGLE(H) r e tu rn s the phase angles , in radians , o f a matrix with complex e lements . % Class support f o r input X: % f l o a t : double , s i n g l e % See a l s o ABS, UNWRAP. % Copyright 1984�2010 The MathWorks , Inc . % $Revis ion : 5 . 7 . 4 . 2 $ $Date : 2010/04/21 21 : 31 : 19 $ p = atan2 ( imag (h ) , r e a l (h ) ) ; têm 8 linhas contíguas de comentário a partir da segunda linha. Quando digitamos help angle, todo esse bloco é mostrado. O mecanismo de help ignora linhas de comentário que aparecem mais a frente, depois de uma declaração ou mesmo uma linha em branco 2.13.4 Informações Úteis Quando você chama uma função pela primeira vez, o processador compila a função e a coloca na memória. Ela estará então disponível para os usos subsequentes sem a necessidade de ser compilada. Permanecerá na memória até o final da seção ou até que você fique com pouca F L / L V P 47 2.13. ARQUIVO M CAPÍTULO 2. INTRODUÇÃO memória, acarretando na sua eliminação automática. O comando what mostra uma listagem dos M-files no diretório atual do disco. O comando type lista os M-files. De uma maneira geral, quando você digita um nome de algo no processado, por exemplo, whoopie, o interpretador do processador executa os seguintes passos: 1. Procura por whoopie como variável; 2. Verifica se whoopie é uma função interna; 3. Procura um o arquivo whoopie.m no diretório atual; 4. Procura um o arquivo whoopie.m nos diretórios especificados pelo path. 2.13.5 INPUT e PAUSE A função input permite obter dados do usuário. Exemplo 56 n = input ( ’ Entre com o va lo r de n = ’ ) interrompe a execução, mostra a frase na tela, espera, e então atribui o valor ou expressão digitada para a variável n. O comando pause interrompe a execução até que o usuário pressiona uma tecla qualquer. pause(n) interrompe por n segundos antes de continuar. 2.13.6 Variáveis Globais Cada função possui suas próprias variáveis locais que são separadas daquelas de outras funções e daquelas que estão no workspace. Contudo,se você declarar uma variável como global, todas as funções e o workspace vão enxergar a mesma variável. Para diferenciar das demais variáveis, costuma-se identificar uma variável global declarando-a com um nome longo e em letras maiúscu- las, embora isso não seja uma imposição. Suponha que você queira estudar o comportamento dos coeficientes ↵ e � no problema do modelo predador-vítima de Latka-Volterra. @ @t (y1) = y1 � ↵y2y1 @ @t (y2) = �y1 + �y2y1 Crie o arquivo lotka.m: F L / L V P 48 CAPÍTULO 2. INTRODUÇÃO 2.13. ARQUIVO M Exemplo 57 f unc t i on yp = lo tka ( t , y ) % modelo Votka�Voltera g l oba l ALFA BETA yp = [ y (1 ) � ALFA⇤y (1)⇤y ( 2 ) ; �y (2 ) + BETA⇤y (1)⇤y ( 2 ) ] ; end Interativamente, entre como as seguintes declarações: Exemplo 58 >> g loba l ALFA BETA >> ALFA = 0 . 0 1 ; >> BETA = 0 . 0 2 ; >> [ t , y ] = ode23 ( ’ lotka ’ , [ 0 10 ] , [ 1 ; 1 ] ) ; >> p lo t ( t , y ) Uma vez que ALFA e BETA são globais você pode alterá-las interativamente e novas soluções podem ser obtidas sem ter que editar nenhum arquivo e sem passar os valores como argumentos. 2.13.7 Variáveis Alfanuméricas Variáveis do tipo texto são introduzidas no sistema envolvendo o texto com quotas simples (após- trofos). Exemplo 59 >> s = ’Ola ’ s = Ola O texto é armazenado num vetor, um caracter por elemento. Desejando concatenar textos, use colchetes: Exemplo 60 >> s = [ s , ’ Pessoal ’ ] s = F L / L V P 49 2.14. MANIPULAÇÃO DE ARQUIVOS CAPÍTULO 2. INTRODUÇÃO Ola Pessoa l Valores numéricos são convertidos em variáveis do tipo texto via sprintf, num2str e int2str. Exemplo 61 >> c = 23 ; >>t i t l e ( [ ’A temperatura é ’ , num2str ( c ) , ’ graus C ’ ] ) 2.13.8 Função EVAL A função eval é usada com variáveis do tipo texto para implementar recursos de macros de texto. A função eval(t) força que o texto contido na variável t seja "resolvido". O exemplo a seguir mostra como usar o comando load para carregar 10 arquivos sequencialmente numerados: dados1.mat, dados2.mat, ... Exemplo 62 >> fname = ’ dados ’ ; >> f o r i = 1 :10 >> eva l ( [ ’ load ’ , fname , i n t 2 s t r ( i ) ] ) >> end A função eval é especialmente útil na passagem de argumentos de funções cujo parâmetro é um nome de outra função. Um exemplo típico é o função fplot que passa como argumento o nome da função a ser exibida: Exemplo 63 >> fp l o t ( ’ s in ’ , [ 0 10 ] ) 2.14 Manipulação de Arquivos Os comandos load e save recuperam e armazenam dados do workspace em disco. Os comandos dir, type, delete e cd servem à manipulação de arquivos. Para a maioria desses comandos devemos especificar o path, wildcards e o drive de destino como normalmente se faz no DOS. O comando type difere do comando type usual de uma forma importante. Se nenhuma extensão é F L / L V P 50 CAPÍTULO 2. INTRODUÇÃO 2.14. MANIPULAÇÃO DE ARQUIVOS especificada, considera-se a extensão ".m" como default. Portanto, esse comando é normalmente usado para obtermos uma rápida listagem de um M-file na teta do computador. O comando diary cria um diário (log) da sua seção na forma de um arquivo ASCII. Todos os comandos e resultados, exceto gráficos, são automaticamente acrescentados ao arquivo de diário. 2.14.1 Transferência de Dados Você pode introduzir dados de outros programas. Similarmente, você pode exportar dados para outros programas. Também é possível usar o formato usa para armazenar dados: MAT-files. 2.14.2 Importando Dados O melhor método de importar dados depende de quantos dados existem, qual o seu formato, etc. A seguir, listamos algumas opções: • Entre com os dados como uma lista explícita dos elementos. Se o número de elementos for pequeno (10-15 elementos) é mais simples digitar os dados explicitamente usando colchetes. • Crie um M-file e escreva os dados de forma explícita usando um editor de texto. • Carregue os dados de um arquivo ASCII. • Escreva um programa em C para converter seus dados no formato dos MAT-files e então use o comando load. • Importe os dados do Excel. 2.14.3 Exportando dados Para exportar dados também existem várias opções, das quais algumas são listadas a seguir: • Para matrizes pequenas use o comando diary para criar uma arquivo de diário e então liste as variáveis neste arquivo. Você pode, mais tarde, usar um editor de texto para manipular os dados. • Salve os dados num formato ASCII usando o comando save com a opção -ascii. F L / L V P 51 2.15. DEPURAÇÃO CAPÍTULO 2. INTRODUÇÃO Exemplo 64 >> A = rand ( 4 , 3 ) ; >> save temp . dat A �a s c i i cria um arquivo ASCII chamado temp.dat • Salve os dados como MAT-files usando o comando save e então escreva um programa em C ou FORTRAN para reformatar os dados conforme necessário para a aplicação. • Exporte os dados para o Excel. 2.15 Depuração Embora o MATLAB seja uma linguagem menos complexa que outras linguagens de programação, ele tem sua sintaxe própria e você pode precisar corrigir alguns erros. O MATLAB encontra erros de sintaxe durante a fase de compilação e esses erros, em geral, são simples de corrigir. O MATLAB também encontra erros na fase de execução do programa; esses erros tendem a ser mais difíceis de solucionar por causa do workspace local às funções ser perdido quando um erro interrompe a execução. Quando isto ocorre, retornamos ao workspace base do MATLAB. Se você usou ponto-e-vírgula para suprimir os resultados intermediários da tela, não terá como saber onde o erro ocorreu. Para mostrar os resultados intermediários, você pode usar um dos métodos a seguir: • Remova os ponto e vírgula de interesse; • Use a declaração keyboard para permitir que o workspace seja examinado no ponto da declaração; • Torne a primeira linha da função uma linha de comentário de tal forma que a função possa ser executada como um script, fazendo com que os resultados intermediários sejam acessíveis no workspace base; • Use o depurador. F L / L V P 52 Capítulo 3 Toolbox de Matemática Simbólica Com o Toolbox de processamento simbólico é possível resolver e manipular expressões matemáti- cas simbólicas resolvendo analiticamente, por exemplo, diferenciações, integrações, simplificações, transformadas, solução de equações etc. Para Inicialização • O MATLAB se apresenta com o pacote simbólico instalado e pronto para uso. • No OCTAVE é necessário carregar o pacote symbolic, através do comando: >> pkg load symbol ic 3.1 Variáveis Simbólicas Para declarar, por exemplo, as variáveis x e y como objetos simbólicos use o comando syms: >> syms x y Depois de criados os objetos simbólicos, se podem realizar cálculos matemáticos tais como: >> z = x + x + y z = 2⇤x + y 3.1.1 Matriz de variáveis simbólicas Depois de declarar as variáveis simbólicas elas podem fazer parte da definição de uma ma- triz. Exemplo 65 >> syms a b c d e f g h i >> A = [ a b c ; d e f ; g h i ] 53 3.1. VARIÁVEIS SIMBÓLICAS CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA A = [ a , b , c ] [ d , e , f ] [ g , h , i ] Note que não é necessário declarar explicitamente a matriz A como um objeto simbólico. Agora podemos operar simbolicamente com a matriz A Exemplo 66 >> determinante = det (A) determinante = a⇤e⇤ i � a⇤ f ⇤h � b⇤d⇤ i + b⇤ f ⇤g + c⇤d⇤h � c⇤e⇤g >> B = A + A B = [ 2⇤a , 2⇤b , 2⇤ c ] [ 2⇤d , 2⇤e , 2⇤ f ] [ 2⇤g , 2⇤h , 2⇤ i ] 3.1.2 Simplificações Existem algumas funções que alteram a forma de uma função simbólica. Os exemplos a se- guir ilustram alguns desses comandos: pretty, collect, expand, horner, factor, simplify. Exemplo 67 >> syms x >> f = x^3 � 6⇤x^2 + 11⇤x � 6 ; >> pre t ty ( f ) % v i s u a l i z a ç ã o e l e gan t e 3 2 x � 6 x + 11 x ? 6 >> syms x >> f = (x�1)⇤(x�2)⇤(x�3); >> c o l l e c t ( f ) % agrega potênc i a s i g u a i s x^3 � 6⇤x^2 + 11⇤x ? 6 >> syms a x y F L / L V P 54 CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA 3.1. VARIÁVEIS SIMBÓLICAS >> f = a⇤(x + y ) ; >> expand ( f ) % d i s t r i b u t i v a a⇤x + a⇤y >> syms x >> f = x^3 � 6⇤x^2 + 11⇤x � 6 ; >> horner ( f ) % forma aninhada x⇤(x⇤(x � 6) + 11) � 6 >> syms x >> f = x^3 �6⇤x^2 + 11⇤x � 6 ; >> f a c t o r ( f ) % f a t o r de menor ordem (x � 3)⇤ ( x � 1)⇤ ( x � 2) >> syms x y >> f = exp (x ) ⇤ exp (y ) ; >> s imp l i f y ( f ) % s imp l i f i c a ç ã o exp (x + y) 3.1.3 Substituições Use o comando subs para realizar substituições diversas. Exemplo 68 >> syms x >> f = 2⇤x^2 � 3⇤x + 1 ; >> subs ( f , {x} , {1/3} ) % x 1/3 ans = 2/9 >> syms x y >> f = x + y ; >> subs ( f , {x , y} , {2 ,�3} ) % x 2 , y �3 ans = �1 >> syms x y m F L / L V P 55 3.1. VARIÁVEIS SIMBÓLICAS CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA >> f = x + y ; >> subs ( f , {x , y} , {2 , m} ) % x 2 , y m ans = m+2 3.1.4 Diferenciação Simbólica Use o comando diff para realizar diferenciações. Exemplo 69 >> syms x >> f = s i n (x )^2 ; >> d i f f ( f ) ans = 2⇤ cos ( x )⇤ s i n (x ) >> syms x y >> f = s i n (x)^2 + cos (y )^2 ; d i f f ( f , y ) % der ivada p a r c i a l de f em r e l a ç ão a y ans = �2⇤cos ( y )⇤ s i n (y ) 3.1.5 Integração Simbólica Use o comando int para realizar integrações simbólicas. Exemplo 70 >> syms x y >> f = x^2 + y^2; >> in t ( f , y ) % i n t e g r a l i n d e f i n i d a de f em re l a ç ão a y ans = x^2⇤y + y^3/3 >> syms x y >> f = x^2 + y^2; >> in t ( f , y , 3 , 5) % i n t e g r a l d e f i n i d a desde 3 até 5 F L / L V P 56 CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA 3.1. VARIÁVEIS SIMBÓLICAS ans = 2⇤x^2 + 98/3 3.1.6 Solução de Equações Algébricas Use o comando solve para determinar a solução de equações ou sistemas de equações. Veja alguns exemplos a seguir e note que ao definir a equação utiliza-se o sinal (==). Caso o sinal (==) seja omitido, o lado direito da equação é suposto nulo. Exemplo 71 >> syms x >> f = ( x^2 + 5⇤x == �6 ) ; >> so l v e ( f ) ans = �3 �2 >> syms x >> f = ( x^2 + 5⇤x � 6 ) ; >> so l v e ( f ) ans = �3 �2 Nas equações com múltiplas variáveis simbólicas, pode-se especificar para qual variável a equação deve ser resolvida. No exemplo a seguir a função depende de x e y e sua solução é determinada em relação a y. Exemplo 72 >> syms x y >> so l v e (6⇤x^2 � 6⇤x^2⇤y + x⇤y^2 � x⇤y + y^3 � y^2 == 0 ,y ) ans = 1 2⇤x �3⇤x F L / L V P 57 3.1. VARIÁVEIS SIMBÓLICAS CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA A seguir mostra-se uma forma possível de representar e resolver um sistema de duas equações e duas incógnitas. Exemplo 73 >> syms x1 x2 >> f1 = ( x1⇤x2 + x2 == 3 ) ; >> f2 = ( x1 � x2 == 1 ) ; >> [ xx1 , xx2 ] = so l v e ( f1 , f2 , x1 , x2 ) xx1 = xx2 = 2 1 �2 �3 A verificação da exatidão da solução pode ser feita com o comando subs, atribuindo os valores numéricos das soluções encontradas nas funções Exemplo 74 >> subs ( f1 , {x1 , x2 } , { xx1 (1 ) , xx2 (1 ) } ) >> subs ( f2 , {x1 , x2 } , { xx1 (2 ) , xx2 (2 ) } ) ans = ans = 3 == 3 1== 1 3.1.7 Gráficos de Funções Simbólicas O comando ezplot é uma das formas mais imediatas para se exibir o gráfico de uma função explícita ou mesmo implícita. Exemplo 75 >> syms x >> ezp l o t ( x^3 � 6⇤x^2 + 11⇤x � 6) >> t i t l e ( ’ Função Exp l í c i t a : y = x^3 � 6⇤x^2 + 11⇤x � 6 ’ ) Exemplo 76 >> syms x y >> ezp l o t ( ( x^2 + y^2)^4 == (x^2 � y^2)^2 , [�1 1 ] ) F L / L V P 58 CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA 3.1. VARIÁVEIS SIMBÓLICAS >> t i t l e ( ’ Função Imp l í c i t a no i n t e r v a l o [ �1 ,1 ] ’ 3.1.8 Solução de Equações Diferenciais Para ilustrar como usar o comando dsolve, considere a equação diferencial ordinária de 1a ordem com condição inicial . @ @t � y(t) � = �y(t) F L / L V P 59 3.1. VARIÁVEIS SIMBÓLICAS CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA Exemplo 77 >> syms x ( t ) >> f ( t ) = ( d i f f ( x ) == �x ) ; >> [ xx ] = dso lve ( f ( t ) , x (0 ) == �1) xx = �exp(�t ) Considere agora a equação diferencial ordinária de 2a ordem com condições iniciais y(0) = 1 e y(0) = 0. @2 @t2 � y(t) � = cos (2t)� y(t) Exemplo 78 >> syms y ( t ) >> Dy = d i f f ( y ) ; >> y( t ) = dso lve ( d i f f (y , 2) = = cos (2⇤ t ) � y , y (0 ) = = 1 , Dy(0) = = 0 ) ; >> y( t ) = s imp l i f y ( y ) ; >> pre t ty ( y ( t ) ) / t \ 4 8 s i n | ��� | \ 2 / 1 � ���������������� 3 Muitas vezes as equações diferenciais estão na forma de um sistema de equações. Para ilustrar um caso desses considere o sistema a seguir com x1(0) = 1 e x2(0) = 0. @ @t (x1 (t)) = x2 (t) @ @t (x2 (t)) = �6x1 (t)� 5x2 (t) F L / L V P 60 CAPÍTULO 3. TOOLBOX DE MATEMÁTICA SIMBÓLICA 3.1. VARIÁVEIS SIMBÓLICAS Exemplo 79 >> syms x1 ( t ) x2 ( t ) >> f1 ( t ) = ( d i f f ( x1 ) = = x2 ) ; >> f2 ( t ) = ( d i f f ( x2 ) = = �6⇤x1 �5⇤x2 ) ; >> [ xx1 , xx2 ] = dso lve ( f 1 ( t ) , f 2 ( t ) , x1 (0 ) = = 1 , x2 (0 ) = = 0 ) xx1 = ( exp(�3⇤ t )⇤(18⇤ exp ( t ) � 12))/6 xx2 = �exp(�3⇤ t )⇤ (6⇤ exp ( t ) � 6) F L / L V P 61 Capítulo 4 Transformada de Laplace Os comandos laplace e ilaplace determinam a transformada e anti-transformada de Laplace, respectivamente. Função dada Comandos MATLAB e OCTAVE » syms s t f(t) = 2e �5t � 5e�2t » F=laplace(2*exp(-5*t)-5*exp(-2*t)) » F=collect(F) F= (�3 ⇤ s� 21)/(s2 + 7 ⇤ s+ 10) » syms s t f(t) = e �t cos (3t) » F = laplace( exp(-t)*cos(3*t)) 7 F= (s+ 1)/((s+ 1)2 + 9) » syms s t F(s) = s s2 + 4s+ 5 » f = ilaplace()s/(s2 + 4 ⇤ s+ 5)) f= exp(�2 ⇤ t) ⇤ (cos(t)� 2 ⇤ sin(t)) » syms s t F(s) = 5 (s+ 1) (s+ 2)2 » f = ilaplace(5/((s+ 1) ⇤ (s+ 2)2)) f= 5 ⇤ exp(�t)� 5 ⇤ exp(�2 ⇤ t)� 5 ⇤ t ⇤ exp(�2 ⇤ t) 62 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE 4.0.1 Transformada Z Os comandos ztrans e iztrans determinam a transformada Z e anti-transformada Z, respectiva- mente. Função dada Comandos MATLAB e OCTAVE » syms k z f(k) = sen(K) » f=sin(k); » F=ztrans(f,k,z) (z ⇤ sin(1))/(z2 � 2 ⇤ cos(1) ⇤ z + 1) » syms z k » F = z/((z + 0.2) ⇤ (z + 0.5) ⇤ (z � 1)); » f = iztrans(F, k); » disp(’f(k)=’) F(z) = z (z + 0, 2) (z + 0, 5) (z � 1) » pretty(f) f(k)= k k 20 (�1/2) 25 (�1/5) ������������ � ������������ + 5/9 9 9 4.1 Toolbox de Sistema de Controle No Toolbox de Sistema de Controle, os modelos de sistemas Lineares e Invariantes no Tempo (LTI) são representados por Objetos. Os objetos de modelos são estruturas de dados e atributos que permitem a manipulação de sistemas LTI com entidades únicas. Os objetos de modelos podem representar sistemas escalares, ou seja, de entrada e saída únicas (SISO) e sistemas vetoriais de entradas e saída múltiplas (MIMO), tanto de tempo contínuo como de tempo discreto. Os sistemas LTI podem ser especificados no espaço de estados (objeto SS), por meio e funções de transferência (objeto TF) e modelos dados pelos seus zeros, polos e ganho (objeto ZPK). 4.1.1 Função de Transferência Uma função de transferência SISO é caraterizada pelo seu numerador e denominador F(s) = s s2 + 2s+ 10 F L / L V P 63 4.1. SISTEMA DE CONTROLE CAPÍTULO 4. TRANSFORMADA DE LAPLACE é representada por um objeto TF que contém os coeficientes do polinômio do numerador e do denominador: Exemplo 80 >> numerador=[1 0 ] ; >> denominador=[1 2 1 0 ] ; >> F=t f ( numerador , denominador ) F = s �������������� s^2 + 2 s + 10 Continuous�time t r a n s f e r func t i on . Matrizes de transferência (funções de transferência MIMO) são formadas por elementos que são funções de transferência. F(s) = 2 4 s s2 + 2s+ 10 s� 1 s+ 1 3 5 = " F1(s) F2(s) # Exemplo 81 >> F1 = t f ( [ 1 0 ] , [ 1 2 10 ] ) ; >> F2 = t f ( [ 1 �1 ] , [ 1 1 ] ) ; >> F = [ F1 ; F2 ] F = From input to output . . . s #1: �������������� s^2 + 2 s + 10 s � 1 #2: ����� s + 1 Continuous�time t r a n s f e r func t i on . Uma maneira talvez mais visual de definir uma função de transferência é definindo primeiro a função ’s’. Por exemplo, veja como isso seria feito para o caso da função de transferência F(s) = s s2 + 2s+ 10 F L / L V P 64 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE Exemplo 82 >> S=t f ( ’ s ’ ) ; >> F=S/(S^2+2⇤S+10) F = s �������������� s^2 + 2 s + 10 Continuous�time t r a n s f e r func t i on . 4.1.2 Zero-Polo-Ganho Um modelo SISO pode ser caraterizado pelosseus zeros, polos e ganho. Por exemplo, a função de transferência F(s) = 5 (s+ 1) (s+ 2) (s+ 3) (s+ 4) é representada por um objeto ZPK por meio dos valores de seus zeros, polos e ganho: Exemplo 83 >> ze ro s=[�1 �2]; >> po lo s=[�3 �4]; >> ganho = [ 5 ] ; >> F=zpk ( zeros , polos , ganho ) F = 5 ( s+1) ( s+2) ������������� ( s+3) ( s+4) Continuous�time zero / po le / gain model . 4.1.3 Espaço de Estados Um modelo SISO ou MIMO pode ser caraterizado pelas Matrizes A, B, C e D da representação no espaço de estados. @x @t = Ax+Bu y = Cx+Du F L / L V P 65 4.1. SISTEMA DE CONTROLE CAPÍTULO 4. TRANSFORMADA DE LAPLACE em que A = " 0 1 �2 �3 # B = " 0 1 1 0 # C = " 1 1 0 3 # D = " 0 0 0 0 # é representada por um objeto SS pelas matrizes A, B, C, D: Exemplo 84 >> A = [ 0 1 ;�2 �3 ] ; >> B = [ 0 1 ; 1 0 ] ; >> C = [ 1 1 ; 0 3 ] ; >> D = [ 0 0 ; 0 0 ] ; >> s i s t = s s ( A,B,C,D ) s i s t = a = x1 x2 x1 0 1 x2 �2 �3 b = u1 u2 x1 0 1 x2 1 0 c = x1 x2 y1 1 1 y2 0 3 d = u1 u2 y1 0 0 y2 0 0 Continuous�time state�space model . F L / L V P 66 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE 4.1.4 Tempo Discreto Para criar modelos LTI de tempo discreto, simplesmente adicione um parâmetro referente ao tempo de amostragem T s (em segundos) aos objetos TF, ZPK, e SS: Exemplo 85 s i s t = t f ( num, den , Ts ) s i s t = zpk ( z , p , k , Ts ) s i s t = s s (A, B,C,D, Ts ) O comando a seguir cria um função de transferência de tempo discreto com um período de amos- tragem de 0,1 segundos: Exemplo 86 >> G = t f ( [ 1 �1] , [ 1 �0.5 ] , 0 . 1 ) G = z � 1 ������� z � 0 .5 Sample time : 0 . 1 seconds Disc re te�time t r a n s f e r func t i on . Uma maneira talvez mais visual de definir uma função de transferência de tempo discreto é definindo primeiro a função ?z? e o período de amostragem. Por exemplo, veja como isso seria feito para o caso da seguinte função de transferência para T s = 0, 1s G(z) = z � 1 z � 0, 5 . Exemplo 87 >> Ts = 0 . 1 ; >>Z = t f ( ’ z ’ , Ts ) ; >>G = (Z � 1)/(Z � 0 . 5 ) G = z � 1 ������� z � 0 .5 F L / L V P 67 4.1. SISTEMA DE CONTROLE CAPÍTULO 4. TRANSFORMADA DE LAPLACE Sample time : 0 . 1 seconds Disc re te�time t r a n s f e r func t i on . 4.1.5 Dados do Objeto LTI As funções TF, ZPK, e SS colocam todos os dados modelo numa estrutura LTI. Para se extrair os dados de um objeto LTI utilizam-se os seguintes comandos, onde T s é o período de amostragem. Estas funções fazem uma conversão de modelos automática [num, den, Ts] = tfdata(sist) [z, p, k, Ts] = zpkdata(sist) [A,B,C,D, Ts] = ssdata(sist) O exemplo a seguir ilustra o uso desses comandos. Note que como o sistema é de tempo contínuo, Ts retorna nulo indicando isso. Exemplo 88 >> ze ro s=[�1 �2]; >> po lo s=[�3 �4]; >> ganho = [ 5 ] ; >> F=zpk ( zeros , polos , ganho ) ; >> [A, B, C, D, Ts]= ssdata (F) A = �3.0000 �2.0000 0 �4.0000 B = 2.8284 2 .8284 C = �3.5355 �3.5355 D = 5 Ts = 0 4.1.6 Conversão de Modelos Para converter um objeto para um tipo específico de modelo LTI use as próprias funções TF, ZPK, e SS: F L / L V P 68 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.1. SISTEMA DE CONTROLE sist_novo = tf(sist) sist_novo = zpk(sist) sist_novo = ss(sist) O exemplo a seguir mostra como converter de espaço de estados para zero-polo-ganho e função de transferência. Exemplo 89 >> s i s t = s s ( �2, 1 , 1 , 3 ) ; >> zpk ( s i s t ) ans = 3 ( s +2.333) ����������� ( s+2) Continuous�time zero / po le / gain model . >> t f ( s i s t ) ans = 3 s + 7 ������� s + 2 Continuous�time t r a n s f e r func t i on . Para a conversão do tempo contínuo para o tempo discreto utilizam-se as funções específicas c2d e d2c, respectivamente. A sintaxe dos comandos é: sysd = c2d(sysc, Ts) %Ts = periodo de amostragem (s) sysc = d2c(sysd) Na conversão presume-se o uso de um segurador de ordem zero (ZOH). Para usar um método de conversão diferente, deve-se especificar o método num terceiro parâmetro de entrada: sysd = c2d ( sysc, Ts, ’zoh’ ) % Segurador de ordem zero sysd = c2d ( sysc, Ts, ’foh’ ) % Segurador de 1a ordem sysd = c2d ( sysc, Ts, ?impulse? ) % Invariância ao impulso sysd = c2d ( sysc, Ts, ’tustin’ ) % Aproximação de Tustin sysd = c2d ( sysc, Ts, ’matched’ ) % Equivalência polo-zero sysc = d2c ( sysd, ’zoh’ ) % Segurador de ordem zero F L / L V P 69 4.2. OPERAÇÕES COM BLOCOS CAPÍTULO 4. TRANSFORMADA DE LAPLACE sysc = d2c ( sysd, ’foh’ ) % Segurador de 1a ordem sysc = d2c ( sysd, ’tustin’ ) % Aproximação de Tustin sysc = d2c ( sysd, ’matched’ ) % Equivalência polo-zero 4.2 Operações com Blocos Os objetos de modelos permitem as diversas operações aritméticas. 4.2.1 Malha de Avanço >> s i s t = s i s t 1 + s i s t 2 4.2.2 Blocos em Cascata >> s i s t = s i s t 1 ⇤ s i s t 2 F L / L V P 70 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.2. OPERAÇÕES COM BLOCOS 4.2.3 Inversão de Blocos >> s i s t 2=inv ( s i s t 1 ) 4.2.4 Soma de Blocos >> s i s t = [H1 H2 ] 4.2.5 Derivação de Blocos >> s i s t = [H1 H2 ] F L / L V P 71 4.2. OPERAÇÕES COM BLOCOS CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.2.6 Malha de Realimentação Unitária A Função de Transferência de Malha Fechada (FTMF), pode ser obtida pelo comando >> sys=feedback ( sys1 , sys2 , 1 ) para realimentação unitária e positiva, utilizar (-1), >> sys=feedback ( sys1 ,�1) Exemplo 90 >> num_G=[1 5 ] ; >> den_G=poly ( [ 0 �3 �4]) ; >> G=t f (num_G,den_G) G = s + 5 ����������������� s^3 + 7 s^2 + 12 s Continuous�time t r a n s f e r func t i on . >> num_H=2; >> den_H=[1 2 0 ] ; >> H=t f (num_H,den_H) H = 2 ������ s + 20 Continuous�time t r a n s f e r func t i on . >> sys=feedback (G,H, 1 ) F L / L V P 72 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.3. RESPOSTA TEMPORAL sys = s^2 + 25 s + 100 ����������������������������������� s^4 + 27 s^3 + 152 s^2 + 238 s � 10 Continuous�time t r a n s f e r func t i on . 4.3 Resposta Temporal Existem várias funções que permitem investigar o comportamento temporal de sistemas LTI: impulse Resposta à função impulso unitário initial Resposta à condição inicial gensig Resposta ao gerador de sinal lsim Resposta a uma entrada arbitrária step Resposta ao degrau unitário As funções step, impulse e initial podem gerar automaticamente um horizonte temporal de simulação. A sintaxe associada a essas três funções é: s tep ( s i s t ) impulse ( s i s t ) i n i t i a l ( s i s t , x0 ) % x0 = vetor de cond içõe s i n i c i a i s Exemplo 91 >> s i s t =[ t f ( 1 , [ 1 1 1 ] ) , t f ( 1 , [ 1 1 ] ) ] >> step ( s i s t ) F L / L V P 73 4.3. RESPOSTA TEMPORAL CAPÍTULO 4. TRANSFORMADA DE LAPLACE >> step ( s i s t , 10 ) % simula de 0 até 10 segundos >> t = 0 : 0 . 1 : 10 % vetor temporal a cada 0 ,1 s >> step ( s i s t , t ) % simula em função do t e s p e c i f i c a d o >> t = 0 : 0 . 1 : 10 >> u = s in ( t ) % entrada p a r t i c u l a r >> ls im ( s i s t , u , t ) % simula para a entrada e s p e c i f i c a d a 4.3.1 Resposta em Frequência O quadro a seguir resume algumas das funções disponíveis para a análise em frequência de sistemas LTI: bode Diagrama de Bode margin Margens de Ganho e de Fase nyquist Diagrama de Nyquist nichols Carta de Nichols As funções podem gerar os valores das frequências para os quais a resposta será calculada. A escolha da faixa desses valores é feita em função dos polos e zeros da função. Para impor uma dada faixa particular de frequências num intervalo [wmin, wmax], use a seguinte sintaxe. bode ( s i s t , {wmin ,wmax}) % Atenção às ’ chaves ’ F L / L V P 74 CAPÍTULO 4. TRANSFORMADA DE LAPLACE 4.3. RESPOSTA TEMPORAL É possível também especificar um vetor particular de pontos com espaçamento logaritmo, por exemplo, desde 10�1 até 10+1 e com 100 pontos: >> w=logspace (�1 ,+1 ,100); >> bode ( s i s t ,w) 4.3.2 Resposta Numérica Para se obter os valores numéricas das respostas temporais e frequências deve-se usar as variáveis de retornos das funções. Veja alguns exemplos de sintaxes a seguir: [y,t] step(sist) [ganho, fase,
Compartilhar